No project description provided
Project description
XDI Framework
XDI is a modern and declarative DI and IoC framework using pydantic for config and data.
Key features
- Fast: Very high performance thanks to pydantic and preemptive wiring
- Developer friendly: Declarative Container definition to take the "Magic" out of DI
- Good compatibility: Can be used with almost every framework and supports async
Installation (via git for now)
pip install git+https://github.com/Nictec/XDI
Basic Example
from pathlib import Path
from datetime import datetime
from pydantic import BaseModel
from adnexus.containers import DeclarativeContainer
from adnexus.config.builtin import TOMLLoader
from adnexus.config import load_config
from adnexus.providers import FactoryProvider
from adnexus.markers import Provide
from adnexus.decorators import inject
class UpstreamInjectable:
def __init__(self):
self.time = datetime.now()
def get_time(self):
return self.time
class TestInjectable:
def __init__(self, name: str, timer: Provide[UpstreamInjectable]):
self.timer = timer
self.name = name
def greet(self):
print(self.timer.get_time())
return f"Hello {self.name}"
@inject
def test(greeter: Provide[TestInjectable]):
print(greeter.greet())
class MyConfig(BaseModel):
name: str
class MyContainer(DeclarativeContainer):
# the loaded config can be accessed by calling MyContainer.config.<name>
config = load_config(TOMLLoader(Path("/path/to/settings.toml")))
injectables = [
FactoryProvider(TestInjectable, config.name),
FactoryProvider(UpstreamInjectable)
]
if __name__ == "__main__":
container = MyContainer()
container.wire([__name__])
test() # <-- dependencies are injected automatically
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
adnexus-0.1.0.tar.gz
(7.0 kB
view details)
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 adnexus-0.1.0.tar.gz.
File metadata
- Download URL: adnexus-0.1.0.tar.gz
- Upload date:
- Size: 7.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.7 Linux/6.5.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c168c680d564e7da019ffde1c054525a988067f0e8aa102ff834b1e0326f08fa
|
|
| MD5 |
573fd506d2184bf2c339dffdd80457b0
|
|
| BLAKE2b-256 |
0ae48cc16a51d4fa894154756cbc783abbfcc0cf0ccec71015dee6923267ec7e
|
File details
Details for the file adnexus-0.1.0-py3-none-any.whl.
File metadata
- Download URL: adnexus-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.7 Linux/6.5.0-1017-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75bcc05c913335513dc7a10b1662c405262fc015887e7c95024e868639b01e89
|
|
| MD5 |
e9a23c7e266b656c02929074b8e6b8d3
|
|
| BLAKE2b-256 |
4b4bff8543eae3029144f6b73e1bcb821d07cac2fcca4c20000fb61a10840e08
|