API Reference¶
Table of Contents
Constants¶
injectme.__version__¶
Current injectme’s version.
>>> import injectme
>>> injectme.__version__
'0.0.5'
Functions¶
Note
These functions compose “simplified API”. They are wrappers
over methods of single injectme.Injector
instance.
injectme.inject¶
- injectme.inject(cls: type) None ¶
Mark class as a target for the injection.
- Parameters
cls – Target for injection.
- Raises
injectme.InjectionNotSupported – If the cls argument is not an instance of
type
.
It can be used either as a function or as a decorator. All of the class annotations will be inspected and provided during object instantiation.
Classes marked for injection will have their dependencies set just before calling their
__init__
.Dependencies used during injection phase should be registered with either
injectme.register()
orinjectme.register_factory()
before instantiating any class which needs them.>>> from injectme import inject, register >>> class UsersRepository: ... def get_user(self): ... return ("john", "doe") ... >>> @inject ... class UsersService: ... users_repo: UsersRepository ... ... def run(self): ... print(self.users_repo.get_user()) ... >>> register(UsersRepository, UsersRepository()) >>> UsersService().run() ('john', 'doe')
If you fail to register all of the dependencies of a class you are trying to instantiate the
injectme.InjectionFailure
will be raised.>>> from injectme import inject >>> class Dependency: ... ... ... >>> @inject ... class SomeClass: ... dep: Dependency ... >>> SomeClass() Traceback (most recent call last): ... injectme.errors.InjectionFailure: ...
Note
This function is a wrapper for
injectme.Injector.__call__()
.
injectme.register¶
- injectme.register(dependency: type, instance: Any) None ¶
Register dependency instance to be used during injection phase.
- Parameters
dependency – class of dependency to be registered
instance – instance of dependency to be registered
- Raises
injectme.DependencyAlreadyRegistered – If the dependency has already been registered.
Note
This function is a wrapper for
injectme.DependenciesRegistry.register_instance()
.
injectme.register_factory¶
- injectme.register_factory(dependency: type, factory: Callable[[], Any]) None ¶
Register dependency factory to be used during injection phase.
- Parameters
dependency – class of dependency to be registered
factory – factory of dependency to be registered
- Raises
injectme.DependencyAlreadyRegistered – If the dependency has already been registered.
Note
This function is a wrapper for
injectme.DependenciesRegistry.register_factory()
.
injectme.clear_dependencies¶
- injectme.clear_dependencies() None ¶
Clear all of the dependencies registered with
injectme.register()
orinjectme.register_factory()
prior to calling this function.Note
This function is a wrapper for
injectme.DependenciesRegistry.clear()
.
Classes¶
injectme.DependenciesRegistry¶
- class injectme.DependenciesRegistry¶
Class used as a registry of instances and factories which can be used for injection.
- get(dependency: type) Any ¶
Get object registered as an instance of dependency or call callable registered as a factory of dependency.
- Parameters
dependency – dependency for which a registered instance will be returned.
- Raises
DependencyNotFound – raised if the dependency passed as argument has not been registered prior to making this call.
- Returns
instance of dependency.
- register_instance(dependency: type, instance: Any) None ¶
Register passed object as an instance of dependency.
- Parameters
dependency – dependency for which an instance should be registered.
instance – an object which should be registered as an instance of dependency.
- Raises
DependencyAlreadyRegistered – raised if dependency has been already registered.
- register_factory(dependency: type, factory: Callable[[], Any]) None ¶
Register passed callable as a factory of dependency instances.
- Parameters
dependency – dependency for which an instance should be registered.
factory – a callable which should be registered as a factory of dependency instances
- Raises
DependencyAlreadyRegistered – raised if dependency has been already registered.
injectme.Injector¶
- class injectme.Injector(registry: Optional[DependenciesRegistry] = None)¶
Class responsible for the injection of dependencies.
- __init__(registry: Optional[DependenciesRegistry] = None)¶
Initialize the Injector.
- Parameters
registry – dependencies registry to be used with this
Injector
instance. If not sepcified, an instance of registry will be created automatically.
- property registry: DependenciesRegistry¶
Dependencies registry associated with this
Injector
.- Returns
instance of registry.
- __call__(cls: type) type ¶
Mark class to be the target of injection performed with this instance of
Injector
.- Parameters
cls – class to be marked for injection.
- Raises
InjectionFailure – raised if any of the required dependencies can’t be found in the registry associated with this
Injector
.- Returns
class passed as a param.
Exceptions¶
injectme.InjectmeException¶
- exception injectme.InjectmeException¶
Base class for all injectme’s exceptions.