Confkit¶
Lightweight, type-safe configuration via descriptors on plain Python classes.
This landing page orients you quickly:
| Topic | Where to Go |
|---|---|
| Run examples | Examples section (navigation) or Examples overview |
| Create a custom data type | Usage Guide: Adding a New Data Type |
| See all data type converters | Reference: Data Types |
| Decorator utilities | Usage: Decorators Overview |
| API by symbol | Generated API (pdoc) |
| Contribute / issues | GitHub Repo: HEROgold/confkit |
Examples¶
Explore focused example pages:
- Basic primitives & persistence:
Basic - Data types (hex, octal, binary, bases):
Data types - Optional & cascading configs:
Optional values - Lists & escaping:
List types - Enums & flags:
Enums - Decorator injection patterns:
Decorators - Argparse integration:
Argparse - Custom converter (UpperString): Custom Data Type
Need a new scenario? Open an issue or PR (see Contributing below).
Contributing¶
We welcome:
- Additional data type converters
- Validation enhancements and edge-case handling
- Improved documentation examples / tutorials
- Bug reports with minimal reproduction scripts
Workflow (after forking or a feature branch):
uv sync --group dev
uv run pytest -q
uv run ruff check .
uv sync --group docs
uv run pdoc confkit -o docs/api
uv run mkdocs build -d site
Before opening a PR, ensure:
- All tests pass (including property-based tests)
- No ruff or type errors (pyright config in project)
- Updated docs where behavior changed
Supported Python Versions¶
confkit follows the Python version support policy as outlined in the Python Developer's Guide:
- We support all active and maintenance releases of Python above 3.11
- End-of-life (EOL) Python versions are not supported
- We aim to support Python release candidates to stay ahead of the release cycle
This ensures that confkit remains compatible with current Python versions while allowing us to leverage modern language features.
API Reference¶
Two complementary views:
High-level curated reference pages¶
Full symbol index (pdoc)¶
Use (pdoc:qual.name) style links inside docs for deep, stable symbol links
The [MyClass](!!! Unresolved path to: mypackage.MyClass) class is awesome.
The [do_something](!!! Unresolved path to: mypackage.MyClass.do_something) method is awesome.
The [](mypackage.MyClass) class is awesome.
When to Use confkit¶
Use confkit when you want:
- Simple, configuration management
- Type conversion and validation baked in
- Declarative, descriptor-based definitions instead of manual parsing
If you need hierarchical, nested config trees or schema evolution with migrations, pair confkit with a higher-level orchestrator or consider extending with custom data types.
Next Steps¶
Head to the Usage Guide for deeper patterns, or jump straight into an Example.