Skip to main content

Smart tiny config library for flask-like config

Project description

desing_config.py

Smart tiny config library for flask-like config

How to install

pip install design-config

You can find source code of library on GitHub

How to use

import os
from design_config import DesignConfig, D, ___

class Config(DesignConfig):

    """ is D("") """
    PROP_ZERO = ___
    
    """ is 'hello' """
    PROP_ONE = 'Hello'

    """ 'World' if in init_data_dict not PROP_TWO
    As usually init_data_dict is os.environ """
    PROP_TWO = D('World')

    """ 'Hello World!' or 'hello {PROP_TWO}!' for any PROP_TWO """
    PROP_THREE = '{PROP_ONE} {PROP_TWO}!'


config = Config()

If your global environment variables contain $PROP_TWO , it will be replaced in the config with the appropriate value. Otherwise, it will remain by default (World)

D means "default"

config.PROP_THREE # "Hello World!"

config['PROP_THREE'] # "Hello World!"
config['{PROP_THREE}!!'] # "Hello World!!!"
config['{PROP_FOUR}'] # "PROP_FOUR"

config('{PROP_ONE} Tom') # "Hello Tom"
config('PROP_FOUR', 'London') # "London"
config('PROP_TWO', 'London') # "World"
config('{PROP_ZERO}', 'London') # ""
config('{PROP_FOUR}', 'London') # "PROP_FOUR"

config.path('{PROP_ONE}', 'some_folder', '{PROP_TWO}2') # os.path.join("Hello","some_folder","World2")

Also you can use int, bool, and float values:

class Config(DesignConfig):

    PROP_FIVE = D(55)

    PROP_SIX = D(True)

    PROP_SEVEN = D(7.7)

config = Config({
    'PROP_FIVE': '5', 
    'PROP_SIX': 'FALSE',
    'PROP_SEVEN': '7e7'
})

config.PROP_FIVE # 5
config.PROP_SIX # False
config.PROP_SEVEN # 7e7

You can use DesignConfig with Flask like that:

class MyFlaskConfig(DesignConfig):

    VERSION = '2'

    FLASK_DEBUG = D(True)
    IS_PRODUCTION = D(False)
    DEBUG = D(True)

    PROJECT_PATH = D('/base')

    REDIS_HOST = D('localhost')
    REDIS_PORT = D('6379')

    """..."""

config = MyFlaskConfig()

my_flask_app = Flask(__name__, static_folder='static', static_url_path='')
my_flask_app.config.from_object(config)

"""..."""

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

design_config-0.0.4.tar.gz (3.6 kB view details)

Uploaded Source

Built Distribution

design_config-0.0.4-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

Details for the file design_config-0.0.4.tar.gz.

File metadata

  • Download URL: design_config-0.0.4.tar.gz
  • Upload date:
  • Size: 3.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for design_config-0.0.4.tar.gz
Algorithm Hash digest
SHA256 ed0b6a0fd39dee0df389e8971467b3d3c97340506964851ff1e071cc728363db
MD5 1b68df8ddda5a62e6691424a46e2576f
BLAKE2b-256 024d071ceeed71ab341abfd194a63e30639b34ca1862f5a45c6e6713ec3a658c

See more details on using hashes here.

File details

Details for the file design_config-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for design_config-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 940aa38e139bf03d86d3a826f335846960fe200bedd120482150db470d4dcdc4
MD5 8acf23d672c0105a1645608ca5fea31b
BLAKE2b-256 6754681ad1dce7baf349e5561ae98e843c462aa4e81629c1f3668bb59dd312b2

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