-
-
Notifications
You must be signed in to change notification settings - Fork 337
Closed
Labels
Description
I have a derived chain of containers (say, C1 -> C2 -> C3
). I want to instantiate C3
with a dependency for C1
, which is then used (directly and indirectly) in the derived containers.
In fact, I have found a way to do it, but it is ugly:
class C1(containers.DeclarativeContainer):
a1 = providers.Dependency(instance_of=str)
class C2(C1):
a1_ = C1.a1
a1 = providers.Dependency(instance_of=str)
a1_.override(a1)
a2 = providers.Callable(C1.a1)
class C3(C2):
a3 = providers.Callable(C2.a1)
c3 = C3(a1="foo")
print("c3", c3.a3()) # prints "foo"
I can't seem to get it to work without the intermediate redefinition of a1 ... is this a bug? E.g. if I don't have that and try to instantiate C3(a1="foo")
I get an error:
AttributeError: 'DynamicContainer' object has no attribute 'a1'
(I tried fiddling with @containers.copy()
as well, unsuccessfully).