Fast and easy dependency injection framework.
Project description
Basic usage
Create an injectable
If you wish to inject a singleton, use singleton
decorator.
from injection import singleton
@singleton
class Singleton:
""" class implementation """
If you wish to inject a new instance each time, use injectable
decorator.
from injection import injectable
@injectable
class Injectable:
""" class implementation """
Inject an instance
To inject one or several instances, use inject
decorator.
Don't forget to annotate type of parameter to inject.
from injection import inject
@inject
def my_function(instance: Injectable):
""" function implementation """
If inject
decorates a class, it will be applied to the __init__
method.
Especially useful for dataclasses:
from dataclasses import dataclass
from injection import inject
@inject
@dataclass
class DataClass:
instance: Injectable = ...
Inheritance
In the case of inheritance, you can use the decorator parameter on
to link the injection to one or several other
classes.
Warning: if the child class is in another file, make sure that file is imported before injection.
See load_package
function.
Example with one class:
from injection import singleton
class A:
...
@singleton(on=A)
class B(A):
...
Example with several classes:
from injection import singleton
class A:
...
class B(A):
...
@singleton(on=(A, B))
class C(B):
...
Recipes
A recipe is a function that tells the injector how to construct the instance to be injected. It is important to specify the return type annotation when defining the recipe.
from injection import singleton
@singleton
def my_recipe() -> Singleton:
""" recipe implementation """
Auto inject
By default, injectable
and singleton
decorators will automatically apply @inject
to the decorated class or
function. To disable it, set the auto_inject
parameter to False
.
from injection import singleton
@singleton(auto_inject=False)
class Singleton:
""" class implementation """
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for python_injection-0.6.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ddcdf0d0af44a7eb1b1b37765de4a52d59325e914fb45c8dd93b039277107b9 |
|
MD5 | c1a81aadcfe8bd126450a1f0ea5f9668 |
|
BLAKE2b-256 | 317d978db13b799774337c4d8dcbd9468532228e6d07e2ba62f9e4ee1743fee5 |