Skip to main content

Lightweight and Easy to use configuration manager for Python projects

Project description

confkit

Test Coverage Status

Type-safe configuration manager for Python projects using descriptors and ConfigParser.

Full documentation: confkit docs

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, starting with 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.

What is it?

confkit is a Python library that provides type-safe configuration management with automatic type conversion and validation. It uses descriptors to define configuration values as class attributes that automatically read from and write to INI files.

What does it do?

  • Type-safe configuration with automatic type conversion
  • Automatic INI file management
  • Default value handling with file persistence
  • Optional value support
  • Enum support (Enum, StrEnum, IntEnum, IntFlag)
  • Method decorators for injecting configuration values
  • Runtime type validation

Getting Started / Usage

For full quickstart, advanced patterns (custom data types, decorators, argparse integration), and runnable examples, visit the documentation site:

👉 confkit documentation site

Direct entry points:

  • Quickstart & descriptor patterns: Usage Guide
  • All examples: Examples Overview
  • Custom datatype tutorial: Custom Data Type example
  • API reference: pdoc-generated symbol index

You can still browse example source locally under examples/.

How to contribute?

  1. Fork the repository and clone locally
  2. Install dependencies: uv sync --group test
  3. Run tests: pytest .
  4. Run linting: ruff check .
  5. Make changes following existing patterns
  6. Add tests for new functionality
  7. Submit a pull request

Development

git clone https://github.com/HEROgold/confkit.git
cd confkit
uv sync --group test
pytest .
ruff check .

Building Documentation

To build and preview documentation locally:

# Install documentation dependencies
uv sync --group docs

# Generate API documentation with pdoc
uv run pdoc confkit -o docs/api

# Build documentation site with mkdocs
uv run mkdocs build -d site

# Or serve locally for live preview (with auto-reload)
uv run mkdocs serve

Documentation is automatically built and deployed to GitHub Pages when changes are pushed to the master branch.

After updating code that affects documentation:

  1. Update relevant .md files in docs/ directory (examples, reference, etc.)
  2. Run uv run pdoc confkit -o docs/api to regenerate API documentation
  3. Preview changes with uv run mkdocs serve and verify at http://127.0.0.1:8000
  4. Commit both code and documentation changes together

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

confkit-2.0.0.tar.gz (63.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

confkit-2.0.0-py3-none-any.whl (20.5 kB view details)

Uploaded Python 3

File details

Details for the file confkit-2.0.0.tar.gz.

File metadata

  • Download URL: confkit-2.0.0.tar.gz
  • Upload date:
  • Size: 63.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for confkit-2.0.0.tar.gz
Algorithm Hash digest
SHA256 75b9fe3485af5ed9e1a71c6899bc5615d5d55721716e633c9c1e4fc29dfc3102
MD5 dcf39996f43bfb552bdf1c32352627ad
BLAKE2b-256 d20769d8a7124c3661c106c97a2d05e26225c7f7b0bea3971a0c41ba3996d17f

See more details on using hashes here.

File details

Details for the file confkit-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: confkit-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 20.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for confkit-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1858c0a640a30faea8dc4f2cace73d95ed7928641fdb3683dce13109970c21e2
MD5 a9f3bb189f23b32eaaacfaaf8db7a433
BLAKE2b-256 5c5006471f0f70fde70d9a5835cfd39133cd1d0c42e0902c44096fa8c6471f81

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page