A simple dependency injection module using python 3 annotations
Project Description
How to use
from py3njection import inject from some_package import ClassToInject class Demo: @inject def __init__(self, object_to_use: ClassToInject): self.dependency = object_to_use demo = Demo()
How does it work ?
The decorator @inject looks for any annotated method/function parameters (return annotation excluded).
It creates a new object from the specified class if no object is already provided.
What if I want a singleton ?
@singleton class ClassToInject: pass
That’s it ! When @inject sees a class with this decorator, it always uses the same instance.
How to install
It’s available on PyPI !
pip install py3injection
Or get it at : https://pypi.python.org/pypi/py3njection
Want to know more ?
A more complete documentation is available here : http://py3njection.readthedocs.org/en/latest/
Contact and Contribution
Feel free to contribute in any way :
- help, bugs, issues, suggestions : https://github.com/Aigrefin/py3njection/issues
- twitter account : https://twitter.com/Julien_Tellier
- and finally my mail address is in the setup.py
Some Notes
- Unit tests come easy to set up (unless you have too many dependencies, but that would be a code smell, right ?). Just specify mock instances at your object creation. Examples will come later.
- This also means the injected object could also have some of its members injected too at their initialization !
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size & hash SHA256 hash help | File type | Python version | Upload date |
---|---|---|---|
py3njection-1.4.1.tar.gz (3.1 kB) Copy SHA256 hash SHA256 | Source | None | Jun 20, 2016 |