Skip to main content

Easy to manage Config variables separate from App code. Useful while developing and deploying( CI/CD) django web-apps

Project description

dynamic-config

Project configuration variables are declared beforehand and inferred from environment variables or configuration files. Useful while developing and deploying( CI/CD) django web-apps

Install

pip install dynamic-conf

Features

  • supports .env or .py files
  • You also don't need to include a sample file. Since the Config object would be able to generate .env.py itself.
  • It also loads Configuration variables from environment variables. The order of preference is env variables > env.py
  • Attributes are lazily evaluated.

Todos

  • supports casting with type annotations

Getting Started

  • You need to subclass the Config class.
  • The config file should define all the variables needed for a project.
# project/conf.py

from dynamic_conf import Config, REQUIRED

class CONFIG(Config):
    """singleton to be used for configuring from os.environ and env.py"""

    # default settings

    ENV = "prod" # optional field with a default value

    DB_NAME = "db"
    DB_HOST = "127.0.0.1"
    DB_USER = "postgres"
    DB_PASS = None # even None could be given as default value

    SECRET_KEY:str # Python 3 only
    AN_SECRET_KEY = REQUIRED # Python 2 & 3
  • to create project/env.py just run with the path to CONFIG class's module
# you could pass environment variables or set already with export
env DB_PASS='123' dynamic-conf project/conf.py

dynamic-conf project/conf.py DB_USER='user-1' DB_PASS='123' # pass as list of key-value pair

#to filter environment variables with a prefix
env VARS_PREFIX="PROD_" dynamic-conf project/conf.py PROD_DB_USER="user-2"

Usage

  • To use the config simply import and use particular attribute
# project/settings.py
from conf import CONFIG
DATABASES = {
    "default": {
        "ENGINE": "django.contrib.gis.db.backends.postgis",
        "HOST": CONFIG.DB_HOST,
        "NAME": CONFIG.DB_NAME,
        "USER": CONFIG.DB_USER,
        "PASSWORD": CONFIG.DB_PASSWORD,
        "PORT": "5432",
    }
}

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

dynamic-conf-0.3.0.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

dynamic_conf-0.3.0-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file dynamic-conf-0.3.0.tar.gz.

File metadata

  • Download URL: dynamic-conf-0.3.0.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.3 CPython/3.8.1 Linux/5.5.7-1-MANJARO

File hashes

Hashes for dynamic-conf-0.3.0.tar.gz
Algorithm Hash digest
SHA256 7b0f210d4092f2c56031701d5500f658d524d7d7eff0b7a1a770b0b3a31a1e2e
MD5 9a34b1d396f5e88f7a57fd943d992a80
BLAKE2b-256 da607c21acb8b07cc4407422919706007d214e5a26be2ad2d4dc93bbb8c5ebe2

See more details on using hashes here.

File details

Details for the file dynamic_conf-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: dynamic_conf-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.3 CPython/3.8.1 Linux/5.5.7-1-MANJARO

File hashes

Hashes for dynamic_conf-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8a6b993844cda8a3f069978bd13dfebf9362678d338f9dc65859e14c0a17eda3
MD5 a59a7d523a399f32856f3c86bfb727a6
BLAKE2b-256 6365b020e40b937fc5850555b2ef63677bcdc5ff016dcdeb115ba367270c2c61

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