modern-di 0.16.0__py3-none-any.whl → 0.16.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of modern-di might be problematic. Click here for more details.

@@ -1,6 +1,5 @@
1
1
  import abc
2
2
  import enum
3
- import itertools
4
3
  import typing
5
4
  import uuid
6
5
 
@@ -34,10 +33,20 @@ class AbstractProvider(typing.Generic[T_co], abc.ABC):
34
33
  def cast(self) -> T_co:
35
34
  return typing.cast(T_co, self)
36
35
 
37
- def _check_providers_scope(self, providers: typing.Iterable[typing.Any]) -> None:
38
- if any(x.scope > self.scope for x in providers if isinstance(x, AbstractProvider)):
39
- msg = "Scope of dependency cannot be more than scope of dependent"
40
- raise RuntimeError(msg)
36
+ def _check_providers_scope(
37
+ self, *, args: typing.Iterable[typing.Any] | None = None, kwargs: typing.Mapping[str, typing.Any] | None = None
38
+ ) -> None:
39
+ if args:
40
+ for provider in args:
41
+ if isinstance(provider, AbstractProvider) and provider.scope > self.scope:
42
+ msg = f"Scope of dependency is {provider.scope.name} and current scope is {self.scope.name}"
43
+ raise RuntimeError(msg)
44
+
45
+ if kwargs:
46
+ for name, provider in kwargs.items():
47
+ if isinstance(provider, AbstractProvider) and provider.scope > self.scope:
48
+ msg = f"Scope of {name} is {provider.scope.name} and current scope is {self.scope.name}"
49
+ raise RuntimeError(msg)
41
50
 
42
51
  def __getattr__(self, attr_name: str) -> typing.Any: # noqa: ANN401
