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

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-2.0.0.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

coolfig-2.0.0-py2-none-any.whl (11.3 kB view details)

Uploaded Python 2

File details

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

File metadata

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

File hashes

Hashes for coolfig-2.0.0.tar.gz
Algorithm Hash digest
SHA256 af1a09978244ea387fd2fedd5d30457a203c17afcaa99822308b09470dfd12fb
MD5 a6894b48d5c91649d6b0c52f3f2e5428
BLAKE2b-256 5efd9475ef5b0882c15ee4218cb29f8ea6e345bd82d92a4106edc05999eaec49

See more details on using hashes here.

Provenance

File details

Details for the file coolfig-2.0.0-py2-none-any.whl.

File metadata

  • Download URL: coolfig-2.0.0-py2-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/2.7

File hashes

Hashes for coolfig-2.0.0-py2-none-any.whl
Algorithm Hash digest
SHA256 9e4b36ef6a2d83b1e468db764f09fcc64cc4ffce27fc2c23e99735a84f8867cc
MD5 eb62a30c0b73e2074921e39bad650dfd
BLAKE2b-256 1373a496fe517d1cfa0fe1b7b783c1a4f9a64d5084d7b6ed7869c54d6a2519fe

See more details on using hashes here.

Provenance

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