Skip to main content

Fast and easy dependency injection framework.

Project description

How to use?

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 reference class(es) when defining the recipe.

from injection import singleton

@singleton(on=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

This version

0.4.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_injection-0.4.1.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

python_injection-0.4.1-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file python_injection-0.4.1.tar.gz.

File metadata

  • Download URL: python_injection-0.4.1.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.0 CPython/3.10.13 Linux/6.2.0-1015-azure

File hashes

Hashes for python_injection-0.4.1.tar.gz
Algorithm Hash digest
SHA256 99cae39dde698b9d8932a5f7751c5dd7be327f2acdf9cfe5557f91b4a281fcbf
MD5 5bbebf2ca9bcb9a42bf989f0af7693ac
BLAKE2b-256 1f53a2a4a9668593435fd693812af8445d9865eca543557b90e19b716e47e3f0

See more details on using hashes here.

File details

Details for the file python_injection-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: python_injection-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.0 CPython/3.10.13 Linux/6.2.0-1015-azure

File hashes

Hashes for python_injection-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6101f4e9ef76732c1376fb4da50f125aa6fb4fbe5d2eae28d0e8968b1374fe15
MD5 f687de4e9de308b7ef73d3f47ec1ff6d
BLAKE2b-256 732db0dbe4c8ab720889cab0fb48176ab48fee341daebf699953951a340e76ab

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page