Skip to main content

Yaml Settings Configuration Module

Project description

A Yaml Settings Configuration Module.

A library to help manage project settings, without having to worry about accidentally checking non-public information, like api keys. Along with simple environment variable support.

Example setup

Python Code - Base Functions:

app_settings = load('defaults.yml')
update_from_env(test_settings)
update_from_file(app_defaults, 'settings.yml')
user = app_settings.myproj.databases.primary_sql.user

Python Code - YamlSettings Helper Class:

project_settings = YamlSettings('defaults.yml',
                                'settings.yml',
                                default_section='myproj')
base_settings = project_settings.get_settings()
user = base_settings.databases.primary_sql.user

defaults.yml - Default Settings for Project (tracked):

---
# Program Defaults, do not edit this file!!!
# All values should be overridden in the following ways:
# 1. In the 'settings.yaml' file.
# 2. With environment variables. Example myproj.databases.primary_sql.user can
#    be overridden with MYPROJ_DATABASES_PRIMARY_SQL_USER.
myproj:
  databases:
    primary_sql:
      user: my_user
      passwd: password_here
      host: db-bouncer-01.postgres.com:5432
      db: postgres
      compress: true
      engine: postgresql
    splunk:
      user: splunk_user_here
      passwd: password here
      host: splunk.com
      port: 8089
    redis:
      redis_host: 127.0.0.1
      redis_port: 6379
  flask_config:
    DEBUG: False
    SECRET_KEY: hard key to guess and keep values secret
  debug_sql: false
  debug_profiler: false
  cache_routes: true
  logging_config:
    version: 1
    disable_existing_loggers: False
    formatters:
      light:
        format: '%(asctime)s [%(levelname).1s] %(name)s: %(message)s'
        datefmt: '%Y-%m-%d %H:%M:%S'
      verbose:
        format: '%(asctime)s %(levelname) 8s(%(name)s): %(message)s'
        datefmt: ''
    handlers:
      console:
        class: logging.StreamHandler
        level: DEBUG
        formatter: light
        stream: ext://sys.stdout
      slack:
        class: api.slackLogHandler.BufferingSlackWebHookHandler
        level: INFO
        formatter: light
        capacity: 100
        organization: KyleJamesWalker
        token: need_this
        channel: '#services'
        username: my-proj-logger
        icon_emoji: ':happy_panda:'
      noid:
        class: logging.NullHandler
    loggers:
      requests:
        level: NOTSET
        handlers: [noid]
        propagate: no
    root:
      level: NOTSET
      handlers:
        - console

settings.yml - Custom Settings (untracked):

---
myproj:
  databases:
    primary_sql:
      user: root
      passwd: god
    splunk:
      user: real_user
      passwd: pa$$word
  flask_config:
    SECRET_KEY: sdfasjksdfASFAS23423f@#$%!$#VR@%UQ%
  logging_config:
    handlers:
      slack:
        token: 123243294832104981209
    root:
      handlers:
        - console
        - slack

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

yamlsettings-0.2.0.tar.gz (6.4 kB view details)

Uploaded Source

File details

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

File metadata

File hashes

Hashes for yamlsettings-0.2.0.tar.gz
Algorithm Hash digest
SHA256 c66ebff40eb56c9385ce6fe881e29deaf35e9892b3dcedb407607431505e81b8
MD5 5f72c115a2dce5649251c7c4a960bc20
BLAKE2b-256 44961172e8e7b7c27aa00144251b641be0137be19ffbe4511972968c320adcc7

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