Skip to content

A lightweight extensible dependency injection framework

License

Notifications You must be signed in to change notification settings

elfjes/gimme-that

Repository files navigation

Github Actions PyPI - Package version PyPI - Python Version Read the Docs

Gimme That

A lightweight, simple but extensible dependency injection framework. Read the full documentation here

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 instantiating classes

Development

pip install -e .[dev]

About

A lightweight extensible dependency injection framework

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages