This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

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.

Release History

Release History

This version
History Node

0.2.2

History Node

0.2.1

History Node

0.0.1

Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
stage-0.2.2.tar.bz2 (8.2 kB) Copy SHA256 Checksum SHA256 Source Oct 3, 2012
stage-0.2.2.zip (14.4 kB) Copy SHA256 Checksum SHA256 Source Oct 3, 2012

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting