Dependency Injector 3.19 has been released - New Selector provider

https://avatars0.githubusercontent.com/u/11329744?s=400&v=4

I have released Dependency Injector 3.19.

This release adds Selector provider. Release also fixes minor bug in Configuration provider.

Release is available for downloads on PyPI.



Selector provider

Selector provider selects provider based on the configuration value or other callable.

The idea of Selector provider was brought up at the issue #239. It was brought up by Markus Leuthold (githubkusi). Thanks to Markus for his contribution.

from dependency_injector import providers


class SomeClass:
    ...


class SomeOtherClass:
    ...


config = providers.Configuration()

selector = providers.Selector(
    config.one_or_another,
    one=providers.Factory(SomeClass),
    another=providers.Factory(SomeOtherClass),
)

config.override({'one_or_another': 'one'})
instance_1 = selector()
assert isinstance(instance_1, SomeClass)

config.override({'one_or_another': 'another'})
instance_2 = selector()
assert isinstance(instance_2, SomeOtherClass)

More

Enjoy Python and Dependency Injector.