diff --git a/pkgs/development/python-modules/sanic-ext/default.nix b/pkgs/development/python-modules/sanic-ext/default.nix new file mode 100644 index 000000000000..581b44962816 --- /dev/null +++ b/pkgs/development/python-modules/sanic-ext/default.nix @@ -0,0 +1,75 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # Build system + setuptools, + + # Dependencies + pyyaml, + + # Test dependencies + pytestCheckHook, + + sanic-testing, + attrs, + coverage, + msgspec, + pydantic, + pytest, + pytest-cov, + pytest-asyncio, + tox, + jinja2, +}: + +buildPythonPackage rec { + pname = "sanic-ext"; + version = "24.12.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "sanic-org"; + repo = "sanic-ext"; + tag = "v${version}"; + hash = "sha256-H1tqiPQ4SwlNGj7GtB2h7noZpU+gbGXIbmRK1TSSqVA="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + pyyaml + ]; + + nativeCheckInputs = [ + pytestCheckHook + + sanic-testing + attrs + coverage + msgspec + pydantic + pytest + pytest-cov + pytest-asyncio + tox + jinja2 + ]; + + disabledTests = [ + "test_models[FooPydanticDataclass]" # KeyError: 'paths' + "test_pydantic_base_model[AlertResponsePydanticBaseModel-True]" # AssertionError: assert 'AlertPydanticBaseModel' in {'AlertResponsePydanticBaseModel': ... } + "test_pydantic_base_model[AlertResponsePydanticDataclass-True]" # AssertionError: assert 'AlertPydanticDataclass' in {'AlertResponsePydanticDataclass': ... } + ]; + + pythonImportsCheck = [ "sanic_ext" ]; + + meta = { + description = "Common, officially supported extension plugins for the Sanic web server framework"; + homepage = "https://github.com/sanic-org/sanic-ext/"; + changelog = "https://github.com/sanic-org/sanic-ext/releases/tag/${src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ p0lyw0lf ]; + }; +} diff --git a/pkgs/development/python-modules/sanic/default.nix b/pkgs/development/python-modules/sanic/default.nix index 01b697d154be..e83b467fa52a 100644 --- a/pkgs/development/python-modules/sanic/default.nix +++ b/pkgs/development/python-modules/sanic/default.nix @@ -13,6 +13,7 @@ pytest-asyncio, pytestCheckHook, pythonOlder, + sanic-ext, sanic-routing, sanic-testing, setuptools, @@ -54,9 +55,7 @@ buildPythonPackage rec { ]; optional-dependencies = { - ext = [ - # TODO: sanic-ext - ]; + ext = [ sanic-ext ]; http3 = [ aioquic ]; }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1d8fcb86fbea..db966ff2b84e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -15664,6 +15664,8 @@ self: super: with self; { sanic-auth = callPackage ../development/python-modules/sanic-auth { }; + sanic-ext = callPackage ../development/python-modules/sanic-ext { }; + sanic-routing = callPackage ../development/python-modules/sanic-routing { }; sanic-testing = callPackage ../development/python-modules/sanic-testing { };