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"

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

Uploaded Source

Built Distribution

design_config-0.0.7-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: design_config-0.0.7.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.12

File hashes

Hashes for design_config-0.0.7.tar.gz
Algorithm Hash digest
SHA256 7dedb0357d98874aa925de9c1df794b9939872a5c8472553a12c2ca069f371ee
MD5 0b1a552c37668d893fcd6bbae1f0779c
BLAKE2b-256 b407bf2ced28fddc0606f257f30f01d3a605669be5a2743c652e04507cf5e716

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for design_config-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 be1fbe764b0984ba5cf2467a700dcc4dfaed914c7eaac42eb55ced3005fd8402
MD5 3a632e2f44ec748b3b65f7c1c929e183
BLAKE2b-256 a4981ec8e19f0409bca526645e3516ee600fe79bc12457efe6e4bc117bd35e86

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