Lightweight dependency injection container.
Project description
Injectulate
Lightweight dependency injection framework relying on type annotations for dependency resolution.
Installation
pip install injectulate
Usage
Simple use case
from injectulate import Builder
class Foo:
pass
builder = Builder()
container = builder.build()
foo = container.get(Foo)
Simple dependencies
from injectulate import Builder
class Foo:
pass
class Bar:
# Type annotation is required as it's used to resolve the dependency.
def __init__(self, dependency: Foo):
pass
container = Builder().build()
bar = container.get(Bar)
A class with a dependency on Container
will always result in the container injecting itself.
Binding class to inheriting class
from injectulate import Builder
from abc import ABC
class AbstractClass(ABC):
pass
class Implementation(AbstractClass):
pass
builder = Builder()
builder.bind(AbstractClass).to(Implementation)
container = builder.build()
impl = container.get(AbstractClass)
Binding to factory method
from injectulate import Builder, Container
from abc import ABC
class AbstractClass(ABC):
pass
class Implementation(AbstractClass):
def __init__(self, c: Container):
pass
builder = Builder()
builder.bind(AbstractClass).to(lambda c: Implementation(c))
container = builder.build()
impl = container.get(AbstractClass)
Suggestions
Are welcomed
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Injectulate-0.1.0.tar.gz
(17.0 kB
view hashes)
Built Distribution
Close
Hashes for Injectulate-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 821db08ca3e1d18d7df6e15e3b62eae8c328806a92d5bc7da9f04965786e0206 |
|
MD5 | e4f746f42a777967f6f12986c0336e9b |
|
BLAKE2b-256 | 17f7f43235e7e36d6bb49b01aa8ea0cf755ca19abad2d87efb8f58e62826269c |