Skip to main content

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.1.tar.gz (41.2 kB view hashes)

Uploaded Source

Built Distribution

Injectulate-0.1.1-py3-none-any.whl (29.5 kB view hashes)

Uploaded Python 3

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