Modern and fully typed declarative Di and IoC Framework
Project description
Adnexus Framework
Adnexus 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
pip install adnexus
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.7.tar.gz
(7.8 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
adnexus-0.1.7-py3-none-any.whl
(10.6 kB
view details)
File details
Details for the file adnexus-0.1.7.tar.gz.
File metadata
- Download URL: adnexus-0.1.7.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.11.7 Linux/6.5.0-1025-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37c3afb53b964c343ec48831b7048fba5c0759cc0879d0886a56d62dc30bc40a
|
|
| MD5 |
19c1acb2a54d61d2f1a2b232f8688187
|
|
| BLAKE2b-256 |
7ecfa135533a0b1c0d94770dc327ddeae71b4847be145de49b15351a4d42f11d
|
File details
Details for the file adnexus-0.1.7-py3-none-any.whl.
File metadata
- Download URL: adnexus-0.1.7-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.11.7 Linux/6.5.0-1025-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f617d5d42a77de8f6a8d88fe232ff9b44dbdd2b56b77d1cf7fa168fa2f75bf6c
|
|
| MD5 |
938bc1302311a5d64239049c7ad0f958
|
|
| BLAKE2b-256 |
c809c2f369324036ac36e20dd3d62f94a40f3f7d1278a9c20c6e243276ed035c
|