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

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: design_config-0.0.6.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.6.tar.gz
Algorithm Hash digest
SHA256 3518163035eb46bc81bae1d7afa8445201f5abba37f28e9e1af012a5db55b6e6
MD5 4871a457cad0b4b4efab17472f50fb38
BLAKE2b-256 33ed29c408113adc85a5bd86400990b35d731755e490c034ae446b80b71a9e7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for design_config-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 5811adc69af767c1e70269ec1d8537f1dfbd6f1a45ef10c58881bc05cfc336f5
MD5 d6ed18340e259570cfcb92816a2b80ca
BLAKE2b-256 2e98b82847556ab47016e8a09ec380be57546f7a8005d605efb0d5d09a0c8059

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