# Path: cherrypy/_cpcompat.py
#     def ntob(n, encoding='ISO-8859-1'):
#     def ntou(n, encoding='ISO-8859-1'):
#     def tonative(n, encoding='ISO-8859-1'):
#     def ntob(n, encoding='ISO-8859-1'):
#     def ntou(n, encoding='ISO-8859-1'):
#     def tonative(n, encoding='ISO-8859-1'):
# def assert_native(n):
# def base64_decode(n, encoding='ISO-8859-1'):
#     def sorted(i):
#     def reversed(x):
#     def get_daemon(t):
#     def set_daemon(t, val):
#     def get_daemon(t):
#     def set_daemon(t, val):
#     def HTTPDate(timeval=None):
#     def unquote_qs(atom, encoding, errors='strict'):
#     def unquote_qs(atom, encoding, errors='strict'):
#         def json_decode(s):
#         def _json_encode(s):
#         def json_encode(value):
#     def random20():
#     def random20():
#     def next(i):
#     def __get_daemon(self):
#     def __set_daemon(self, daemon):
# class SetDaemonProperty:
# 
# Path: cherrypy/lib/reprconf.py
# def as_dict(config):
#     def __call__(self, config):
#     def __repr__(self):
#     def __copy__(self):
#     def __init__(self, file=None, **kwargs):
#     def reset(self):
#     def update(self, config):
#     def _apply(self, config):
#     def __setitem__(self, k, v):
#     def optionxform(self, optionstr):
#     def read(self, filenames):
#     def as_dict(self, raw=False, vars=None):
#     def dict_from_file(self, file):
#     def build(self, o):
#     def astnode(self, s):
#     def build_Subscript(self, o):
#     def build_CallFunc(self, o):
#     def build_List(self, o):
#     def build_Const(self, o):
#     def build_Dict(self, o):
#     def build_Tuple(self, o):
#     def build_Name(self, o):
#     def build_Add(self, o):
#     def build_Mul(self, o):
#     def build_Getattr(self, o):
#     def build_NoneType(self, o):
#     def build_UnarySub(self, o):
#     def build_UnaryAdd(self, o):
#     def build(self, o):
#     def astnode(self, s):
#     def build_Subscript(self, o):
#     def build_Index(self, o):
#     def build_Call(self, o):
#     def build_List(self, o):
#     def build_Str(self, o):
#     def build_Num(self, o):
#     def build_Dict(self, o):
#     def build_Tuple(self, o):
#     def build_Name(self, o):
#     def build_UnaryOp(self, o):
#     def build_BinOp(self, o):
#     def build_Add(self, o):
#     def build_Mult(self, o):
#     def build_USub(self, o):
#     def build_Attribute(self, o):
#     def build_NoneType(self, o):
# def unrepr(s):
# def modules(modulePath):
# def attributes(full_attribute_name):
# class NamespaceSet(dict):
# class Config(dict):
# class Parser(ConfigParser):
# class _Builder2:
# class _Builder3:


import cherrypy
from cherrypy._cpcompat import set, basestring
from cherrypy.lib import reprconf
            from cherrypy import _cpserver


# Deprecated in  CherryPy 3.2--remove in 3.3
NamespaceSet = reprconf.NamespaceSet

def merge(base, other):
    """Merge one app config (from a dict, file, or filename) into another.

    If the given config is a filename, it will be appended to
    the list of files to monitor for "autoreload" changes.
    """
    if isinstance(other, basestring):
        cherrypy.engine.autoreload.files.add(other)

    # Load other into base
    for section, value_map in reprconf.as_dict(other).items():
        if not isinstance(value_map, dict):
            raise ValueError(
                "Application config must include section headers, but the "
                "config you tried to merge doesn't have any sections. "
                "Wrap your config in another dict with paths as section "
                "headers, for example: {'/': config}.")
        base.setdefault(section, {}).update(value_map)


class Config(reprconf.Config):
    """The 'global' configuration data for the entire CherryPy process."""

    def update(self, config):
        """Update self from a dict, file or filename."""

