Configuration over convention.
Project description
Classy configuration:
>>> from stage import Conf >>> class defaults: ... class SMTP: ... ENABLED = False ... TO = '' ... SUBJECT = '' ... # mail server ... HOST = '' ... # from email address ... FROM = '' ... AUTH = None ... TLS = None ... class HTTP: ... ENABLED = False ... # web server host ... HOST = '' ... # web url ... URL = '' ... # http method ... METHOD = 'GET' ... class SYSLOG: ... ENABLED = False ... # syslog host ... HOST = 'localhost' ... # syslog port ... PORT = 514 ... # syslog facility ... FACILITY = 'LOG_USER' >>> class required: ... class LOG: ... NAME = 'root' ... # log level ... LEVEL = 30 # warning ... # default log formats ... DATE = '%a, %d %b %Y %H:%M:%S' ... # log entry format ... ENTRY = ( ... '%(levelname)-4s -- %(asctime)s -- %(name)s: %(message)s' ... ' (%(module)s.%(funcName)s at %(lineno)s)' ... ) ... class STREAM: ... ENABLED = True ... # redirect STDOUT to the logger? ... STDOUT = True ... # sets log level STDOUT is displayed under ... LEVEL = 30 # warning ... class ROTATE: ... ENABLED = False ... # log file path ... PATH = '' ... # number of backups to keep ... BACKUPS = 1 ... # interval to backup log file ... INTERVAL = 'h' ... ENCODING = None ... MODE = 'a' ... SIZE = 0 >>> config = Conf(defaults, required).freeze() >>> config.LOG.NAME 'root' >>> config.LOG.LEVEL 30 >>> config.LOG.DATE '%a, %d %b %Y %H:%M:%S' >>> config.STREAM.ENABLED True
Telepathic environment configuration:
>>> from stage import TwoDeep, Env, env >>> required = TwoDeep() >>> with required.LOG: ... required.NAME('root') ... required.LEVEL(30) # warning ... required.DATE('%a, %d %b %Y %H:%M:%S') ... required.ENTRY( ... '%(levelname)-4s -- %(asctime)s -- %(name)s: %(message)s (%(mo' ... 'dule)s.%(funcName)s at %(lineno)s)' ... ) >>> with required.STREAM: ... required.ENABLED(True) ... required.STDOUT(True) ... required.LEVEL(30) # warning >>> with required.ROTATE: ... required.ENABLED(False) ... required.PATH('') ... required.BACKUPS(1) ... required.INTERVAL('h') ... required.ENCODING(None) ... required.MODE('a') ... required.SIZE(0) >>> defaults = TwoDeep() >>> with defaults.SMTP: ... defaults.ENABLED(False) ... defaults.TO('') ... defaults.SUBJECT('') ... defaults.HOST('') ... defaults.FROM('') ... defaults.AUTH(None) ... defaults.TLS(None) >>> with defaults.HTTP: ... defaults.ENABLED(False) ... defaults.HOST('') ... defaults.URL('') ... defaults.METHOD('GET') >>> with defaults.SYSLOG: ... defaults.ENABLED(False) ... defaults.HOST('localhost') ... defaults.PORT(514) ... defaults.FACILITY('LOG_USER') >>> config = With(defaults, required).freeze() >>> with config.LOG as LOG: ... LOG.NAME ... 'root' ... LOG.LEVEL ... 30 >>> with config.STREAM as STREAM: ... STREAM.LEVEL ... 30 ... STREAM.STDOUT ... True >>> with config.ROTATE as ROTATE: ... ROTATE.ENABLED ... False ... ROTATE.BACKUPS ... 1 ... ROTATE.INTERVAL ... 'h'
Meanwhile, in some other module…
>>> from stage import env >>> config = env() >>> with config.LOG as LOG: ... LOG.LEVEL ... 30 ... LOG.DATE ... '%a, %d %b %Y %H:%M:%S' >>> with config.STREAM as STREAM: ... STREAM.ENABLED ... True ... STREAM.LEVEL ... 30 ... STREAM.STDOUT ... True >>> with config.ROTATE as ROTATE: ... ROTATE.ENABLED ... False ... ROTATE.BACKUPS ... 1 ... ROTATE.INTERVAL ... 'h'
Spooky.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
stage-0.2.2.zip
(14.4 kB
view details)
stage-0.2.2.tar.bz2
(8.2 kB
view details)
File details
Details for the file stage-0.2.2.zip
.
File metadata
- Download URL: stage-0.2.2.zip
- Upload date:
- Size: 14.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ad7d29ff5e52d6fed058e621fdbd67a0e83e92e4af7d62049679b53cebf3459e |
|
MD5 | 8066204c1bb35502e5ddb1b0c39fa0c1 |
|
BLAKE2b-256 | 83390fdb471133d7ea8fbc81a1ebcdc590b5ebe1aea30859a83262247b7d2bf8 |
File details
Details for the file stage-0.2.2.tar.bz2
.
File metadata
- Download URL: stage-0.2.2.tar.bz2
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1261a6585fe318f6baa0e242c0999ac81f22e47967581484be254036b9a140a |
|
MD5 | 823131056aa66c1884750df9637cfa86 |
|
BLAKE2b-256 | 15897d169a5706bf63ff732fa14e18c6d98185c6a5611dcb31264308960f164b |