Esempio n. 1
0
 def __init__(self,
              raw_config_obj=None,
              config_filename='<programmatically configured>',
              overrides=None):
     """If `raw_config_obj` is None, the default peyotl cascade for finding a configuration
     file will be used. overrides is a 2-level dictionary of section/param entries that will
     be used instead of the setting.
     The two default dicts will be used if the setting is not in overrides or the config object.
     "dominant" and "fallback" refer to whether the rank higher or lower than the default
     value in a get.*setting.*() call
     """
     # noinspection PyProtectedMember
     from peyotl.utility.get_logger import _logging_env_conf_overrides
     self._config_filename = config_filename
     self._raw = raw_config_obj
     if overrides is None:
         overrides = {}
     leco = _logging_env_conf_overrides()
     if leco:
         for k, v in leco['logging'].items():
             if k in overrides.setdefault('logging', {}):
                 # noinspection PyProtectedMember
                 from peyotl.utility.get_logger import warn_from_util_logger
                 m = 'Override keys ["logging"]["{}"] was overruled by an environmental variable'.format(
                     k)
                 warn_from_util_logger(m)
             overrides['logging'][k] = v
     self._override = overrides
Esempio n. 2
0
 def __init__(self,
              raw_config_obj=None,
              config_filename='<programmatically configured>',
              overrides=None):
     """If `raw_config_obj` is None, the default peyotl cascade for finding a configuration
     file will be used. overrides is a 2-level dictionary of section/param entries that will
     be used instead of the setting.
     The two default dicts will be used if the setting is not in overrides or the config object.
     "dominant" and "fallback" refer to whether the rank higher or lower than the default
     value in a get.*setting.*() call
     """
     # noinspection PyProtectedMember
     from peyotl.utility.get_logger import _logging_env_conf_overrides
     self._config_filename = config_filename
     self._raw = raw_config_obj
     if overrides is None:
         overrides = {}
     leco = _logging_env_conf_overrides()
     if leco:
         for k, v in leco['logging'].items():
             if k in overrides.setdefault('logging', {}):
                 # noinspection PyProtectedMember
                 from peyotl.utility.get_logger import warn_from_util_logger
                 m = 'Override keys ["logging"]["{}"] was overruled by an environmental variable'.format(k)
                 warn_from_util_logger(m)
             overrides['logging'][k] = v
     self._override = overrides
Esempio n. 3
0
 def report(self, out):
     # noinspection PyProtectedMember
     from peyotl.utility.get_logger import _logging_env_conf_overrides
     cfn = self.config_filename
     out.write('# Config read from "{f}"\n'.format(f=cfn))
     cfenv = os.environ.get('PEYOTL_CONFIG_FILE', '')
     if cfenv:
         if os.path.abspath(cfenv) == cfn:
             emsg = '#  config filepath obtained from $PEYOTL_CONFIG_FILE env var.\n'
         else:
             emsg = '#  using packaged default. The filepath from PEYOTL_CONFIG_FILE env. var. did not exist.\n'
     else:
         cfhome = os.path.expanduser("~/.peyotl/config")
         if os.path.abspath(cfhome) == cfn:
             emsg = "#  config filepath obtained via ~/.peyotl/config convention.\n"
         else:
             emsg = '#  using packaged default. PEYOTL_CONFIG_FILE was not set and ~/.peyotl/config was not found.\n'
     out.write(emsg)
     from_raw = _create_overrides_from_config(self._raw)
     k = set(self._override.keys())
     k.update(from_raw.keys())
     k = list(k)
     k.sort()
     env_log_warnings = []
     leco = _logging_env_conf_overrides(log_init_warnings=env_log_warnings)
     for w in env_log_warnings:
         out.write('# Log config warning: {}\n'.format(w))
     lecologging = leco.get('logging', {})
     for key in k:
         ov_set = self._override.get(key, {})
         fr_set = from_raw.get(key, {})
         v = set(ov_set.keys())
         v.update(fr_set.keys())
         v = list(v)
         v.sort()
         out.write('[{s}]\n'.format(s=key))
         for param in v:
             if param in ov_set:
                 if key == 'logging' and param in lecologging:
                     out.write(
                         '# {p} from env. variable\n{p} = {s}\n'.format(
                             p=param, s=str(ov_set[param])))
                 else:
                     out.write('# {p} from override\n{p} = {s}\n'.format(
                         p=param, s=str(ov_set[param])))
             else:
                 out.write('# {p} from {f}\n{p} = {s}\n'.format(
                     p=param, s=str(fr_set[param]),
                     f=self._config_filename))
Esempio n. 4
0
 def report(self, out):
     # noinspection PyProtectedMember
     from peyotl.utility.get_logger import _logging_env_conf_overrides
     cfn = self.config_filename
     out.write('# Config read from "{f}"\n'.format(f=cfn))
     cfenv = os.environ.get('PEYOTL_CONFIG_FILE', '')
     if cfenv:
         if os.path.abspath(cfenv) == cfn:
             emsg = '#  config filepath obtained from $PEYOTL_CONFIG_FILE env var.\n'
         else:
             emsg = '#  using packaged default. The filepath from PEYOTL_CONFIG_FILE env. var. did not exist.\n'
     else:
         cfhome = os.path.expanduser("~/.peyotl/config")
         if os.path.abspath(cfhome) == cfn:
             emsg = "#  config filepath obtained via ~/.peyotl/config convention.\n"
         else:
             emsg = '#  using packaged default. PEYOTL_CONFIG_FILE was not set and ~/.peyotl/config was not found.\n'
     out.write(emsg)
     from_raw = _create_overrides_from_config(self._raw)
     k = set(self._override.keys())
     k.update(from_raw.keys())
     k = list(k)
     k.sort()
     env_log_warnings = []
     leco = _logging_env_conf_overrides(log_init_warnings=env_log_warnings)
     for w in env_log_warnings:
         out.write('# Log config warning: {}\n'.format(w))
     lecologging = leco.get('logging', {})
     for key in k:
         ov_set = self._override.get(key, {})
         fr_set = from_raw.get(key, {})
         v = set(ov_set.keys())
         v.update(fr_set.keys())
         v = list(v)
         v.sort()
         out.write('[{s}]\n'.format(s=key))
         for param in v:
             if param in ov_set:
                 if key == 'logging' and param in lecologging:
                     out.write('# {p} from env. variable\n{p} = {s}\n'.format(p=param, s=str(ov_set[param])))
                 else:
                     out.write('# {p} from override\n{p} = {s}\n'.format(p=param, s=str(ov_set[param])))
             else:
                 out.write('# {p} from {f}\n{p} = {s}\n'.format(p=param,
                                                                s=str(fr_set[param]),
                                                                f=self._config_filename))