本文整理汇总了Python中six.moves.configparser.Error方法的典型用法代码示例。如果您正苦于以下问题:Python configparser.Error方法的具体用法?Python configparser.Error怎么用?Python configparser.Error使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类six.moves.configparser
的用法示例。
在下文中一共展示了configparser.Error方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: build_egg
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def build_egg(self):
try:
egg, tmpdir = _build_egg(self.scrapy_cfg_path)
except ScrapyCfgParseError as err:
self.logger.error(err)
self.scrapy_cfg_parse_error = err
return
except CalledProcessError as err:
self.logger.error(err)
self.build_egg_subprocess_error = err
return
scrapy_cfg_dir = os.path.dirname(self.scrapy_cfg_path)
copyfile(egg, os.path.join(scrapy_cfg_dir, self.eggname))
copyfile(egg, self.eggpath)
rmtree(tmpdir)
self.logger.debug("Egg file saved to: %s", self.eggpath)
示例2: init_logger
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def init_logger(name):
"""Initialize logger.
"""
try:
# logging configuration files in json format
conf = treadmill.logging.load_logging_conf(name)
logging.config.dictConfig(conf)
except configparser.Error:
# TODO: Incidentally, tempfile adds 2M memory, and it is used only
# in case of exception. Need to move this elsewhere.
import tempfile
with tempfile.NamedTemporaryFile(delete=False, mode='w') as f:
traceback.print_exc(file=f)
click.echo('Error parsing log conf: {name}'.format(name=name),
err=True)
示例3: extract_wininst_cfg
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def extract_wininst_cfg(dist_filename):
"""Extract configuration data from a bdist_wininst .exe
Returns a configparser.RawConfigParser, or None
"""
f = open(dist_filename, 'rb')
try:
endrec = zipfile._EndRecData(f)
if endrec is None:
return None
prepended = (endrec[9] - endrec[5]) - endrec[6]
if prepended < 12: # no wininst data here
return None
f.seek(prepended - 12)
tag, cfglen, bmlen = struct.unpack("<iii", f.read(12))
if tag not in (0x1234567A, 0x1234567B):
return None # not a valid tag
f.seek(prepended - (12 + cfglen))
init = {'version': '', 'target_version': ''}
cfg = configparser.RawConfigParser(init)
try:
part = f.read(cfglen)
# Read up to the first null byte.
config = part.split(b'\0', 1)[0]
# Now the config is in bytes, but for RawConfigParser, it should
# be text, so decode it.
config = config.decode(sys.getfilesystemencoding())
cfg.readfp(six.StringIO(config))
except configparser.Error:
return None
if not cfg.has_section('metadata') or not cfg.has_section('Setup'):
return None
return cfg
finally:
f.close()
示例4: load_config_file
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def load_config_file():
''' Load Config File order(first found is used):
ENV,CWD,HOME, /etc/ansible '''
p = configparser.ConfigParser()
path0 = os.getenv("%s_CONFIG" % PROG_NAME.upper(), None)
if path0 is not None:
path0 = os.path.expanduser(path0)
if os.path.isdir(path0):
path0 += "/%s.cfg" % PROG_NAME
try:
path1 = os.getcwd() + "/%s.cfg" % PROG_NAME
except OSError:
path1 = None
path2 = os.path.expanduser("~/.%s.cfg" % PROG_NAME)
path3 = "/etc/%s/%s.cfg" % (PROG_NAME, PROG_NAME)
for path in [path0, path1, path2, path3]:
if path is not None and os.path.exists(path):
try:
p.read(path)
except configparser.Error as e:
print("Error reading config file: \n{0}".format(e))
sys.exit(1)
return p, path
return None, ''
示例5: parse_scrapy_cfg
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def parse_scrapy_cfg(self):
for (idx, scrapy_cfg) in enumerate(self.scrapy_cfg_list):
folder = self.folders[idx]
key = '%s (%s)' % (folder, self.modification_times[idx])
project = folder_project_dict.get(key, '')
if project:
self.projects.append(project)
self.logger.debug('Hit %s, project %s', key, project)
continue
else:
project = folder
try:
# lib/configparser.py: def get(self, section, option, *, raw=False, vars=None, fallback=_UNSET):
# projectname/scrapy.cfg: [deploy] project = demo
# PY2: get() got an unexpected keyword argument 'fallback'
# project = get_config(scrapy_cfg).get('deploy', 'project', fallback=folder) or folder
project = get_config(scrapy_cfg).get('deploy', 'project')
except ScrapyCfgParseError as err:
self.logger.error("%s parse error: %s", scrapy_cfg, err)
finally:
project = project or folder
self.projects.append(project)
folder_project_dict[key] = project
self.logger.debug('Add %s, project %s', key, project)
keys_all = list(folder_project_dict.keys())
keys_exist = ['%s (%s)' % (_folder, _modification_time)
for (_folder, _modification_time) in zip(self.folders, self.modification_times)]
diff = set(keys_all).difference(set(keys_exist))
for key in diff:
self.logger.debug('Pop %s, project %s', key, folder_project_dict.pop(key))
self.logger.debug(self.json_dumps(folder_project_dict))
self.logger.debug('folder_project_dict length: %s', len(folder_project_dict))
示例6: has_option_tags
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def has_option_tags(self, section, option, tags):
"""
Supplement to ConfigParser.ConfigParser.has_option().
This will search for an option in [section] and if it doesn't find it
will also try in [section-tag] for each value in tags.
Returns True if the option is found and false if not.
Parameters
-----------
self : ConfigParser object
The ConfigParser object (automatically passed when this is appended
to the ConfigParser class)
section : string
The section of the ConfigParser object to read
option : string
The ConfigParser option to look for
tags : list of strings
The names of the subsection to look in, if not found in [section]
Returns
--------
Boolean
Is the option in the section or [section-tag] (for tag in tags)
"""
try:
self.get_opt_tags(section, option, tags)
return True
except ConfigParser.Error:
return False
示例7: raw_config_parse
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def raw_config_parse(config_filename, parse_subsections=True):
"""Returns the parsed INI config contents.
Each section name is a top level key.
:param config_filename: The name of the INI file to parse
:param parse_subsections: If True, parse indented blocks as
subsections that represent their own configuration dictionary.
For example, if the config file had the contents::
s3 =
signature_version = s3v4
addressing_style = path
The resulting ``raw_config_parse`` would be::
{'s3': {'signature_version': 's3v4', 'addressing_style': 'path'}}
If False, do not try to parse subsections and return the indented
block as its literal value::
{'s3': '\nsignature_version = s3v4\naddressing_style = path'}
:returns: A dict with keys for each profile found in the config
file and the value of each key being a dict containing name
value pairs found in that profile.
:raises: ConfigNotFound, ConfigParseError
"""
config = {}
path = config_filename
if path is not None:
path = os.path.expandvars(path)
path = os.path.expanduser(path)
if not os.path.isfile(path):
raise botocore.exceptions.ConfigNotFound(path=path)
cp = configparser.RawConfigParser()
try:
cp.read(path)
except configparser.Error:
raise botocore.exceptions.ConfigParseError(path=path)
else:
for section in cp.sections():
config[section] = {}
for option in cp.options(section):
config_value = cp.get(section, option)
if parse_subsections and config_value.startswith('\n'):
# Then we need to parse the inner contents as
# hierarchical. We support a single level
# of nesting for now.
try:
config_value = _parse_nested(config_value)
except ValueError:
raise botocore.exceptions.ConfigParseError(
path=path)
config[section][option] = config_value
return config
示例8: _get_value
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def _get_value(self, args_key, conf_section, conf_key, default=None, is_bool_val=False,
deprecated=False):
# FIXME: this is too bloated: split it into separate classes
# and implement it as mixins
def get_value_from_kwargs():
return self.kwargs.get(args_key)
def get_value_from_cli_args():
return getattr(self.args, args_key, None)
def get_value_from_conf():
try:
return self.scp.get(conf_section, conf_key)
except configparser.Error:
return None
retrieval_order = [
get_value_from_kwargs,
get_value_from_cli_args,
get_value_from_conf,
]
for func in retrieval_order:
value = func()
if value is not None:
# Only print deprecation warnings for cli or file arguments
if deprecated and func in (get_value_from_cli_args, get_value_from_conf):
logger.warning("user configuration key '%s' in section '%s' is ignored in "
"arrangement %s and later. it has been deprecated in "
"favor of the value in the reactor_config_map",
args_key, conf_section, REACTOR_CONFIG_ARRANGEMENT_VERSION)
break
else: # we didn't break
return default
if is_bool_val:
try:
int_val = int(value)
except ValueError:
if value.lower() == 'true':
return True
return False
except TypeError:
return False
else:
return bool(int_val)
else:
return value
示例9: get_oauth2_token
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def get_oauth2_token(self):
# token overrides token_file
# either in kwargs overrides cli args
# either in cli args overrides conf
key_names = ['token', 'token_file']
value = None
found_key = None
for key in key_names:
value = self.kwargs.get(key)
if value is not None:
found_key = key
break
if value is None:
for key in key_names:
value = getattr(self.args, key, None)
if value is not None:
found_key = key
break
if value is None:
for key in key_names:
try:
value = self.scp.get(self.conf_section, key)
except configparser.Error:
pass
else:
found_key = key
break
if value is None:
instance_token_file = utils.get_instance_token_file_name(self.conf_section)
if os.path.exists(instance_token_file):
found_key = 'token_file'
value = instance_token_file
# For token_file, read the file
if found_key == 'token_file':
token_file = value
try:
with open(token_file, 'r') as token_fd:
value = token_fd.read().strip()
except IOError as ex:
logger.error("exception caught while reading %s: %r",
token_file, ex)
return value
示例10: get_rm_conf_old
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def get_rm_conf_old(self):
"""
Get excluded files config from remove_file.
"""
# Convert config object into dict
self.using_new_format = False
parsedconfig = ConfigParser.RawConfigParser()
if not self.remove_file:
# no filename defined, return nothing
logger.debug('remove_file is undefined')
return None
if not os.path.isfile(self.remove_file):
logger.debug('%s not found. No data files, commands,'
' or patterns will be ignored, and no keyword obfuscation will occur.', self.remove_file)
return None
try:
verify_permissions(self.remove_file)
except RuntimeError as e:
if self.config.validate:
# exit if permissions invalid and using --validate
raise RuntimeError('ERROR: %s' % e)
logger.warning('WARNING: %s', e)
try:
parsedconfig.read(self.remove_file)
sections = parsedconfig.sections()
if not sections:
# file has no sections, skip it
logger.debug('Remove.conf exists but no parameters have been defined.')
return None
if sections != ['remove']:
raise RuntimeError('ERROR: invalid section(s) in remove.conf. Only "remove" is valid.')
expected_keys = ('commands', 'files', 'patterns', 'keywords')
rm_conf = {}
for item, value in parsedconfig.items('remove'):
if item not in expected_keys:
raise RuntimeError('ERROR: Unknown key in remove.conf: ' + item +
'\nValid keys are ' + ', '.join(expected_keys) + '.')
if six.PY3:
rm_conf[item] = value.strip().encode('utf-8').decode('unicode-escape').split(',')
else:
rm_conf[item] = value.strip().decode('string-escape').split(',')
self.rm_conf = rm_conf
except ConfigParser.Error as e:
# can't parse config file at all
logger.debug(e)
logger.debug('To configure using YAML, please use file-redaction.yaml and file-content-redaction.yaml.')
raise RuntimeError('ERROR: Cannot parse the remove.conf file.\n'
'See %s for more information.' % self.config.logging_file)
logger.warning('WARNING: remove.conf is deprecated. Please use file-redaction.yaml and file-content-redaction.yaml. See https://access.redhat.com/articles/4511681 for details.')
return self.rm_conf
示例11: _load_config_file
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def _load_config_file(self, fname=None):
'''
Load config from config file. If fname is not specified,
config is loaded from the file named by InsightsConfig.conf
'''
parsedconfig = ConfigParser.RawConfigParser()
try:
parsedconfig.read(fname or self.conf)
except ConfigParser.Error:
if self._print_errors:
sys.stdout.write(
'ERROR: Could not read configuration file, '
'using defaults\n')
return
try:
if parsedconfig.has_section(constants.app_name):
d = dict(parsedconfig.items(constants.app_name))
elif parsedconfig.has_section('redhat-access-insights'):
d = dict(parsedconfig.items('redhat-access-insights'))
else:
raise ConfigParser.Error
except ConfigParser.Error:
if self._print_errors:
sys.stdout.write(
'ERROR: Could not read configuration file, '
'using defaults\n')
return
for key in d:
try:
if key == 'retries' or key == 'cmd_timeout':
d[key] = parsedconfig.getint(constants.app_name, key)
if key == 'http_timeout':
d[key] = parsedconfig.getfloat(constants.app_name, key)
if key in DEFAULT_BOOLS and isinstance(
d[key], six.string_types):
d[key] = parsedconfig.getboolean(constants.app_name, key)
except ValueError as e:
if self._print_errors:
sys.stdout.write(
'ERROR: {0}.\nCould not read configuration file, '
'using defaults\n'.format(e))
return
self._update_dict(d)
示例12: handle_exceptions
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def handle_exceptions(exclist):
"""Decorator that will handle exceptions and output friendly messages."""
def wrap(f):
"""Returns decorator that wraps/handles exceptions."""
exclist_copy = copy.copy(exclist)
@functools.wraps(f)
def wrapped_f(*args, **kwargs):
"""Wrapped function."""
if not exclist_copy:
f(*args, **kwargs)
else:
exc, handler = exclist_copy.pop(0)
try:
wrapped_f(*args, **kwargs)
except exc as err:
if isinstance(handler, six.string_types):
click.echo(handler, err=True)
elif handler is None:
click.echo(str(err), err=True)
else:
click.echo(handler(err), err=True)
sys.exit(EXIT_CODE_DEFAULT)
@functools.wraps(f)
def _handle_any(*args, **kwargs):
"""Default exception handler."""
try:
return wrapped_f(*args, **kwargs)
except click.UsageError as usage_err:
click.echo('Usage error: %s' % str(usage_err), err=True)
sys.exit(EXIT_CODE_DEFAULT)
except Exception as unhandled: # pylint: disable=W0703
# TODO: see similar comment as to why lazy import tempfile.
import tempfile
with tempfile.NamedTemporaryFile(delete=False, mode='w') as f:
traceback.print_exc(file=f)
click.echo('Error: %s [ %s ]' % (unhandled, f.name),
err=True)
sys.exit(EXIT_CODE_DEFAULT)
return _handle_any
return wrap
示例13: get_opt_tags
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def get_opt_tags(self, section, option, tags):
"""
Supplement to ConfigParser.ConfigParser.get(). This will search for an
option in [section] and if it doesn't find it will also try in
[section-tag] for every value of tag in tags.
Will raise a ConfigParser.Error if it cannot find a value.
Parameters
-----------
self : ConfigParser object
The ConfigParser object (automatically passed when this is appended
to the ConfigParser class)
section : string
The section of the ConfigParser object to read
option : string
The ConfigParser option to look for
tags : list of strings
The name of subsections to look in, if not found in [section]
Returns
--------
string
The value of the options being searched for
"""
# Need lower case tag name; also exclude cases with tag=None
if tags:
tags = [tag.lower() for tag in tags if tag is not None]
try:
return self.get(section, option)
except ConfigParser.Error:
err_string = "No option '%s' in section [%s] " %(option,section)
if not tags:
raise ConfigParser.Error(err_string + ".")
return_vals = []
sub_section_list = []
for sec_len in range(1, len(tags)+1):
for tag_permutation in itertools.permutations(tags, sec_len):
joined_name = '-'.join(tag_permutation)
sub_section_list.append(joined_name)
section_list = ["%s-%s" %(section, sb) for sb in sub_section_list]
err_section_list = []
for sub in sub_section_list:
if self.has_section('%s-%s' %(section, sub)):
if self.has_option('%s-%s' %(section, sub), option):
err_section_list.append("%s-%s" %(section, sub))
return_vals.append(self.get('%s-%s' %(section, sub),
option))
# We also want to recursively go into sections
if not return_vals:
err_string += "or in sections [%s]." \
%("] [".join(section_list))
raise ConfigParser.Error(err_string)
if len(return_vals) > 1:
err_string += "and multiple entries found in sections [%s]."\
%("] [".join(err_section_list))
raise ConfigParser.Error(err_string)
return return_vals[0]
示例14: update_current_retention_level
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def update_current_retention_level(self, value):
"""Set a new value for the current retention level.
This updates the value of self.retain_files for an updated value of the
retention level.
Parameters
-----------
value : int
The new value to use for the retention level.
"""
# Determine the level at which output files should be kept
self.current_retention_level = value
try:
global_retention_level = \
self.cp.get_opt_tags("workflow", "file-retention-level",
self.tags+[self.name])
except ConfigParser.Error:
msg="Cannot find file-retention-level in [workflow] section "
msg+="of the configuration file. Setting a default value of "
msg+="retain all files."
logging.warn(msg)
self.retain_files = True
self.global_retention_threshold = 1
self.cp.set("workflow", "file-retention-level", "all_files")
else:
# FIXME: Are these names suitably descriptive?
retention_choices = {
'all_files' : 1,
'all_triggers' : 2,
'merged_triggers' : 3,
'results' : 4
}
try:
self.global_retention_threshold = \
retention_choices[global_retention_level]
except KeyError:
err_msg = "Cannot recognize the file-retention-level in the "
err_msg += "[workflow] section of the ini file. "
err_msg += "Got : {0}.".format(global_retention_level)
err_msg += "Valid options are: 'all_files', 'all_triggers',"
err_msg += "'merged_triggers' or 'results' "
raise ValueError(err_msg)
if self.current_retention_level == 5:
self.retain_files = True
if type(self).__name__ in Executable._warned_classes_list:
pass
else:
warn_msg = "Attribute current_retention_level has not "
warn_msg += "been set in class {0}. ".format(type(self))
warn_msg += "This value should be set explicitly. "
warn_msg += "All output from this class will be stored."
logging.warn(warn_msg)
Executable._warned_classes_list.append(type(self).__name__)
elif self.global_retention_threshold > self.current_retention_level:
self.retain_files = False
else:
self.retain_files = True
示例15: setup_psd_pregenerated
# 需要导入模块: from six.moves import configparser [as 别名]
# 或者: from six.moves.configparser import Error [as 别名]
def setup_psd_pregenerated(workflow, tags=None):
'''
Setup CBC workflow to use pregenerated psd files.
The file given in cp.get('workflow','pregenerated-psd-file-(ifo)') will
be used as the --psd-file argument to geom_nonspinbank, geom_aligned_bank
and pycbc_plot_psd_file.
Parameters
----------
workflow: pycbc.workflow.core.Workflow
An instanced class that manages the constructed workflow.
tags : list of strings
If given these tags are used to uniquely name and identify output files
that would be produced in multiple calls to this function.
Returns
--------
psd_files : pycbc.workflow.core.FileList
The FileList holding the gating files
'''
if tags is None:
tags = []
psd_files = FileList([])
cp = workflow.cp
global_seg = workflow.analysis_time
user_tag = "PREGEN_PSD"
# Check for one psd for all ifos
try:
pre_gen_file = cp.get_opt_tags('workflow-psd',
'psd-pregenerated-file', tags)
pre_gen_file = resolve_url(pre_gen_file)
file_url = urljoin('file:', pathname2url(pre_gen_file))
curr_file = File(workflow.ifos, user_tag, global_seg, file_url,
tags=tags)
curr_file.PFN(file_url, site='local')
psd_files.append(curr_file)
except ConfigParser.Error:
# Check for one psd per ifo
for ifo in workflow.ifos:
try:
pre_gen_file = cp.get_opt_tags('workflow-psd',
'psd-pregenerated-file-%s' % ifo.lower(),
tags)
pre_gen_file = resolve_url(pre_gen_file)
file_url = urljoin('file:', pathname2url(pre_gen_file))
curr_file = File(ifo, user_tag, global_seg, file_url,
tags=tags)
curr_file.PFN(file_url, site='local')
psd_files.append(curr_file)
except ConfigParser.Error:
# It's unlikely, but not impossible, that only some ifos
# will have pregenerated PSDs
logging.warn("No psd file specified for IFO %s." % (ifo,))
pass
return psd_files