Releases: Neoteroi/rodi
Releases · Neoteroi/rodi
v2.0.8
- Add the link to the documentation.
- Remove the
UnsupportedUnionTypeExceptionasRodisupports union types,
they only require proper handling.
v2.0.7
- Add the possibility to specify the
ActivationScopeclass when instantiating
theContaineror theServicesobject. This class will be used when
creating scopes. For the issue #55. - Add an experimental class,
TrackingActivationScopeto support nested
scopes transparently, usingcontextvars.ContextVar. For more context, see
the teststest_nested_scope_1,test_nested_scope_2,
test_nested_scope_async_1. For the issue #55. - Raise a
TypeErrorif trying to obtain a service from a disposed scope. - Remove Python 3.8 from the build matrix, add Python 3.13.
- Handle setuptools warning: SetuptoolsDeprecationWarning: License classifiers are deprecated.
v2.0.6
- Fixes import for Protocols support regardless of Python version (partially
broken for Python 3.9), by @fennel-akunesh
v2.0.5
- Adds support for resolving
Protocolclasses even when they don't define an
__init__method, by @lucas-labs - Fixes bug in service provider build logic causing singletons to be instantiated
n times when they are registered after its dependant, by @lucas-labs - Changes the "ignore attributes" logic so that if a class variable has already
been initialized externally, rodi doesn't attempt to reinitialize it (and to
also prevent overriding it if the initialized class variable is also a
registered object), by @lucas-labs
v2.0.4
- Fix bug in Singleton implementation: stop singleton provider from recreating
objects implementing__len__, by @Klavionik - Add Python 3.12 and remove Python 3.7 from the build matrix.
v2.0.3
v2.0.2
- Ignores
ClassVarproperties when resolving dependencies by class annotations. - Marks
rodi2 stable.
v2.0.1
- Removes the strict requirement for resolved classes to have
__init__
methods defined, to add support forProtocols that do not define an
__init__method (thus using*args,**kwargs,
akhundMurad's contribution. - Corrects a code smell, replacing an
icounter withenumerate,
GLEF1X's contribution.
v2.0.0
- Introduces a
ContainerProtocolto improve interoperability between
libraries and alternative implementations of DI containers. The protocol is
inspired by punq, since its code API
is the most user-friendly and intelligible of those that were reviewed.
TheContainerProtocolcan be used through composition
to replacerodiwith alternative implementations of dependency injection in
those libraries that useDI. - Simplifies the code API of the library to support using the
Containerclass
toregisterandresolveservices. The classServicesis still used and
available, but it's no more necessary to use it directly. - Replaces
setup.pywithpyproject.toml. - Renames context classes: "GetServiceContext" to "ActivationScope",
"ResolveContext" to "ResolutionContext". - The "add_exact*" methods have been made private, to simplify the public API.
- Improves type annotations; MaximZayats' contribution.
- Adds typehints to GetServiceContext init params; guscardvs' contribution.
- Adds examples in a dedicated folder. Examples are tested.
v0.0.2-alpha.1
Test release for the new package (v2) using the new name neoteroi-di and the new namespace.
Please refer to the CHANGELOG for more information.