Skip to main content

plugable dependency injection and result processing

Project description

in-n-out

License PyPI Python Version CI codecov Benchmarks

Python dependency injection you can taste.

A lightweight dependency injection and result processing framework for Python using type hints. Emphasis is on simplicity, ease of use, and minimal impact on source code.

import in_n_out as ino


class Thing:
    def __init__(self, name: str):
        self.name = name


# use ino.inject to create a version of the function
# that will retrieve the required dependencies at call time
@ino.inject
def func(thing: Thing):
    return thing.name


def give_me_a_thing() -> Thing:
    return Thing("Thing")


# register a provider of Thing
ino.register_provider(give_me_a_thing)
print(func())  # prints "Thing"


def give_me_another_thing() -> Thing:
    return Thing("Another Thing")


with ino.register_provider(give_me_another_thing, weight=10):
    print(func())  # prints "Another Thing"

This also supports processing return values as well (injection of intentional side effects):

@ino.inject_processors
def func2(thing: Thing) -> str:
    return thing.name

def greet_name(name: str):
    print(f"Hello, {name}!")

ino.register_processor(greet_name)

func2(Thing('Bob'))  # prints "Hello, Bob!"

Alternatives

Lots of other python DI frameworks exist, here are a few alternatives to consider:

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

in_n_out-0.2.1.tar.gz (26.0 kB view details)

Uploaded Source

Built Distribution

in_n_out-0.2.1-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

Details for the file in_n_out-0.2.1.tar.gz.

File metadata

  • Download URL: in_n_out-0.2.1.tar.gz
  • Upload date:
  • Size: 26.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for in_n_out-0.2.1.tar.gz
Algorithm Hash digest
SHA256 43cde2b7de981d41a6d70618a2b7bd989481095922a53ead4dc75f2bbd5dffea
MD5 8eb50fb6ce2ddb069aad6c93fd582f94
BLAKE2b-256 af0807edfac98a38ab0208557524cbdd94a296f565b0558417ccb2c03d14a6ea

See more details on using hashes here.

File details

Details for the file in_n_out-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: in_n_out-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 20.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for in_n_out-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 343e81edb27cf41ec946134a92964f408465abdf6a065c6c55fe96f53bc3c8b7
MD5 251219fa8e3f9ba5b53b630d6065e465
BLAKE2b-256 3b06711a4d105ad3d01d3ef351a1039bb5cc517a57dbf377d7da9a0808e34c77

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