Fast and easy dependency injection framework.
Project description
Injection
Fast and easy dependency injection framework.
Quick start
⚠️ Requires Python 3.10 or higher
pip install python-injection
How to use
Create an injectable
If you wish to inject a singleton, use unique
decorator.
from injection import unique
@unique
class MyClass:
""" class implementation """
If you wish to inject a new instance each time, use new
decorator.
from injection import new
@new
class MyClass:
""" 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: MyClass):
""" function implementation """
Inheritance
In the case of inheritance, you can use the decorator parameters reference
or references
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.
reference
parameter example:
from injection import unique
class A:
...
@unique(reference=A)
class B(A):
...
references
parameter example:
from injection import unique
class A:
...
class B(A):
...
@unique(references=(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 reference class(es) when defining the recipe.
from injection import unique
@unique(reference=MyClass)
def my_recipe() -> MyClass:
""" recipe implementation """
Utils
load_package
Useful for put in memory injectables hidden deep within a package. Example:
package
├── sub_package
│ ├── __init__.py
│ └── module2.py
│ └── class Injectable2
├── __init__.py
└── module1.py
└── class Injectable1
To load Injectable1 and Injectable2 into memory you can do the following:
from injection.utils import load_package
import package
load_package(package)
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.2.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc27041cce234c781573daea7eac1c9a7d995e98c509b4d95bbdfb6a1d442cd8 |
|
MD5 | 4f6c5fe5978ca8fb72cd8ffa343ffd3a |
|
BLAKE2b-256 | 4902d566db9f7c1962a309c324cfa16128a490966b5235878823e0383dfd070b |