;ò ˆ¸“Fc@s{dZdZdklZdklZlZlZdkl Z de fd„ƒYZ dZ dZ d efd „ƒYZ d S( s# Handle the configuration details. sreStructuredText(sStringIO(sSafeConfigParsersNoSectionErrors DEFAULTSECT(sTailorExceptionsConfigurationErrorcBstZdZRS(sConfiguration error(s__name__s __module__s__doc__(((sA/mnt/gmirror/ports/devel/tailor/work/tailor-0.9.29/vcpx/config.pysConfigurationErrors s [[logging]]s8[formatters] keys = console [formatter_console] format = %(asctime)s [%(levelname).1s] %(message)s datefmt = %H:%M:%S [loggers] keys = root [logger_root] level = INFO handlers = console [handlers] keys = console [handler_console] class = StreamHandler formatter = console args = (sys.stdout,) level = INFO sConfigcBsGtZdZd„Zd„Zd„Zeeed„Zed„Z RS(s Syntactic sugar around standard ConfigParser, for easier access to the configuration. To access any single project use the configuration as a dictionary. The file may be a full fledged Python script, starting with the usual ``"#!..."`` notation: in this case, it gets evaluated and its documentation becomes the actual configuration, while the functions it defines may be referenced by the `before-commit` and `after-commit` slots. This is where the logging system gets initialized, possibly merging a logging specific configuration section, introduced by a *supersection* ``[[logging]]``. cBsei|ƒh|_e}|o¶|idƒdjo4|idƒ|iƒe ƒ|iU|id}n|idƒ|iƒ}|i e ƒ}e|ƒdjo|\}}n |d}|ie|ƒƒn|o|ii|ƒn|i|o|peƒdS(Nis#!is__doc__(sSafeConfigParsers__init__sselfs namespacesNones loggingcfgsfpsreadsseeksglobalssconfigssplitsLOGGING_SUPER_SECTIONscfgsslens tailorcfgsreadfpsStringIOsdefaultss _defaultssupdates _setupLoggingsBASIC_LOGGING_CONFIG(sselfsfpsdefaultss loggingcfgscfgss tailorcfgsconfig((sA/mnt/gmirror/ports/devel/tailor/work/tailor-0.9.29/vcpx/config.pys__init__Cs$      c!Csbdk}dk}tƒ}|it|ƒ|iƒ|i ddƒ}|o·|i dƒ}h}xŸ|D]“} d| }|i|ƒ}d|jo|i |ddƒ} nt} d|jo|i |ddƒ}nt}|i| |ƒ}|||