diff --git a/pkgs/development/python-modules/functions-framework/default.nix b/pkgs/development/python-modules/functions-framework/default.nix index c519ba0a70fb..cd0e2177eba6 100644 --- a/pkgs/development/python-modules/functions-framework/default.nix +++ b/pkgs/development/python-modules/functions-framework/default.nix @@ -8,25 +8,29 @@ fetchFromGitHub, flask, gunicorn, + httpx, pretend, pytest-asyncio, pytestCheckHook, requests, setuptools, + starlette, + uvicorn, + uvicorn-worker, watchdog, werkzeug, }: buildPythonPackage rec { pname = "functions-framework"; - version = "3.8.3"; + version = "3.9.2"; pyproject = true; src = fetchFromGitHub { owner = "GoogleCloudPlatform"; repo = "functions-framework-python"; rev = "v${version}"; - hash = "sha256-kfoSGe08vCOXunzFH5FA7/NesOwAklfChKeoIfBXBlQ="; + hash = "sha256-TvC+URJtsquBX/5F5Z2Nw/4sD3hsvF2c/jlv87lGjfM="; }; build-system = [ setuptools ]; @@ -37,25 +41,29 @@ buildPythonPackage rec { deprecation flask gunicorn + starlette + uvicorn + uvicorn-worker watchdog werkzeug ]; nativeCheckInputs = [ docker + httpx pretend pytest-asyncio pytestCheckHook requests ]; + pythonImportsCheck = [ "functions_framework" ]; + disabledTests = [ # Test requires a running Docker instance "test_cloud_run_http" ]; - pythonImportsCheck = [ "functions_framework" ]; - meta = { description = "FaaS (Function as a service) framework for writing portable Python functions"; homepage = "https://github.com/GoogleCloudPlatform/functions-framework-python"; diff --git a/pkgs/development/python-modules/uvicorn-worker/default.nix b/pkgs/development/python-modules/uvicorn-worker/default.nix new file mode 100644 index 000000000000..320dee57a853 --- /dev/null +++ b/pkgs/development/python-modules/uvicorn-worker/default.nix @@ -0,0 +1,52 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + gunicorn, + hatchling, + httpx, + pytestCheckHook, + trustme, + uvicorn, +}: + +buildPythonPackage rec { + pname = "uvicorn-worker"; + version = "0.3.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "Kludex"; + repo = "uvicorn-worker"; + tag = version; + hash = "sha256-a5L4H1Bym5Dx9/pGL/Vz6ZO699t/1Wmc1ExIb0t/ISc="; + }; + + build-system = [ hatchling ]; + + dependencies = [ + gunicorn + uvicorn + ]; + + nativeCheckInputs = [ + gunicorn + httpx + pytestCheckHook + trustme + ]; + + preCheck = '' + export PATH="$PATH:$out/bin"; + ''; + + pythonImportsCheck = [ "uvicorn_worker" ]; + + meta = { + description = "Uvicorn worker for Gunicorn"; + homepage = "https://github.com/Kludex/uvicorn-worker"; + changelog = "https://github.com/Kludex/uvicorn-worker/releases/tag/${src.tag}"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ fab ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 586d331f3d2e..323b48f55023 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -19266,6 +19266,8 @@ self: super: with self; { uvicorn = callPackage ../development/python-modules/uvicorn { }; + uvicorn-worker = callPackage ../development/python-modules/uvicorn-worker { }; + uvloop = callPackage ../development/python-modules/uvloop { }; uwsgi-chunked = callPackage ../development/python-modules/uwsgi-chunked { };