diff --git a/pkgs/development/python-modules/dockerflow/default.nix b/pkgs/development/python-modules/dockerflow/default.nix new file mode 100644 index 000000000000..bad4dede4eb7 --- /dev/null +++ b/pkgs/development/python-modules/dockerflow/default.nix @@ -0,0 +1,104 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # build-system + setuptools, + setuptools-scm, + + # optional dependencies + asgiref, + blinker, + django, + fastapi, + flask, + sanic, + + # tests + django-redis, + pytest-django, + httpx, + fakeredis, + jsonschema, + pytestCheckHook, + pytest-cov-stub, + pytest-mock, + redis, + redisTestHook, +}: + +buildPythonPackage rec { + pname = "dockerflow"; + version = "2024.04.2"; + pyproject = true; + + src = fetchFromGitHub { + owner = "mozilla-services"; + repo = "python-dockerflow"; + tag = version; + hash = "sha256-5Ov605FyhX+n6vFks2sdtviGqkrgDIMXpcvgqR85jmQ="; + }; + + build-system = [ + setuptools + setuptools-scm + ]; + + optional-dependencies = { + django = [ django ]; + flask = [ + blinker + flask + ]; + sanic = [ sanic ]; + fastapi = [ + asgiref + fastapi + ]; + }; + + nativeCheckInputs = [ + fakeredis + jsonschema + pytestCheckHook + pytest-cov-stub + pytest-mock + redis + redisTestHook + + # django + django-redis + pytest-django + + # fastapi + httpx + ] ++ lib.flatten (lib.attrValues optional-dependencies); + + disabledTests = [ + # AssertionError: assert 'c7a05e2b-8a21-4255-a3ed-92cea1e74a62' is None + "test_mozlog_without_correlation_id_middleware" + ]; + + disabledTestPaths = [ + # missing flask-redis dependency + "tests/flask/test_flask.py" + # missing sanic-redis dependency + "tests/sanic/test_sanic.py" + ]; + + preCheck = '' + export DJANGO_SETTINGS_MODULE=tests.django.settings + ''; + + pythonImportsCheck = [ + "dockerflow" + ]; + + meta = { + changelog = "https://github.com/mozilla-services/python-dockerflow/releases/tag/${src.tag}"; + description = "A Python package to implement tools and helpers for Mozilla Dockerflow"; + homepage = "https://github.com/mozilla-services/python-dockerflow"; + license = lib.licenses.mpl20; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index ebcbb4eefda6..62fee6cce4f4 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4028,6 +4028,8 @@ self: super: with self; { dockerfile-parse = callPackage ../development/python-modules/dockerfile-parse { }; + dockerflow = callPackage ../development/python-modules/dockerflow { }; + dockerpty = callPackage ../development/python-modules/dockerpty { }; dockerspawner = callPackage ../development/python-modules/dockerspawner { };