home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import ConfigParser
-
- try:
- set
- except NameError:
- from sets import Set as set
-
- import sys
- import cherrypy
- environments = {
- 'staging': {
- 'engine.autoreload_on': False,
- 'checker.on': False,
- 'tools.log_headers.on': False,
- 'request.show_tracebacks': False },
- 'production': {
- 'engine.autoreload_on': False,
- 'checker.on': False,
- 'tools.log_headers.on': False,
- 'request.show_tracebacks': False,
- 'log.screen': False },
- 'embedded': {
- 'engine.autoreload_on': False,
- 'checker.on': False,
- 'tools.log_headers.on': False,
- 'request.show_tracebacks': False,
- 'log.screen': False,
- 'engine.SIGHUP': None,
- 'engine.SIGTERM': None },
- 'test_suite': {
- 'engine.autoreload_on': False,
- 'checker.on': False,
- 'tools.log_headers.on': False,
- 'request.show_tracebacks': True,
- 'log.screen': False } }
-
- def as_dict(config):
- if isinstance(config, basestring):
- config = _Parser().dict_from_file(config)
- elif hasattr(config, 'read'):
- config = _Parser().dict_from_file(config)
-
- return config
-
-
- def merge(base, other):
- if isinstance(other, basestring):
- cherrypy.engine.autoreload.files.add(other)
-
- for section, value_map in as_dict(other).iteritems():
- base.setdefault(section, { }).update(value_map)
-
-
-
- class NamespaceSet(dict):
-
- def __call__(self, config):
- ns_confs = { }
- for k in config:
- if '.' in k:
- (ns, name) = k.split('.', 1)
- bucket = ns_confs.setdefault(ns, { })
- bucket[name] = config[k]
- continue
-
- for ns, handler in self.iteritems():
- exit = getattr(handler, '__exit__', None)
- if exit:
- callable = handler.__enter__()
- no_exc = True
-
- try:
- for k, v in ns_confs.get(ns, { }).iteritems():
- callable(k, v)
- except:
- no_exc = False
- if exit is None:
- raise
- exit is None
- if not exit(*sys.exc_info()):
- raise
- exit(*sys.exc_info())
- finally:
- if no_exc and exit:
- exit(None, None, None)
-
-
- continue
- for k, v in ns_confs.get(ns, { }).iteritems():
- handler(k, v)
-
-
-
-
- def __repr__(self):
- return '%s.%s(%s)' % (self.__module__, self.__class__.__name__, dict.__repr__(self))
-
-
- def __copy__(self):
- newobj = self.__class__()
- newobj.update(self)
- return newobj
-
- copy = __copy__
-
-
- class Config(dict):
- defaults = {
- 'tools.log_tracebacks.on': True,
- 'tools.log_headers.on': True,
- 'tools.trailing_slash.on': True }
- namespaces = NamespaceSet(**{
- 'server': (lambda k, v: setattr(cherrypy.server, k, v)),
- 'log': (lambda k, v: setattr(cherrypy.log, k, v)),
- 'checker': (lambda k, v: setattr(cherrypy.checker, k, v)) })
-
- def __init__(self):
- self.reset()
-
-
- def reset(self):
- self.clear()
- dict.update(self, self.defaults)
-
-
- def update(self, config):
- if isinstance(config, basestring):
- cherrypy.engine.autoreload.files.add(config)
- config = _Parser().dict_from_file(config)
- elif hasattr(config, 'read'):
- config = _Parser().dict_from_file(config)
- else:
- config = config.copy()
- if isinstance(config.get('global', None), dict):
- if len(config) > 1:
- cherrypy.checker.global_config_contained_paths = True
-
- config = config['global']
-
- which_env = config.get('environment')
- if which_env:
- env = environments[which_env]
- for k in env:
- if k not in config:
- config[k] = env[k]
- continue
-
-
- if 'tools.staticdir.dir' in config:
- config['tools.staticdir.section'] = 'global'
-
- dict.update(self, config)
- self.namespaces(config)
-
-
- def __setitem__(self, k, v):
- dict.__setitem__(self, k, v)
- self.namespaces({
- k: v })
-
-
-
- def _engine_namespace_handler(k, v):
- engine = cherrypy.engine
- if k == 'autoreload_on':
- if v:
- engine.autoreload.subscribe()
- else:
- engine.autoreload.unsubscribe()
- elif k == 'autoreload_frequency':
- engine.autoreload.frequency = v
- elif k == 'autoreload_match':
- engine.autoreload.match = v
- elif k == 'reload_files':
- engine.autoreload.files = set(v)
- elif k == 'deadlock_poll_freq':
- engine.timeout_monitor.frequency = v
- elif k == 'SIGHUP':
- engine.listeners['SIGHUP'] = set([
- v])
- elif k == 'SIGTERM':
- engine.listeners['SIGTERM'] = set([
- v])
- elif '.' in k:
- (plugin, attrname) = k.split('.', 1)
- plugin = getattr(engine, plugin)
- setattr(plugin, attrname, v)
- else:
- setattr(engine, k, v)
-
- Config.namespaces['engine'] = _engine_namespace_handler
-
- def _tree_namespace_handler(k, v):
- cherrypy.tree.graft(v, v.script_name)
- if not v.script_name:
- pass
- cherrypy.engine.log('Mounted: %s on %s' % (v, '/'))
-
- Config.namespaces['tree'] = _tree_namespace_handler
-
- class _Parser(ConfigParser.ConfigParser):
-
- def optionxform(self, optionstr):
- return optionstr
-
-
- def read(self, filenames):
- if isinstance(filenames, basestring):
- filenames = [
- filenames]
-
- for filename in filenames:
- fp = open(filename)
-
- try:
- self._read(fp, filename)
- finally:
- fp.close()
-
-
-
-
- def as_dict(self, raw = False, vars = None):
- unrepr = unrepr
- import cherrypy.lib
- result = { }
- for section in self.sections():
- if section not in result:
- result[section] = { }
-
- for option in self.options(section):
- value = self.get(section, option, raw, vars)
-
- try:
- value = unrepr(value)
- except Exception:
- x = None
- msg = 'Config error in section: %r, option: %r, value: %r. Config values must be valid Python.' % (section, option, value)
- raise ValueError(msg, x.__class__.__name__, x.args)
-
- result[section][option] = value
-
-
- return result
-
-
- def dict_from_file(self, file):
- if hasattr(file, 'read'):
- self.readfp(file)
- else:
- self.read(file)
- return self.as_dict()
-
-
- del ConfigParser
-