Super config for python
Project description
SuperConf
This project is in Beta.
A powerful and flexible configuration management library for Python. SuperConf provides a clean, type-safe, and intuitive way to handle configuration from multiple sources including environment variables, configuration files, and dictionaries.
Inspired from Cafram, forked from ClassyConf.
Features
- 🔒 Type-safe configuration with built-in validation
- 🔄 Multiple configuration sources (environment variables, files, dictionaries)
- 📦 Nested configuration support
- 🎯 Default values and custom casting
- 🚀 Easy to use and extend
- 🔍 Strict type checking mode
- 📝 Comprehensive field types (Boolean, Integer, String, List, Dict, etc.)
- 🎨 Support for custom field types
Quickstart
Installation
Install using pip:
pip install superconf
Or install from source:
git clone https://github.com/mrjk/python-superconf2.git
cd python-superconf2
pip install -e .
Basic Usage
Here's a simple example of how to use SuperConf:
from superconf.configuration import Configuration
from superconf.fields import FieldString, FieldInt, FieldBool, FieldList
class AppConfig(Configuration):
class Meta:
loaders = [Environment()] # Load from environment variables
debug = FieldBool(default=False, help="Enable debug mode")
port = FieldInt(default=8080, help="Server port")
app_name = FieldString(default="myapp", help="Application name")
plugins = FieldList(default=[], help="Enabled plugins")
# Create and use the configuration
config = AppConfig()
print(config.debug) # False
print(config.port) # 8080
# Use environment variables to override defaults
# export APP_PORT=9000
# export APP_DEBUG=true
Overview
Requirements
- Python 3.9 or higher
- Dependencies:
- pyaml >= 24.12.1
FAQ
Q: How is SuperConf different from other configuration libraries?
A: SuperConf combines the best features of existing libraries with strong type safety, nested configurations, and a clean API.
Q: Can I use multiple configuration sources?
A: Yes, SuperConf supports multiple loaders that can be prioritized in order.
Q: Is it possible to extend SuperConf with custom field types?
A: Yes, you can create custom field types by extending the Field class.
Known Issues
- String parsing for dictionary fields is not implemented yet
- Cache settings need refinement
- Some features are marked as WIP (Work in Progress)
Development
Setup Development Environment
- Clone the repository:
git clone https://github.com/mrjk/python-superconf2.git
cd python-superconf2
- Install development dependencies:
poetry install
Development Commands
SuperConf uses Taskfile for development tasks:
- Run tests:
task test - Run linting:
task test_lint - Fix linting issues:
task fix_lint - Generate documentation:
task gen_doc_class_graph
Running Tests
task test # Run all tests
task test_pytest # Run pytest suite
task test_recap # View test coverage report
Project Information
License
This project is licensed under the GPLv3 License.
Author
- mrjk mrjk.78@gmail.com
Support
For support, please:
- Check the documentation
- Open an issue on GitHub
Related Projects
Roadmap
- Implement string parsing for dictionary fields
- Improve caching mechanism
- Add more configuration sources
- Create comprehensive documentation site
- Add more examples and use cases
- Implement configuration validation hooks
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
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 superconf-0.1.2.tar.gz.
File metadata
- Download URL: superconf-0.1.2.tar.gz
- Upload date:
- Size: 33.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.10.11 Linux/6.6.47-1-MANJARO
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
820cc93bfb64ba7db1df213b67b45ea63c9e472b2b6264dcc7ec362330c6b3d4
|
|
| MD5 |
2dfec6b95f6dea368ee7583d93b0c7ba
|
|
| BLAKE2b-256 |
1dbf075cbd55bb4be40dea613dbb19083da4eec202104f2cf40e40ce82bc21a3
|
File details
Details for the file superconf-0.1.2-py3-none-any.whl.
File metadata
- Download URL: superconf-0.1.2-py3-none-any.whl
- Upload date:
- Size: 35.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.10.11 Linux/6.6.47-1-MANJARO
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5e56f85c97ea2b375d59dcb01cdad73e836f161afdc1b37400b45a604e4150d
|
|
| MD5 |
95a00e02d5f7aa3b1e0ce38f8eafb596
|
|
| BLAKE2b-256 |
a6786cf3e3515a800878bb4b52c1334b63f4336e93b94ddf9483c23117fecd38
|