diff --git a/pkgs/development/python-modules/fastapi/default.nix b/pkgs/development/python-modules/fastapi/default.nix new file mode 100644 index 000000000000..89431d8b52f8 --- /dev/null +++ b/pkgs/development/python-modules/fastapi/default.nix @@ -0,0 +1,40 @@ +{ lib +, buildPythonPackage +, fetchPypi +, uvicorn +, starlette +, pydantic +, python +, isPy3k +, which +}: + +buildPythonPackage rec { + pname = "fastapi"; + version = "0.33.0"; + disabled = !isPy3k; + + src = fetchPypi { + inherit pname version; + sha256 = "1mc8ljfk6xyn2cq725s8hgapp62z5mylzw9akvkhwwz3bh8m5a7f"; + }; + + propagatedBuildInputs = [ + uvicorn + starlette + pydantic + ]; + + patches = [ ./setup.py.patch ]; + + checkPhase = '' + ${python.interpreter} -c "from fastapi import FastAPI; app = FastAPI()" + ''; + + meta = with lib; { + homepage = "https://github.com/tiangolo/fastapi"; + description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"; + license = licenses.mit; + maintainers = with maintainers; [ wd15 ]; + }; +} diff --git a/pkgs/development/python-modules/fastapi/setup.py.patch b/pkgs/development/python-modules/fastapi/setup.py.patch new file mode 100644 index 000000000000..43661343d744 --- /dev/null +++ b/pkgs/development/python-modules/fastapi/setup.py.patch @@ -0,0 +1,13 @@ +diff --git a/setup.py b/setup.py +index ccc3d2b..77ce446 100644 +--- a/setup.py ++++ b/setup.py +@@ -10,7 +10,7 @@ package_data = \ + {'': ['*']} + + install_requires = \ +-['starlette >=0.11.1,<=0.12.0', 'pydantic >=0.30,<=0.30.0'] ++['starlette >=0.11.1', 'pydantic >=0.30'] + + extras_require = \ + {'all': ['requests', diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 749d2882ff7a..39d91233d393 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6045,6 +6045,7 @@ in { pydantic = callPackage ../development/python-modules/pydantic { }; + fastapi = callPackage ../development/python-modules/fastapi { }; }); in fix' (extends overrides packages)