TODO
Project description
Welcome to Concrete Settings
Concrete Settings is a Python library which facilitates configuration management in big and small programs.
The project was born out of necessity to manage a huge decade-old Django-based SaaS solution with more than two hundred different application settings scattered around settings.py. What does this setting do? What type is it? Why does it have such a weird format? Is this the final value, or it changes somewhere on the way? Sometimes developers spent hours seeking answers to these questions.
Concrete Settigns tackles these problems altogether. It was designed to be developer and end-user friendly. The settings are defined via normal Python code with few tricks which significantly improve readability and maintainability.
Take a look at a small example of Settings class with one boolean setting DEBUG. A developer defines the settings in application code, while an end-user chooses to store the configuration in a YAML file:
# settings.py
from concrete_settings import Settings
class AppSettings(Settings):
#: Turns debug mode on/off
DEBUG: bool = False
app_settings = AppSettings()
app_settings.update('/path/to/user/settings.yml')
app_settings.is_valid(raise_exception=True)
# settings.yml
DEBUG: true
Accessing settings:
>>> print(app_settings.DEBUG)
True
>>> print(AppSettings.DEBUG.__doc__)
Turns debug mode on/off
As you can see, settings are defined in classes. Python mechanism of inheritance and nesting apply here, so settings can be mixed (multiple inheritance) and be nested (settings as class fields). Settings are type-annotated and are validated. Documentation matters! Each settings can be documented in Sphinx-style comments #: written above its definition. An instance of Settings can be updated i.e. read from any kind of source: YAML, JSON or Python files, environmental variables, Python dicts, and you can add more!
Finally, Concrete Settings comes with batteries like Django 3.0 support out of the box.
Concrete Settings are here to improve configuration handling whether you are starting from scratch, or dealing with an old legacy Cthulhu. Are you ready to try it out?
pip install concrete-settings and welcome to the documentation!
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
Hashes for concrete_settings-0.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee0614d807dbe850cfccb93a1e0f111790f8805da68569af13aef91a11a357fe |
|
MD5 | da9e0a05d8b0945b796cb37d4bf00098 |
|
BLAKE2b-256 | c45bd91fd2f14c518cdfff63bf9d11b7525aa7e08694b7e5e0d7f617c320accd |