Skip to main content

Simple and flexible dependency injection framework.

Project description

Azure Pipelines

Gimme That

A lightweight, simple but extensible dependency injection framework

Getting started

Install from PyPI

pip install gimme-that

Basic usage

import gimme


class MyService:
    pass


class ServiceConsumer:
    def __init__(self, service: MyService):
        self.service = service


# gimme.that automatically detects and resolves dependencies based on type annotations
consumer = gimme.that(ServiceConsumer)

isinstance(consumer.service, MyService)  # True

Features

  • Automatically detects dependencies based on type annotations

  • Works with dataclass classes and attr.s

  • Class repository that stores created objects for re-use

  • Register classes to provide additional configuration on how gimme.that should instantiate classes

    • Custom factory functions

    • Store or do not store created objects

    • Provide additional keyword arguments to the initializer

  • Scoped repositories to manage the lifetime of created objects (useful for testing)

  • Does not require any decorators or other additions to your classes (most of the time). They remain your classes

  • Detects circular dependencies, and provides the means to resolve them

  • Extensibility using plugins: create your own logic for resolving dependencies and creating classes

Development

pip install -e .[dev]

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

gimme-that-0.1.1.tar.gz (6.2 kB view hashes)

Uploaded Source

Built Distribution

gimme_that-0.1.1-py3-none-any.whl (6.3 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