quadkit
Async-first DI/IoC framework for Python — core package.
Overview
Quadkit is the foundation package for the wider Quadkit ecosystem. It provides the DI/IoC container, application lifecycle, configuration system, provider protocol, exception hierarchy, and structured logging foundation.
Async-first by design: application boot, provider lifecycle, I/O paths, and
resolution workflows are built for async Python. Use Application.boot(...) to
assemble modules and providers into a running app.
Install
uv add quadkit
# Optional extras
uv add "quadkit[security]"
Quick Start
from quadkit import Application
from quadkit.di.module import Module, module
from quadkit.app.standard import StandardModule
@module(imports=[StandardModule.configure()])
class AppModule(Module):
pass
async with Application.boot(modules=[AppModule]) as app:
# use app.container to resolve services
...
Configuration
Zero-config usage: Call
StandardModule.configure()with no arguments to use defaults.
Option 1 — YAML file
# application.yaml
app_name: my-app
debug: false
Option 2 — Profiles + Environment Variables (recommended)
export QK_PROFILE=production
# Environment variables for each field
Option 3 — Python
from quadkit.config.main import QuadkitConfig
config = QuadkitConfig(...)
StandardModule.configure(config_class=QuadkitConfig)
Module Factory Methods
| Method | Description |
|---|---|
StandardModule.configure(...) |
Configure with explicit config, sources, or overrides |
StandardModule.build_providers() |
Provider list for Application.boot(providers=[...]) |
CoreModule.configure(...) |
Stripped-down kernel without serialization or concurrency |
Key Features
- DI Container — register services as singleton, transient, or scoped; resolve via
await container.resolve(ServiceType) - Provider Lifecycle —
register(),boot(),shutdown()hooks with priority ordering - Result Pattern —
Result[T, E]for expected domain failures, exceptions for infrastructure errors - Module System — compose applications from reusable modules with explicit exports
- Structured Logging — structlog-based logging via
get_logger(__name__) - Configuration — Pydantic-based config with YAML, environment variables, and profile support
Testing
async with Application.boot(modules=[StandardModule.configure()]) as app:
# your test code
...
Key Source Files
| File | What it contains |
|---|---|
src/quadkit/app/base.py |
Application lifecycle and boot flow |
src/quadkit/app/standard.py |
StandardModule.configure() with all kernel providers |
src/quadkit/di/container/container.py |
Container registration, scope, and diagnostics |
src/quadkit/result/ |
Result, Ok, Err, and helpers |
src/quadkit/config/main.py |
QuadkitConfig and configuration system |
Release files for quadkit 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| quadkit-0.0.2.tar.gz | 572.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| quadkit-0.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.0 MB
Release files / quadkit-0.0.2.tar.gz
| Download URL | quadkit-0.0.2.tar.gz |
|---|---|
| Size | 572.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
60b23dadc97014cdfe804dcf9b22e4c18af3228496e46d46a7f57d3055e2d7da
|
|
BLAKE2b-256 checksum How to use checksums |
089bf103cae1a4e2446193917b2058d163bf0b2fc8e55c85a2ee2587770e7b9a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.14
|
Release files / quadkit-0.0.2-py3-none-any.whl
| Download URL | quadkit-0.0.2-py3-none-any.whl |
|---|---|
| Size | 434.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2af9e573719071a1382a7c33242226271a801ce0ee936a3897c1178623cff961
|
|
BLAKE2b-256 checksum How to use checksums |
8c9513c01ad084a151725eefbc2ebc5b8dd1d1b14b496494dd238a3c11797fdd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.14
|