Helpers for dealing with application settings
Project description
COOLFIG
Coolfig is a library to easily write configuration specifications to be fulfilled by various sources.
- Free software: MIT license
- Documentation: http://coolfig.rtfd.org
Installation
pip install coolfig
Example
Define your schema:
from coolfig import Settings, Value, types class DefaultSettings(Settings): SECRET_KEY = Value(str) DEBUG = Value(types.boolean, default=False) DB_URL = Value(types.sqlalchemy_url) LOCALES = Value(types.list(str))
Instantiate the configuration with a data provider:
from coolfig import EnvConfig settings = DefaultSettings(EnvConfig(prefix='MYAPP_'))
Profit:
if settings.DEBUG: print(settings.SECRET_KEY) else: print(settings.LOCALES) connect(settings.DB_URL)
Django integration
In your settings.py file:
from coolfig import EnvConfig, load_django_settings INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'testprj.my_custom_app', ) MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', ) ROOT_URLCONF = 'testprj.urls' WSGI_APPLICATION = 'testprj.wsgi.application' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] load_django_settings(EnvConfig(), locals())
Then, in each settings submodule of each app, you can define additional setting entries to be added to the main settings object. For example, in testprj/my_custom_app/settings.py you can add the following:
from coolfig import Settings, Value class AppSettings(Settings): # The class has to be named AppSettings MY_APP_SETTING = Value(str)
Usage is 100% compatible with Django’s settings machinery:
from django.conf import settings settings.MY_APP_SETTING
History
3.1.0 - 2018-08-23
- Make EnvDirConfig importable from coolfig.
3.0.0 - 2018-08-23
- Removed explicit support for secrets in favor of EnvDirConfig and a FallbackProvider.
- Use black and isort for formatting.
- Improved tests coverage
2.0.0 - 2018-08-03
- Support for Docker secrets.
1.0.2 - 2016-03-14
- Additional bug-fixing.
1.0.1 - 2016-03-14
- Fixed a bug in AppConfig checking.
1.0.0 - 2016-03-14
- Added support for Django AppConfig (including custom settings path configured with a settings property on the config class.
- Officially supporting Django 1.4, 1.5, 1.6, 1.7, 1.8 and 1.9, running on Python 2.7, 3.4 (where Django supports itself supports it) and PyPy.
0.4.0 - 2015-10-05
- Added support for the CACHES Django settings directive
- Added support for computed_values
- Added initial documentation stub
0.3.0 - 2015-07-20
- Added first-class support for Django
- Added some more importing shortcuts (EnvConfig, DictConfig, load_django_settings)
- Added a DictValue value, able to load multiple keys with the same prefix into the same value
- Added an API to merge different settings schema into an existing object
0.2.0 - 2015-05-31
- Added a EnvConfig provider
- Added a dottedpath value type
0.1.0 – 2015-05-30
- Initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
coolfig-3.1.0.tar.gz
(12.8 kB
view hashes)
Built Distributions
coolfig-3.1.0-py3-none-any.whl
(15.4 kB
view hashes)
Close
Hashes for coolfig-3.1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9cbf1e08c82f45055aa77d381ca4adc8ac80123b3cefe5869f09efbf5f34ffeb |
|
MD5 | 4b9204da40d155d0dd294df5ebcb3c2c |
|
BLAKE2-256 | 7499b80db7a8819c799881896d4b3e514ac90dc39ccc5ed4e9a4aecd9b017de3 |