Skip to main content

Super config for python

Project description

SuperConf

Gitter PyPI PyPI - Downloads piwheels (including prereleases) GitHub commit activity License: GPL v3

PyPI - Python Version PyPI - Format PyPI - Status


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

  1. Clone the repository:
git clone https://github.com/mrjk/python-superconf2.git
cd python-superconf2
  1. 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

Support

For support, please:

  1. Check the documentation
  2. 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

superconf-0.1.2.tar.gz (33.5 kB view details)

Uploaded Source

Built Distribution

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

superconf-0.1.2-py3-none-any.whl (35.2 kB view details)

Uploaded Python 3

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

Hashes for superconf-0.1.2.tar.gz
Algorithm Hash digest
SHA256 820cc93bfb64ba7db1df213b67b45ea63c9e472b2b6264dcc7ec362330c6b3d4
MD5 2dfec6b95f6dea368ee7583d93b0c7ba
BLAKE2b-256 1dbf075cbd55bb4be40dea613dbb19083da4eec202104f2cf40e40ce82bc21a3

See more details on using hashes here.

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

Hashes for superconf-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c5e56f85c97ea2b375d59dcb01cdad73e836f161afdc1b37400b45a604e4150d
MD5 95a00e02d5f7aa3b1e0ce38f8eafb596
BLAKE2b-256 a6786cf3e3515a800878bb4b52c1334b63f4336e93b94ddf9483c23117fecd38

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