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 pythonOlder,
15 pyyaml,
16 scipy,
17 six,
18}:
19
20buildPythonPackage rec {
21 pname = "dependency-injector";
22 version = "4.41.0";
23 format = "setuptools";
24
25 disabled = pythonOlder "3.7";
26
27 src = fetchFromGitHub {
28 owner = "ets-labs";
29 repo = "python-dependency-injector";
30 rev = version;
31 hash = "sha256-U3U/L8UuYrfpm4KwVNmViTbam7QdZd2vp1p+ENtOJlw=";
32 };
33
34 propagatedBuildInputs = [ six ];
35
36 passthru.optional-dependencies = {
37 aiohttp = [ aiohttp ];
38 pydantic = [ pydantic ];
39 flask = [ flask ];
40 yaml = [ pyyaml ];
41 };
42
43 nativeCheckInputs =
44 [
45 fastapi
46 httpx
47 mypy-boto3-s3
48 numpy
49 pytest-asyncio
50 pytestCheckHook
51 scipy
52 ]
53 ++ passthru.optional-dependencies.aiohttp
54 ++ passthru.optional-dependencies.pydantic
55 ++ passthru.optional-dependencies.yaml
56 ++ passthru.optional-dependencies.flask;
57
58 pythonImportsCheck = [ "dependency_injector" ];
59
60 disabledTestPaths = [
61 # Exclude tests for EOL Python releases
62 "tests/unit/ext/test_aiohttp_py35.py"
63 "tests/unit/wiring/test_*_py36.py"
64 ];
65
66 meta = with lib; {
67 description = "Dependency injection microframework for Python";
68 homepage = "https://github.com/ets-labs/python-dependency-injector";
69 changelog = "https://github.com/ets-labs/python-dependency-injector/blob/${version}/docs/main/changelog.rst";
70 license = licenses.bsd3;
71 maintainers = with maintainers; [ gerschtli ];
72 # https://github.com/ets-labs/python-dependency-injector/issues/726
73 broken = versionAtLeast pydantic.version "2";
74 };
75}