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.1.zip
(14.0 kB
view details)
stage-0.2.1.tar.gz
(7.9 kB
view details)
File details
Details for the file stage-0.2.1.zip
.
File metadata
- Download URL: stage-0.2.1.zip
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a687487eb883b698f950576026310d02456e14842ea1273340c543eda1cf5532 |
|
MD5 | dc681246e4f07e576d0916d8e8ff8bfd |
|
BLAKE2b-256 | e210195f67b5dd8e6ab06914430cddcaa59698d3dd2ba3d304d8e5d6fc283334 |
File details
Details for the file stage-0.2.1.tar.gz
.
File metadata
- Download URL: stage-0.2.1.tar.gz
- Upload date:
- Size: 7.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 342ab6a146aa058f4974178f7948a45e88855ea9c2821da4dc6683b19d3b89ff |
|
MD5 | b9f2b3992bca34a4a6c703da37771fec |
|
BLAKE2b-256 | 4408cb28fc711045d5b0af06c2d585a006a7f152686726598ab80c9f2c57ed4a |