43
52
  """Get an attribute from the resolve object.
@@ -75,7 +84,7 @@ class AbstractCreatorProvider(AbstractOverrideProvider[T_co], abc.ABC):
75
84
  **kwargs: P.kwargs,
76
85
  ) -> None:
77
86
  super().__init__(scope)
78
- self._check_providers_scope(itertools.chain(args, kwargs.values()))
87
+ self._check_providers_scope(args=args, kwargs=kwargs)
79
88
  self._creator: typing.Final = creator
80
89
  self._args: typing.Final = args
81
90
  self._kwargs: typing.Final = kwargs
@@ -13,7 +13,7 @@ class Dict(AbstractProvider[dict[str, T_co]]):
13
13
 
14
14
  def __init__(self, scope: enum.IntEnum, **providers: AbstractProvider[T_co]) -> None:
15
15
  super().__init__(scope)
16
- self._check_providers_scope(providers.values())
16
+ self._check_providers_scope(kwargs=providers)
17
17
  self._providers: typing.Final = providers
18
18
 
19
19
  async def async_resolve(self, container: Container) -> dict[str, T_co]:
@@ -13,7 +13,7 @@ class List(AbstractProvider[list[T_co]]):
13
13
 
14
14
  def __init__(self, scope: enum.IntEnum, *providers: AbstractProvider[T_co]) -> None:
15
15
  super().__init__(scope)
16
- self._check_providers_scope(providers)
16
+ self._check_providers_scope(args=providers)
17
17
  self._providers: typing.Final = providers
18
18
 
19
19
  async def async_resolve(self, container: Container) -> list[T_co]:
@@ -16,7 +16,7 @@ class Selector(AbstractProvider[T_co]):
16
16
  self, scope: enum.IntEnum, function: typing.Callable[..., str], **providers: AbstractProvider[T_co]
17
17
  ) -> None:
18
18
  super().__init__(scope)
19
- self._check_providers_scope(providers.values())
19
+ self._check_providers_scope(kwargs=providers)
20
20
  self._function: typing.Final = function
21
21
  self._providers: typing.Final = providers
22
22
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modern-di
3
- Version: 0.16.0
3
+ Version: 0.16.2
4
4
  Summary: Dependency Injection framework with IOC-container and scopes
5
5
  Project-URL: repository, https://github.com/modern-python/modern-di
6
6
  Project-URL: docs, https://modern-di.readthedocs.io
@@ -7,19 +7,19 @@ modern_di/scope.py,sha256=e6Olc-CF89clbYDNGciy-F8EqJt1Mw2703zfuJaEY94,113
7
7
  modern_di/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  modern_di/helpers/attr_getter_helpers.py,sha256=HUjExWLRAz2h0YX2_h5xKPX9-_K3i-BZTeZb3u-Wq5k,221
9
9
  modern_di/providers/__init__.py,sha256=u19TXXMG0Ex8YsAnLzsf2mz3K78zEFVLBT_SiD51Dyw,873
10
- modern_di/providers/abstract.py,sha256=TZryLsWRXsOu0aApmY13iHTNHTl1yU7jHs6sPCJrz5k,5417
10
+ modern_di/providers/abstract.py,sha256=cRMTL09RRFzgtfzDu7Ba1qkcJ8uQ00WJ1xtDBZbWYhU,5873
11
11
  modern_di/providers/async_factory.py,sha256=eW7Y517NwUg_lov6YccCaBNUNuOEVEfQbAXjDQ-DUOI,1075
12
12
  modern_di/providers/async_singleton.py,sha256=DIrix--RxrfDJfjP1OaTqk7-NNrG2MCQIt_wCaF2O3I,1649
13
13
  modern_di/providers/container_provider.py,sha256=r5IEQXgKtPwvHvbqkbPnmGyDGGCCjokTtdard9Rvt40,548
14
14
  modern_di/providers/context_adapter.py,sha256=_b1x3ToQPWT-9KkDioFhw1W8Q1VXZYUnczfYzMTobVA,760
15
- modern_di/providers/dict.py,sha256=nCU9iaqteYHDbILAfhrdnbMgS9_emE4MS7Xn2VoUlPo,858
15
+ modern_di/providers/dict.py,sha256=k_6BH51xyyE1dJmk-cJG3Qzssyf8M90zgD7dEtLF3LI,856
16
16
  modern_di/providers/factory.py,sha256=uQOZ7-_thFUsWE13JeBpJYkQa-e9tt__1tJF4u92WvY,1492
17
17
  modern_di/providers/injected_factory.py,sha256=KkDww-zUgm41LFt5j8crRzzFuBSkmKvOfptzHWMgVok,1848
18
- modern_di/providers/list.py,sha256=3hx34RfBRmqzh-cT5D6wSTDJPkBGMK_ul4n9gQz-o9M,769
18
+ modern_di/providers/list.py,sha256=Y9rcAWR50EvV8ns8HYAw2ZMJbSASjmMBkr_SZXb8uhc,774
19
19
  modern_di/providers/object.py,sha256=Sm0mb3Ua7cZ5Ay65fLvl7fnJDSQrQZwvzio3lkkXP2A,825
20
20
  modern_di/providers/resource.py,sha256=jEP6Ppr0gmdgWaQGF4sU2PIdt5xSzxcSDubC_IqxE1k,4559
21
- modern_di/providers/selector.py,sha256=RQbHD2-Liw-TGqu6UELbfCzXYuqxiO_Mg1tLyF3mKQo,1419
21
+ modern_di/providers/selector.py,sha256=8WCqdaIxb2SNp-hKs1F9pfW0v3PdFr2IfH9VGMxWejs,1417
22
22
  modern_di/providers/singleton.py,sha256=gfJvAQ7L0JBYlhrzKvaYYDiWo8MPbp0CCU8hGtuzs7U,2357
23
- modern_di-0.16.0.dist-info/METADATA,sha256=QyyOUsYG55pqOIq3IUZ0u58sorcZxoe41MaZDEMKOKE,3382
24
- modern_di-0.16.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
25
- modern_di-0.16.0.dist-info/RECORD,,
23
+ modern_di-0.16.2.dist-info/METADATA,sha256=pjeBhf9ylEBUnbv6FNt161UCxlMuOAKMogo-n7s34pU,3382
24
+ modern_di-0.16.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
25
+ modern_di-0.16.2.dist-info/RECORD,,