-
- Notifications
You must be signed in to change notification settings - Fork 338
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).