Skip to main content
Help us improve Python packaging – donate today!

A simple dependency injection module using python 3 annotations

Project Description

Build Status Tests status Documentation Status Join the chat at https://gitter.im/Aigrefin/py3njection

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 :

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 !

Release history Release notifications

This version
History Node

1.4.1

History Node

1.4

History Node

1.3

History Node

1.2

History Node

1.1

History Node

1.0

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

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page