Skip to main content

Fast and easy dependency injection framework.

Project description

Basic usage

Create an injectable

Note: If the class needs dependencies, these will be resolved when the instance is retrieved.

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 """

If you have a constant (such as a global variable) and wish to register it as an injectable, use set_constant function.

from injection import set_constant

app = set_constant(Application())

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:

Note: Doesn't work with Pydantic BaseModel because the signature of the __init__ method doesn't contain the dependencies.

from dataclasses import dataclass

from injection import inject

@inject
@dataclass
class DataClass:
    instance: Injectable = ...

Get an instance

Example with get_instance function:

from injection import get_instance

instance = get_instance(Injectable)

Example with get_lazy_instance function:

from injection import get_lazy_instance

lazy_instance = get_lazy_instance(Injectable)
# ...
instance = ~lazy_instance

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 one class:

from injection import singleton

class A:
    ...

@singleton(on=A)
class B(A):
    ...

Example with several 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 """

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

python_injection-0.6.10.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

python_injection-0.6.10-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: python_injection-0.6.10.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.13 Linux/6.2.0-1018-azure

File hashes

Hashes for python_injection-0.6.10.tar.gz
Algorithm Hash digest
SHA256 e3c8b4770e0c25f0413b3e9bdfb8ce54c54a4e5cc1e90e85b0a89135aaa9c25f
MD5 d05353aaf5b7fbaa2f84097fcc7a11f1
BLAKE2b-256 0bd5dd90fa0a89d5bfd1e875d57b6ccce3874eb5d4e9594f047d4d9acb5bdb61

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for python_injection-0.6.10-py3-none-any.whl
Algorithm Hash digest
SHA256 06dfdc05816117891288df8f7c9f7e1842e5e36fef40f595899ac61d91bad7ef
MD5 baf054572549dcf50412c40e5a904669
BLAKE2b-256 074c0a155b04daf0df2f72e0c42bbd1cec2dea333367a56b3c6792481ea8d01b

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