pyramid-auto-env

Pyramid Autoenv


Keywords
autoenv, pyramid
License
MIT
Install
pip install pyramid-auto-env==0.1.2

Documentation

Build Status Coverage Status Pypi Version Python Version

Pyramid auto env

A pyramid library to help overwrite ini configs with environment variables.

Getting Started

These instructions will help you install library and use its features.

Installing

pip install pyramid-auto-env

Running the tests

Install test dependencies

pip install -e ".[test]"

Run test

pytest

Using

Replacing the mail.password of the inifile with environment variable

INI FILE

###
# app configuration
# https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html
###

[app:main]
use = egg:myproject

pyramid.reload_templates = true
pyramid.debug_authorization = false
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.default_locale_name = en
pyramid.includes =
    pyramid_debugtoolbar

mail.password = local

# By default, the toolbar only appears for clients from IP addresses
# '127.0.0.1' and '::1'.
# debugtoolbar.hosts = 127.0.0.1 ::1

###
# wsgi server configuration
###

[server:main]
use = egg:waitress#main
listen = localhost:6543

###
# logging configuration
# https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html
###

[loggers]
keys = root, pyramid_auto_env

[handlers]
keys = console

[formatters]
keys = generic

[logger_root]
level = INFO
handlers = console

[logger_pyramid_auto_env]
level = INFO
handlers = console
qualname = pyramid_auto_env
propagate = 0

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s

ENVIRONMENT

export MYPROJ_MAIL_PASSWORD = S3kr3t

CODE

from pyramid.config import Configurator
from pyramid_auto_env import get_env_or_ini

@autoenv_settings(prefix='myproj')
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    config = Configurator(settings=settings)
    config.include('pyramid_jinja2')
    config.add_static_view('static', 'static', cache_max_age=3600)
    config.add_route('home', '/')
    config.scan()
    return config.make_wsgi_app()

ENVVAR Format

The environment variable lookup will search for <prefix.upper()>_<settings_name.upper().replace(['.-', '_'])>

Examples (prefix=MYPROJ):

host.url -> MYPROJ_HOST_URL
mail-smtp -> MYPROJ_MAIL_SMTP
my.project.super-secret -> MYPROJ_MY_PROJECT_SUPER_SECRET