Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
fp = pjoin(self.profiles_base, name)
try:
for line in iter_read_bash(fp):
try:
key, val = line.split(None, 1)
key = converter(key)
if matcher:
yield key[0], (key[1], val.split('-', 1)[1].strip())
else:
yield key, val.split('-', 1)[1].strip()
except ValueError as e:
logger.error(f'failed parsing {fp!r}, line {line!r}: {e}')
except FileNotFoundError:
pass
except ValueError as e:
logger.error(f'failed parsing {fp!r}: {e}')
def _parse_package_use(self, data):
d = defaultdict(list)
# split the data down ordered cat/pkg lines
for line, lineno, path in data:
l = line.split()
try:
a = self.eapi_atom(l[0])
except ebuild_errors.MalformedAtom as e:
logger.error(e)
continue
if len(l) == 1:
logger.error(f'{path!r}, line {lineno}: missing USE flag(s): {line!r}')
continue
d[a.key].append(misc.chunked_data(a, *split_negations(l[1:])))
return ImmutableDict((k, misc._build_cp_atom_payload(v, atom(k)))
for k, v in d.items())
projects = {}
for p in tree.findall('project'):
kwargs = {}
for k in ('email', 'name', 'url', 'description'):
kwargs[k] = p.findtext(k)
members = []
for m in p.findall('member'):
m_kwargs = {}
for k in ('email', 'name', 'role'):
m_kwargs[k] = m.findtext(k)
m_kwargs['is_lead'] = m.get('is-lead', '') == '1'
try:
members.append(ProjectMember(**m_kwargs))
except ValueError:
logger.error(f"project {kwargs['email']} has with no email")
kwargs['members'] = members
subprojects = []
for sp in p.findall('subproject'):
try:
subprojects.append(Subproject(
ref=sp.get('ref'),
inherit_members=sp.get('inherit-members', '') == '1',
projects_xml=self))
except ValueError:
logger.error(f"project {kwargs['email']} has with no ref")
kwargs['subprojects'] = subprojects
projects[kwargs['email']] = Project(**kwargs)
return mappings.ImmutableDict(projects)
handlers["SIGTERM"] = chuck_TermInterrupt
handlers["dying"] = chuck_DyingInterrupt
if additional_commands is not None:
for x in additional_commands:
if not callable(additional_commands[x]):
raise TypeError(additional_commands[x])
handlers.update(additional_commands)
self.lock()
try:
if self._outstanding_expects:
if not self._consume_async_expects():
logger.error("error in daemon")
raise UnhandledCommand("expects out of alignment")
while True:
line = self.read().strip()
# split on first whitespace
cmd, _, args_str = line.partition(' ')
if not cmd:
raise InternalError(
f"Expected command; instead got nothing from {line!r}")
if cmd in handlers:
args = []
if args_str:
args.append(args_str)
# TODO: handle exceptions raised from handlers better
handlers[cmd](self, *args)
else:
logger.error(f"unhandled command {cmd!r}, line {line!r}")
def _process_plugin(package, plug, filter_disabled=False):
if isinstance(plug.target, str):
plug = modules.load_any(plug.target)
elif isinstance(plug.target, int):
module = modules.load_any(plug.source)
plugs = getattr(module, PLUGIN_ATTR, {})
plugs = plugs.get(plug.key, [])
if len(plugs) <= plug.target:
logger.exception(
"plugin cache for %s, %s, %s is somehow wrong; no item at position %s",
package.__name__, plug.source, plug.key, plug.target)
return None
plug = plugs[plug.target]
else:
logger.error(
"package %s, plug %s; non int, non string. wtf?",
package.__name__, plug)
return None
if filter_disabled:
if getattr(plug, 'disabled', False):
logger.debug("plugin %s is disabled, skipping", plug)
return None
f = getattr(plug, '_plugin_disabled_check', None)
if f is not None and f():
logger.debug("plugin %s is disabled, skipping", plug)
return None
return plug
def _scan_directory(path):
files = []
for filename in listdir_files(path):
match = valid_updates_re.match(filename)
if match is not None:
files.append(((match.group(2), match.group(1)), filename))
else:
logger.error(f'incorrectly named update file: {filename!r}')
files.sort(key=itemgetter(0))
return [x[1] for x in files]
def _parse_cpv(s):
try:
return cpv.VersionedCPV(s)
except cpv.InvalidCPV:
logger.error(f'invalid package.provided entry: {s!r}')
data = (x[0] for x in data)