Skip to content

Context manager for the providers.Configuration #394

@gtors

Description

@gtors

My proposal is to add the __enter__ and __exit__ methods to the providers.Configuration class to reduce code duplication and improve the visualization of configuration blocks.

Example of such case:

from dependency_injector import providers
from environs import Env

env = Env()
config = providers.Configuration()

config.some_plugin_name.some_interval_ms.override(
    env.int(
        "SOME_INTERVAL_MS",
        default=30000
    )
)
config.some_plugin_name.kafka.bootstrap_servers.override(
    env.list(
        "KAFKA_BOOTSTRAP_SERVERS"
    )
)
config.some_plugin_name.kafka.security_protocol.override(
    env.str(
        "KAFKA_SECURITY_PROTOCOL", 
        default="SASL_SSL"
    )
)
# ...
from dependency_injector import providers
from environs import Env

env = Env()
config = providers.Configuration()

with 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"
            )
        )
        kafka.security_protocol.override(
            env.str(
                "KAFKA_SECURITY_PROTOCOL", 
                default="SASL_SSL"
            )
        )
    # ...

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions