diff --git a/docs/providers/selector.rst b/docs/providers/selector.rst index 6326e051..db3a8be3 100644 --- a/docs/providers/selector.rst +++ b/docs/providers/selector.rst @@ -17,7 +17,7 @@ Selector provider .. literalinclude:: ../../examples/providers/selector.py :language: python :lines: 3- - :emphasize-lines: 14-18 + :emphasize-lines: 16-20 The first argument of the ``Selector`` provider is called ``selector``. It can be an option of a ``Configuration`` provider or any other callable. The ``selector`` callable has to return a diff --git a/examples/providers/selector.py b/examples/providers/selector.py index 7c7c17cd..88166ec4 100644 --- a/examples/providers/selector.py +++ b/examples/providers/selector.py @@ -1,6 +1,6 @@ """`Selector` provider example.""" -from dependency_injector import providers +from dependency_injector import containers, providers class SomeClass: @@ -11,19 +11,24 @@ class SomeOtherClass: ... -config = providers.Configuration() +class Container(containers.DeclarativeContainer): + + config = providers.Configuration() + + selector = providers.Selector( + config.one_or_another, + one=providers.Factory(SomeClass), + another=providers.Factory(SomeOtherClass), + ) -selector = providers.Selector( - config.one_or_another, - one=providers.Factory(SomeClass), - another=providers.Factory(SomeOtherClass), -) if __name__ == '__main__': - config.override({'one_or_another': 'one'}) - instance_1 = selector() + container = Container() + + container.config.override({'one_or_another': 'one'}) + instance_1 = container.selector() assert isinstance(instance_1, SomeClass) - config.override({'one_or_another': 'another'}) - instance_2 = selector() + container.config.override({'one_or_another': 'another'}) + instance_2 = container.selector() assert isinstance(instance_2, SomeOtherClass)