Releases: illuin-tech/opyoid
Releases · illuin-tech/opyoid
3.0.0
2.0.2
2.0.1
2.0.0
1.7.0
Features
- Add official support for Python 3.11
- Opyoid is now PEP561 compliant, and as such compatible with mypy
- Added a Context Scope that can be used to control more precisely the scope of created objects:
from opyoid import ContextScope, Injector, SelfBinding
class MyClass:
pass
injector = Injector(bindings=[SelfBinding(MyClass, scope=ContextScope)])
scope = injector.inject(ContextScope)
with scope:
instance_1 = injector.inject(MyClass)
instance_2 = injector.inject(MyClass)
with scope:
instance_3 = injector.inject(MyClass)
assert instance_1 is instance_2
assert instance_1 is not instance_3
1.6.0
Features
- Built-in types such as strings, ints, floats and booleans can be loaded from enviroment variables
- The environment variable name should be
<UPPER_CLASS_NAME_UPPER_PARAMTER_NAME>
- Use InjectorOptions.use_env_vars to enable/disable the feature (activated by default)
- Check the docs for more details
- The environment variable name should be
1.5.1
1.5.0
1.4.0
Features
- Module classes can now be installed (instances can still be installed), the contained bindings will be created only
once if the module class installed multiple times - Provider bindings can now bind any typed function as a provider, this is now the preferred way to create providers but
provider classes are still supported
Fixed
- Fixed missing bindings in log when adding item bindings to a previously existing multi binding
1.3.0
Features
- Instances created from a class in a MultiBinding with a Singleton scope can now be reused
- If you have a class A that requires List[B], a multibinding on B that binds subclasses B1 and B2,
and another class C that requires B1, the same instance of B1 will be shared between A and the list in C
- If you have a class A that requires List[B], a multibinding on B that binds subclasses B1 and B2,