Skip to main content

Metaclass for handling configuration class objects using environment variables

Project description

https://github.com/gtmanfred/figenv/workflows/Tests/badge.svg https://img.shields.io/codecov/c/github/gtmanfred/figenv https://img.shields.io/pypi/v/figenv https://img.shields.io/pypi/l/figenv https://img.shields.io/pypi/dm/figenv

Metaclass for handling configuration class objects using environment variables.

If an environment variable is specified, the metaclass will pull the variable from the environment, the variable defined on the class will be used.

This was built to be a dropin replacement for flask-env but supporting change environment variables after the meta class is loaded.

Config

There are 2 configuration options, that are set on the base class object.

ENV_LOAD_ALL = <True/False>

Setting this on the class will allow loading any environment variable even if it is not set on the base class.

ENV_PREFIX = <string>

Setting this will will be a prefix for variables in the environment.

Install

This should just be pip installed

python3 -m pip install figenv

Usage

The basic usecase is below.

 import os

 import figenv

 class Config(metaclass=figenv.MetaConfig):

     ENV_LOAD_ALL = True
     ENV_PREFIX = 'ROCKSTEADY_'

     BLAH = True
     TIMEOUT = 5
     POSTGRES_HOST = 'localhost'
     POSTGRES_PORT = 5432
     POSTGRES_USER = 'bebop'
     POSTGRES_PASS = 'secret'
     POSTGRES_DB = 'main'

     def SQLALCHEMY_DATABASE_URI(cls):
         return 'postgresql://{user}:{secret}@{host}:{port}/{database}?sslmode=require'.format(
             user=cls.POSTGRES_USER,
             secret=cls.POSTGRES_PASS,
             host=cls.POSTGRES_HOST,
             port=cls.POSTGRES_PORT,
             database=cls.POSTGRES_DATABASE,
         )

assert Config.TIMEOUT == 5
assert Config.BLAH is True
assert Config.SQLALCHEMY_DATABASE_URI == 'postgresql://bebop:secret@localhost:5432/public?sslmode=require'
try:
    Config.WHAT
except AttributeError:
    pass

os.environ.update({
    'ROCKSTEADY_BLAH': 'false',
    'ROCKSTEADY_TIMEOUT': '15',
    'ROCKSTEADY_WHAT': '2.9',
    'ROCKSTEADY_SQLALCHEMY_DATABASE_URI': 'postgres://localhost:5432/db',
})

assert Config.TIMEOUT == 15
assert Config.BLAH is False
assert Config.WHAT == 2.9
assert Config.SQLALCHEMY_DATABASE_URI == 'postgres://localhost:5432/db'

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

figenv-0.2.0.tar.gz (3.6 kB view details)

Uploaded Source

Built Distribution

figenv-0.2.0-py3-none-any.whl (3.3 kB view details)

Uploaded Python 3

File details

Details for the file figenv-0.2.0.tar.gz.

File metadata

  • Download URL: figenv-0.2.0.tar.gz
  • Upload date:
  • Size: 3.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.2

File hashes

Hashes for figenv-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a3bf543d26dbcfbfcae7c57531ba74a1af46c9d1e13525601bc6149fcd44edc5
MD5 50894eaaa81ad22361108d0687aae872
BLAKE2b-256 4436feefb059e926f14db9c3a3325387f4f6e30d563bd71486a674606637ebc4

See more details on using hashes here.

File details

Details for the file figenv-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: figenv-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 3.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.2

File hashes

Hashes for figenv-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 371d6a51cba76b59ef6d02d4fe7d837dd8f720ccc3a1d22439eabc4a526c8008
MD5 9efed98b5481319eaff5bc078d8d4a61
BLAKE2b-256 eb75fa58090b9be6a62b47bd72b2d653b927050270e4841e14547c4fdaaa0f1a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page