Skip to main content

Helpers for dealing with application settings

Project description

COOLFIG

https://img.shields.io/travis/GaretJax/coolfig.svg https://img.shields.io/pypi/v/coolfig.svg https://img.shields.io/pypi/dm/coolfig.svg https://img.shields.io/coveralls/GaretJax/coolfig/master.svg https://img.shields.io/badge/docs-latest-brightgreen.svg https://img.shields.io/pypi/l/coolfig.svg https://img.shields.io/requires/github/GaretJax/coolfig.svg

Coolfig is a library to easily write configuration specifications to be fulfilled by various sources.

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


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 details)

Uploaded Source

Built Distributions

coolfig-3.1.0-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

coolfig-3.1.0-py2.py3-none-any.whl (15.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file coolfig-3.1.0.tar.gz.

File metadata

  • Download URL: coolfig-3.1.0.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.6

File hashes

Hashes for coolfig-3.1.0.tar.gz
Algorithm Hash digest
SHA256 0fb5d6988f6afa0019dc14c9872ecc4563787d4e0f0e81160b5da9b057804b6d
MD5 fe95b740d289f1c74fd5bdd94ea03b89
BLAKE2b-256 a69e79928f308bf8e147bb4fa93a2ee057b112c02a8b78ac6f5e0d2ac2af2ade

See more details on using hashes here.

File details

Details for the file coolfig-3.1.0-py3-none-any.whl.

File metadata

  • Download URL: coolfig-3.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.6

File hashes

Hashes for coolfig-3.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 036e9be6aac073eccffa69e15743a5937abe20feb4f32bb7b41a7ed3a281bcab
MD5 fdfe4d99a4c61ed1541b497e5c524b0a
BLAKE2b-256 7011ecab31792f6e04290e4992f4d995a29eee81c0dfd92d61c04fcb8658371a

See more details on using hashes here.

File details

Details for the file coolfig-3.1.0-py2.py3-none-any.whl.

File metadata

  • Download URL: coolfig-3.1.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.6

File hashes

Hashes for coolfig-3.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 9cbf1e08c82f45055aa77d381ca4adc8ac80123b3cefe5869f09efbf5f34ffeb
MD5 4b9204da40d155d0dd294df5ebcb3c2c
BLAKE2b-256 7499b80db7a8819c799881896d4b3e514ac90dc39ccc5ed4e9a4aecd9b017de3

See more details on using hashes here.

Supported by

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