nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 aiohttp,
4 buildPythonPackage,
5 fastapi,
6 fetchFromGitHub,
7 flask,
8 httpx,
9 mypy-boto3-s3,
10 numpy,
11 pydantic,
12 pytest-asyncio,
13 pytestCheckHook,
14 pyyaml,
15 scipy,
16 setuptools,
17}:
18
19buildPythonPackage rec {
20 pname = "dependency-injector";
21 version = "4.48.3";
22 pyproject = true;
23
24 src = fetchFromGitHub {
25 owner = "ets-labs";
26 repo = "python-dependency-injector";
27 tag = version;
28 hash = "sha256-J4M4SM256vZa2JUhagcbKu+DAUk1Op9HN+WpLL6ScBc=";
29 };
30
31 build-system = [ setuptools ];
32
33 optional-dependencies = {
34 aiohttp = [ aiohttp ];
35 pydantic = [ pydantic ];
36 flask = [ flask ];
37 yaml = [ pyyaml ];
38 };
39
40 nativeCheckInputs = [
41 fastapi
42 httpx
43 mypy-boto3-s3
44 numpy
45 pytest-asyncio
46 pytestCheckHook
47 scipy
48 ]
49 ++ lib.concatAttrValues optional-dependencies;
50
51 pythonImportsCheck = [ "dependency_injector" ];
52
53 disabledTestPaths = [
54 # Exclude tests for EOL Python releases
55 "tests/unit/ext/test_aiohttp_py35.py"
56 "tests/unit/wiring/test_*_py36.py"
57 "tests/unit/providers/configuration/test_from_pydantic_py36.py"
58 "tests/unit/providers/configuration/test_pydantic_settings_in_init_py36.py"
59 ];
60
61 meta = {
62 description = "Dependency injection microframework for Python";
63 homepage = "https://github.com/ets-labs/python-dependency-injector";
64 changelog = "https://github.com/ets-labs/python-dependency-injector/blob/${src.tag}/docs/main/changelog.rst";
65 license = lib.licenses.bsd3;
66 maintainers = with lib.maintainers; [ gerschtli ];
67 # https://github.com/ets-labs/python-dependency-injector/issues/726
68 broken = lib.versionAtLeast pydantic.version "2";
69 };
70}