python-injection 0.11.0__py3-none-any.whl → 0.12.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,4 @@
1
- from collections.abc import Callable
1
+ from collections.abc import Awaitable
2
2
  from types import GenericAlias
3
3
  from typing import Any, TypeAliasType
4
4
 
@@ -28,18 +28,29 @@ def Inject[T]( # noqa: N802
28
28
 
29
29
 
30
30
  class InjectionDependency[T]:
31
- __slots__ = ("__call__", "__class", "__module")
31
+ __slots__ = ("__class", "__lazy_instance", "__module")
32
32
 
33
- __call__: Callable[[], T]
34
33
  __class: type[T] | TypeAliasType | GenericAlias
34
+ __lazy_instance: Awaitable[T]
35
35
  __module: Module
36
36
 
37
- def __init__(self, cls: type[T] | TypeAliasType | GenericAlias, module: Module):
38
- lazy_instance = module.get_lazy_instance(cls, default=NotImplemented)
39
- self.__call__ = lambda: self.__ensure(~lazy_instance)
37
+ def __init__(
38
+ self,
39
+ cls: type[T] | TypeAliasType | GenericAlias,
40
+ module: Module,
41
+ ) -> None:
40
42
  self.__class = cls
43
+ self.__lazy_instance = module.aget_lazy_instance(cls, default=NotImplemented)
41
44
  self.__module = module
42
45
 
46
+ async def __call__(self) -> T:
47
+ instance = await self.__lazy_instance
48
+
49
+ if instance is NotImplemented:
50
+ raise InjectionError(f"`{self.__class}` is an unknown dependency.")
51
+
52
+ return instance
53
+
43
54
  def __eq__(self, other: Any) -> bool:
44
55
  if isinstance(other, type(self)):
45
56
  return self.__key == other.__key
@@ -52,9 +63,3 @@ class InjectionDependency[T]:
52
63
  @property
53
64
  def __key(self) -> tuple[type[T] | TypeAliasType | GenericAlias, Module]:
54
65
  return self.__class, self.__module
55
-
56
- def __ensure(self, instance: T) -> T:
57
- if instance is NotImplemented:
58
- raise InjectionError(f"`{self.__class}` is an unknown dependency.")
59
-
60
- return instance
@@ -8,7 +8,7 @@ test_constant = _.constant
8
8
  test_injectable = _.injectable
9
9
  test_singleton = _.singleton
10
10
 
11
- def load_test_profile(*other_profile_names: str) -> ContextManager[None]:
11
+ def load_test_profile(*names: str) -> ContextManager[None]:
12
12
  """
13
13
  Context manager or decorator for temporary use test module.
14
14
  """
@@ -1,26 +1,23 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: python-injection
3
- Version: 0.11.0
3
+ Version: 0.12.1
4
4
  Summary: Fast and easy dependency injection framework.
5
5
  Home-page: https://github.com/100nm/python-injection
6
6
  License: MIT
7
7
  Keywords: dependencies,dependency,inject,injection
8
8
  Author: remimd
9
- Requires-Python: >=3.12,<4
9
+ Requires-Python: >=3.12, <4
10
10
  Classifier: Development Status :: 4 - Beta
11
- Classifier: Intended Audience :: Developers
12
- Classifier: License :: OSI Approved :: MIT License
13
- Classifier: Natural Language :: English
14
- Classifier: Operating System :: OS Independent
15
- Classifier: Programming Language :: Python
16
- Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3.12
18
- Classifier: Programming Language :: Python :: 3.13
19
- Classifier: Programming Language :: Python :: 3 :: Only
20
11
  Classifier: Topic :: Software Development :: Libraries
21
12
  Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
22
13
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
14
  Classifier: Topic :: Software Development :: Testing
15
+ Classifier: Programming Language :: Python
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Intended Audience :: Developers
20
+ Classifier: Natural Language :: English
24
21
  Classifier: Typing :: Typed
25
22
  Project-URL: Repository, https://github.com/100nm/python-injection
26
23
  Description-Content-Type: text/markdown
@@ -0,0 +1,24 @@
1
+ injection/__init__.py,sha256=1MI9kXuQfsqLGQK_5-Zm4JjecqopjGNlhsAW8iihn9M,919
2
+ injection/__init__.pyi,sha256=Gwtvo6sJVizqz0pTKNaG-Jz_NW0gSqEsoZF7T6p3V1s,8820
3
+ injection/_core/__init__.py,sha256=XERocCxCZBxPGIaOR37yeiQOZyvjHQ6a4rgRmlkUSuU,1367
4
+ injection/_core/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ injection/_core/common/asynchronous.py,sha256=KIgFaCxohmVvVThkMWqo8XrevZXHyLLZODLi76Jmx08,1544
6
+ injection/_core/common/event.py,sha256=kev8WUESAXzMn11EJsbTcICaCvYiD556E6BOLvQ54s4,1243
7
+ injection/_core/common/invertible.py,sha256=YZlAdh6bNJgf1-74TRjwJTm8xrlgY95ZhOUGLSJ4XcY,482
8
+ injection/_core/common/lazy.py,sha256=ZKx2O9CCFsF9F0SLM4zb7jSLksJUv-FBLCPlWltMN5k,1398
9
+ injection/_core/common/threading.py,sha256=OXm7L3p8c7O7eSkU-RTR7cobqIGMhuo-7gpDXsWKDNQ,214
10
+ injection/_core/common/type.py,sha256=c4QfvbkMfYMlNxqt-vq6QJ83ubMnw6AIVI2Rp-tV1PI,1550
11
+ injection/_core/descriptors.py,sha256=y1rFTQdCDIMLVQfuQE8ZkTPlVZKgzvwZ2Y20Si05DwM,662
12
+ injection/_core/hook.py,sha256=Qv505pr3kjOE6UitftlLh9JKX9OCNqZBRtHbFha1gqM,3130
13
+ injection/_core/injectables.py,sha256=rBcrTYRpZ69LkHSGm6bve6TGPwf66XkuK2XVACwcRNc,2427
14
+ injection/_core/module.py,sha256=xUgveXJS5PXd3DtfLBH7InafEtSShGND4ccYkCIfGqk,28611
15
+ injection/exceptions.py,sha256=-5Shs7R5rctQXhpMLfcjiMBCzrtFWxC88qETUIHz57s,692
16
+ injection/integrations/__init__.py,sha256=NYLcstr4ESdLj326LlDub143z6JGM1z1pCOVWhBXK10,304
17
+ injection/integrations/fastapi.py,sha256=OZyZNxqJvOr-c5Ee0G1-oHhGF7067Ugjl_qDnIiAC1I,1760
18
+ injection/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
+ injection/testing/__init__.py,sha256=Wd9sq43CJCV7GjYFSIaikIf4hJ5lfVNS7GP3iI8a1X8,719
20
+ injection/testing/__init__.pyi,sha256=Dyf1LjSj3LrjghXjM2xkMiINg-OPWQMtjCEnnfWzaDY,372
21
+ injection/utils.py,sha256=79VoIgxO1MNb_FlfRRbzfx3RXX3DPDtoxMgngfmNF-Q,1920
22
+ python_injection-0.12.1.dist-info/METADATA,sha256=2TdNJGHf1TIvBrbRkVjfimNJR7frm4HDoKDnAYiop98,2958
23
+ python_injection-0.12.1.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
24
+ python_injection-0.12.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.1
2
+ Generator: poetry-core 2.0.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,34 +0,0 @@
1
- from typing import Any, override
2
-
3
- from injection import Module, mod
4
- from injection.integrations import _is_installed
5
-
6
- __all__ = ("InjectionServices",)
7
-
8
- if _is_installed("blacksheep", __name__):
9
- from rodi import ContainerProtocol
10
-
11
-
12
- class InjectionServices(ContainerProtocol):
13
- """
14
- BlackSheep dependency injection container implemented with `python-injection`.
15
- """
16
-
17
- __slots__ = ("__module",)
18
-
19
- __module: Module
20
-
21
- def __init__(self, module: Module | None = None) -> None:
22
- self.__module = module or mod()
23
-
24
- @override
25
- def __contains__(self, item: Any) -> bool:
26
- return item in self.__module
27
-
28
- @override
29
- def register(self, obj_type: type | Any, *args: Any, **kwargs: Any) -> None:
30
- self.__module.injectable(obj_type)
31
-
32
- @override
33
- def resolve[T](self, obj_type: type[T] | Any, *args: Any, **kwargs: Any) -> T:
34
- return self.__module.find_instance(obj_type)
@@ -1,23 +0,0 @@
1
- injection/__init__.py,sha256=4JWr0tMlFJb6Tz2Qsd7AupLiMh13XzleBtViJlWgdZA,833
2
- injection/__init__.pyi,sha256=Tj6p9OonN4YEXvjswPSFOCSf6Eq3MidhBHR8ewuFc2w,7927
3
- injection/_core/__init__.py,sha256=VMGLfdu0gYh82mt7zS297rQ7CE_gHVy0gRdI8RY_ZLY,1361
4
- injection/_core/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- injection/_core/common/event.py,sha256=kev8WUESAXzMn11EJsbTcICaCvYiD556E6BOLvQ54s4,1243
6
- injection/_core/common/invertible.py,sha256=QYXMqLrkAkz_7mq-jEYKtBr1CQ5aqzplP0FG9fS0g2Y,502
7
- injection/_core/common/lazy.py,sha256=kCO1q4S6AdBhsP5RrihBJpgfeR4hxvMqSz1cpCgBdjo,1482
8
- injection/_core/common/threading.py,sha256=OXm7L3p8c7O7eSkU-RTR7cobqIGMhuo-7gpDXsWKDNQ,214
9
- injection/_core/common/type.py,sha256=TQTD-f_rnAHS0VgfkWxNFU8HAWPvkAktNDQ9_23JLHM,1705
10
- injection/_core/descriptors.py,sha256=1DxrJpUXK2exSLAmdMHLNRRn7EBhQyu_vVvrchif2sw,696
11
- injection/_core/hook.py,sha256=_TcwhF_DONfcoBz58RxVLeA950Rs8wtZSLGepZwGBRk,3009
12
- injection/_core/module.py,sha256=zvYqUIAV9saTYGBuKbR4tNk2AFrMxyFxNPmvMMmKoe4,25300
13
- injection/exceptions.py,sha256=-5Shs7R5rctQXhpMLfcjiMBCzrtFWxC88qETUIHz57s,692
14
- injection/integrations/__init__.py,sha256=NYLcstr4ESdLj326LlDub143z6JGM1z1pCOVWhBXK10,304
15
- injection/integrations/blacksheep.py,sha256=yO5gLb_l4W3bNPFt-v2qWIL9R8PNon4JmOxQEHdi-5o,923
16
- injection/integrations/fastapi.py,sha256=j5ASbMszua-Ti9A_dgFO629RjSIzIVbck78Ymz6CiTo,1723
17
- injection/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- injection/testing/__init__.py,sha256=Wd9sq43CJCV7GjYFSIaikIf4hJ5lfVNS7GP3iI8a1X8,719
19
- injection/testing/__init__.pyi,sha256=6ZXbbS-9ppMdkxd03I6yBNurmR3Xw7sM_qiokibkLeY,386
20
- injection/utils.py,sha256=79VoIgxO1MNb_FlfRRbzfx3RXX3DPDtoxMgngfmNF-Q,1920
21
- python_injection-0.11.0.dist-info/METADATA,sha256=whi_71OOame5OSWStDfKMvHxCXQjmKhgCybFhe2WA7s,3110
22
- python_injection-0.11.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
23
- python_injection-0.11.0.dist-info/RECORD,,