PyDio
Simple and functional dependency injection toolkit for Python.
About
PyDio aims to be simple, yet still powerful, allowing you to feed dependencies inside your application in a flexible way. PyDio design is based on simple assumption, that dependency injection can be achieved using simple key-to-function map, where key specifies type of object you want to inject and function is a factory function that creates instances of that type.
In PyDio, this is implemented using providers and injectors. You use providers to configure your key-to-function mapping, and then you use injectors to perform a lookup of a specific key and creation of the final object.
Here's a simple example:
import abc
from pydio.api import Provider, Injector
provider = Provider()
@provider.provides('greet')
def make_greet():
return 'Hello, world!'
def main():
injector = Injector(provider)
greet_message = injector.inject('greet')
print(greet_message)
if __name__ == '__main__':
main()
Now you can save the snippet from above as example.py file and execute
to see the output:
$ python example.py
Hello, world!
Key features
- Support for any hashable keys: class objects, strings, ints etc.
- Support for any type of object factories: function, coroutine, generator, asynchronous generator.
- Automatic resource management via generator-based factories (similar to pytest's fixtures)
- Multiple environment support: testing, development, production etc.
- Limiting created object's lifetime to user-defined scopes: global, application, use-case etc.
- No singletons used, so there is no global state...
- ...but you still can create global injector on your own if you need it :-)
Installation
You can install PyDio using one of following methods:
-
From PyPI (for stable releases):
$ pip install PyDio
-
From test PyPI (for stable and development releases):
$ pip install -i https://test.pypi.org/simple/ PyDio
-
Directly from source code repository (for all releases):
$ pip install git+https://gitlab.com/zef1r/PyDio.git@[branch-or-tag]
Documentation
You have two options available:
-
Visit PyDio's ReadTheDocs site.
-
Take a tour around functional tests.
License
This project is released under the terms of the MIT license.
See LICENSE.txt for more details.
Author
Maciej Wiatrzyk maciej.wiatrzyk@gmail.com
Metadata
Release files for PyDIO 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pydio-0.2.1.tar.gz | 11.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pydio-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.7 kB
Release files / pydio-0.2.1.tar.gz
| Download URL | pydio-0.2.1.tar.gz |
|---|---|
| Size | 11.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c1183567ae343f99a5ed2bde0b8dc035eb6dc39be4a3605dc12a64f3d90d9ddc
|
|
BLAKE2b-256 checksum How to use checksums |
c98b3665880ed7e589c175e341ca5bbfc85ab41698369935561c0233a3782c91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.15
|
Release files / pydio-0.2.1-py3-none-any.whl
| Download URL | pydio-0.2.1-py3-none-any.whl |
|---|---|
| Size | 14.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ecb4306506d538fba26e141edd054b85069e7cb34c9b46e27faa3cdaad7ea4c9
|
|
BLAKE2b-256 checksum How to use checksums |
f40e28ef4a088c1776171c70ff9d940d391fa4a86d08d11394f6aa25543b2f56
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.15
|
Security for PyDIO 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.