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
|