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 a reference class:
from injection import singleton
class A:
...
@singleton(on=A)
class B(A):
...
Example with several reference 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.5.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40b9097756639e647c5586620db248bef9b686c6b24698db0835cb73be5f36e4 |
|
MD5 | de5a170d9e37c64e7dd45de06cfacb79 |
|
BLAKE2b-256 | 325ab845a6e3da6716907eea9d16de6620fa7d150af4a1f1ce1561bd8fb89cfa |