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.8-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5806ffdb7366f2350500cc0ca6bb075d6ac5f29686a462625c9f8deefbfe351 |
|
MD5 | bdfde1c608924ff90454b5d6a90480aa |
|
BLAKE2b-256 | d7d18d1e3a104a1f7675e36c3a5408ca9634a69377be752019185e581a8bd910 |