# Path: cherrypy/_cpcompat.py
#     def ntob(n, encoding='ISO-8859-1'):
#     def ntou(n, encoding='ISO-8859-1'):
#     def tonative(n, encoding='ISO-8859-1'):
#     def ntob(n, encoding='ISO-8859-1'):
#     def ntou(n, encoding='ISO-8859-1'):
#     def tonative(n, encoding='ISO-8859-1'):
# def assert_native(n):
# def base64_decode(n, encoding='ISO-8859-1'):
#     def sorted(i):
#     def reversed(x):
#     def get_daemon(t):
#     def set_daemon(t, val):
#     def get_daemon(t):
#     def set_daemon(t, val):
#     def HTTPDate(timeval=None):
#     def unquote_qs(atom, encoding, errors='strict'):
#     def unquote_qs(atom, encoding, errors='strict'):
#         def json_decode(s):
#         def _json_encode(s):
#         def json_encode(value):
#     def random20():
#     def random20():
#     def next(i):
#     def __get_daemon(self):
#     def __set_daemon(self, daemon):
# class SetDaemonProperty:
# 
# Path: cherrypy/lib/reprconf.py
# def as_dict(config):
#     def __call__(self, config):
#     def __repr__(self):
#     def __copy__(self):
#     def __init__(self, file=None, **kwargs):
#     def reset(self):
#     def update(self, config):
#     def _apply(self, config):
#     def __setitem__(self, k, v):
#     def optionxform(self, optionstr):
#     def read(self, filenames):
#     def as_dict(self, raw=False, vars=None):
#     def dict_from_file(self, file):
#     def build(self, o):
#     def astnode(self, s):
#     def build_Subscript(self, o):
#     def build_CallFunc(self, o):
#     def build_List(self, o):
#     def build_Const(self, o):
#     def build_Dict(self, o):
#     def build_Tuple(self, o):
#     def build_Name(self, o):
#     def build_Add(self, o):
#     def build_Mul(self, o):
#     def build_Getattr(self, o):
#     def build_NoneType(self, o):
#     def build_UnarySub(self, o):
#     def build_UnaryAdd(self, o):
#     def build(self, o):
#     def astnode(self, s):
#     def build_Subscript(self, o):
#     def build_Index(self, o):
#     def build_Call(self, o):
#     def build_List(self, o):
#     def build_Str(self, o):
#     def build_Num(self, o):
#     def build_Dict(self, o):
#     def build_Tuple(self, o):
#     def build_Name(self, o):
#     def build_UnaryOp(self, o):
#     def build_BinOp(self, o):
#     def build_Add(self, o):
#     def build_Mult(self, o):
#     def build_USub(self, o):
#     def build_Attribute(self, o):
#     def build_NoneType(self, o):
# def unrepr(s):
# def modules(modulePath):
# def attributes(full_attribute_name):
# class NamespaceSet(dict):
# class Config(dict):
# class Parser(ConfigParser):
# class _Builder2:
# class _Builder3:


# Path: cherrypy/_cpconfig.py
import cherrypy
from cherrypy._cpcompat import set, basestring
from cherrypy.lib import reprconf
            from cherrypy import _cpserver



# Deprecated in  CherryPy 3.2--remove in 3.3
NamespaceSet = reprconf.NamespaceSet

def merge(base, other):
    """Merge one app config (from a dict, file, or filename) into another.

    If the given config is a filename, it will be appended to
    the list of files to monitor for "autoreload" changes.
    """
    if isinstance(other, basestring):
        cherrypy.engine.autoreload.files.add(other)

    # Load other into base
    for section, value_map in reprconf.as_dict(other).items():
        if not isinstance(value_map, dict):
            raise ValueError(
                "Application config must include section headers, but the "
                "config you tried to merge doesn't have any sections. "
                "Wrap your config in another dict with paths as section "
                "headers, for example: {'/': config}.")
        base.setdefault(section, {}).update(value_map)


class Config(reprconf.Config):
    """The 'global' configuration data for the entire CherryPy process."""

    def update(self, config):
        """Update self from a dict, file or filename."""

        if isinstance(config, basestring):