plugable dependency injection and result processing
Project description
in-n-out
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43cde2b7de981d41a6d70618a2b7bd989481095922a53ead4dc75f2bbd5dffea
|
|
| MD5 |
8eb50fb6ce2ddb069aad6c93fd582f94
|
|
| BLAKE2b-256 |
af0807edfac98a38ab0208557524cbdd94a296f565b0558417ccb2c03d14a6ea
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
343e81edb27cf41ec946134a92964f408465abdf6a065c6c55fe96f53bc3c8b7
|
|
| MD5 |
251219fa8e3f9ba5b53b630d6065e465
|
|
| BLAKE2b-256 |
3b06711a4d105ad3d01d3ef351a1039bb5cc517a57dbf377d7da9a0808e34c77
|