Update code layout for main demo

This commit is contained in:
Roman Mogylatov 2020-10-09 15:13:21 -04:00
parent e189226ebf
commit e140f3f2c5
2 changed files with 46 additions and 46 deletions

View File

@ -77,40 +77,40 @@ Key features of the ``Dependency Injector``:
.. code-block:: python .. code-block:: python
from dependency_injector import containers, providers from dependency_injector import containers, providers
from dependency_injector.wiring import Provide from dependency_injector.wiring import Provide
class Container(containers.DeclarativeContainer): class Container(containers.DeclarativeContainer):
config = providers.Configuration() config = providers.Configuration()
api_client = providers.Singleton( api_client = providers.Singleton(
ApiClient, ApiClient,
api_key=config.api_key, api_key=config.api_key,
timeout=config.timeout.as_int(), timeout=config.timeout.as_int(),
) )
service = providers.Factory( service = providers.Factory(
Service, Service,
api_client=api_client, api_client=api_client,
) )
def main(service: Service = Provide[Container.service]): def main(service: Service = Provide[Container.service]):
... ...
if __name__ == '__main__': if __name__ == '__main__':
container = Container() container = Container()
container.config.api_key.from_env('API_KEY') container.config.api_key.from_env('API_KEY')
container.config.timeout.from_env('TIMEOUT') container.config.timeout.from_env('TIMEOUT')
container.wire(modules=[sys.modules[__name__]]) container.wire(modules=[sys.modules[__name__]])
main() # <-- dependency is injected automatically main() # <-- dependency is injected automatically
with container.api_client.override(mock.Mock()): with container.api_client.override(mock.Mock()):
main() # <-- overridden dependency is injected automatically main() # <-- overridden dependency is injected automatically
When you call ``main()`` function the ``Service`` dependency is assembled and injected automatically. When you call ``main()`` function the ``Service`` dependency is assembled and injected automatically.

View File

@ -85,40 +85,40 @@ Key features of the ``Dependency Injector``:
.. code-block:: python .. code-block:: python
from dependency_injector import containers, providers from dependency_injector import containers, providers
from dependency_injector.wiring import Provide from dependency_injector.wiring import Provide
class Container(containers.DeclarativeContainer): class Container(containers.DeclarativeContainer):
config = providers.Configuration() config = providers.Configuration()
api_client = providers.Singleton( api_client = providers.Singleton(
ApiClient, ApiClient,
api_key=config.api_key, api_key=config.api_key,
timeout=config.timeout.as_int(), timeout=config.timeout.as_int(),
) )
service = providers.Factory( service = providers.Factory(
Service, Service,
api_client=api_client, api_client=api_client,
) )
def main(service: Service = Provide[Container.service]): def main(service: Service = Provide[Container.service]):
... ...
if __name__ == '__main__': if __name__ == '__main__':
container = Container() container = Container()
container.config.api_key.from_env('API_KEY') container.config.api_key.from_env('API_KEY')
container.config.timeout.from_env('TIMEOUT') container.config.timeout.from_env('TIMEOUT')
container.wire(modules=[sys.modules[__name__]]) container.wire(modules=[sys.modules[__name__]])
main() # <-- dependency is injected automatically main() # <-- dependency is injected automatically
with container.api_client.override(mock.Mock()): with container.api_client.override(mock.Mock()):
main() # <-- overridden dependency is injected automatically main() # <-- overridden dependency is injected automatically
With the ``Dependency Injector`` objects assembling is consolidated in the container. With the ``Dependency Injector`` objects assembling is consolidated in the container.
Dependency injections are defined explicitly. Dependency injections are defined explicitly.