From b5ceea94022d01b8703f84f6e2fa93162a9dbd33 Mon Sep 17 00:00:00 2001 From: Roman Mogylatov Date: Mon, 15 Feb 2021 09:06:38 -0500 Subject: [PATCH] Add docs and example --- docs/providers/configuration.rst | 19 ++++++++++ .../configuration/configuration_alias.py | 36 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 examples/providers/configuration/configuration_alias.py diff --git a/docs/providers/configuration.rst b/docs/providers/configuration.rst index bbe90216..1e1a7576 100644 --- a/docs/providers/configuration.rst +++ b/docs/providers/configuration.rst @@ -306,6 +306,25 @@ configuration provider to strict mode. Modifier ``.required()`` should be specified before type modifier ``.as_*()``. +Aliases +------- + +You can use ``Configuration`` provider with a context manager to create aliases. + +.. literalinclude:: ../../examples/providers/configuration/configuration_alias.py + :language: python + :lines: 3- + :emphasize-lines: 14,22 + +.. note:: + + Library ``environs`` is a 3rd party library. You need to install it + separately:: + + pip install environs + + Documentation is available on GitHub: https://github.com/sloria/environs + Injecting invariants -------------------- diff --git a/examples/providers/configuration/configuration_alias.py b/examples/providers/configuration/configuration_alias.py new file mode 100644 index 00000000..4cc02b7e --- /dev/null +++ b/examples/providers/configuration/configuration_alias.py @@ -0,0 +1,36 @@ +"""`Configuration` provider alias example.""" + +from dependency_injector import containers, providers +from environs import Env + + +class Container(containers.DeclarativeContainer): + + config = providers.Configuration() + + +if __name__ == '__main__': + env = Env() + container = Container() + + with container.config.some_plugin_name as plugin: + plugin.some_interval_ms.override( + env.int( + 'SOME_INTERVAL_MS', + default=30000, + ), + ) + + with plugin.kafka as kafka: + kafka.bootstrap_servers.override( + env.list( + 'KAFKA_BOOTSTRAP_SERVERS', + default=['kafka1', 'kafka2'], + ), + ) + kafka.security_protocol.override( + env.str( + 'KAFKA_SECURITY_PROTOCOL', + default='SASL_SSL', + ), + )