Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
self.assertRaises(profiles.ProfileError, getattr, self.klass(path),
attr)
# verify collapsing optimizations
self.write_file(filename, "dev-util/foo X\ndev-util/foo X")
self.assertEqualChunks(getattr(self.klass(path), attr),
{"dev-util/foo":(chunked_data(atom("dev-util/foo"), (), ('X',)),)})
self.write_file(filename, "d-u/a X\n=d-u/a-1 X")
self.assertEqualChunks(getattr(self.klass(path), attr),
{"d-u/a":(chunked_data(atom("d-u/a"), (), ('X',)),)})
self.write_file(filename, "d-u/a X\n=d-u/a-1 -X")
self.assertEqualChunks(getattr(self.klass(path), attr),
{"d-u/a":(chunked_data(atom("d-u/a"), (), ('X',)),
chunked_data(atom("=d-u/a-1"), ('X',), ()),)})
self.write_file(filename, "=d-u/a-1 X\nd-u/a X")
self.assertEqualChunks(getattr(self.klass(path), attr),
{"d-u/a":(chunked_data(atom("d-u/a"), (), ('X',)),)})
self.write_file(filename, "dev-util/bar -X\ndev-util/foo X")
self.assertEqualChunks(getattr(self.klass(path), attr),
{"dev-util/bar":(chunked_data(atom("dev-util/bar"), ('X',), ()),),
"dev-util/foo":(chunked_data(atom("dev-util/foo"), (), ('X',)),)})
self.wipe_path(pjoin(path, filename))
a2 = atom("dev-util/diffball")
self.assertEqual(
sorted(vrepo.itermatch(a)), sorted(repo.itermatch(a)))
self.assertEqual(sorted(vrepo.itermatch(a2)), sorted([]))
repo, vrepo = self.setup_repos(atom("=dev-util/diffball-1.0"))
self.assertEqual(
sorted(vrepo.itermatch(a)), sorted(repo.itermatch(a)))
self.assertEqual(
sorted(vrepo.itermatch(a2)),
sorted([VersionedCPV("dev-util/diffball-0.7")]))
repo, vrepo = self.setup_repos(packages.PackageRestriction(
"package", values.OrRestriction(
*[values.StrExactMatch(x) for x in ("diffball", "fake")])))
self.assertEqual(
sorted(vrepo.itermatch(packages.AlwaysTrue)),
sorted(repo.itermatch(atom("dev-util/bsdiff"))))
# check sentinel value handling.
vrepo = filtered.tree(repo, a2, sentinel_val=True)
self.assertEqual(
sorted(x.cpvstr for x in vrepo),
sorted(['dev-util/diffball-0.7', 'dev-util/diffball-1.0']))
self.write_file(filename, "dev-util/foo X\ndev-util/foo X")
self.assertEqualChunks(getattr(self.klass(path), attr),
{"dev-util/foo":(chunked_data(atom("dev-util/foo"), (), ('X',)),)})
self.write_file(filename, "d-u/a X\n=d-u/a-1 X")
self.assertEqualChunks(getattr(self.klass(path), attr),
{"d-u/a":(chunked_data(atom("d-u/a"), (), ('X',)),)})
self.write_file(filename, "d-u/a X\n=d-u/a-1 -X")
self.assertEqualChunks(getattr(self.klass(path), attr),
{"d-u/a":(chunked_data(atom("d-u/a"), (), ('X',)),
chunked_data(atom("=d-u/a-1"), ('X',), ()),)})
self.write_file(filename, "=d-u/a-1 X\nd-u/a X")
self.assertEqualChunks(getattr(self.klass(path), attr),
{"d-u/a":(chunked_data(atom("d-u/a"), (), ('X',)),)})
self.write_file(filename, "dev-util/bar -X\ndev-util/foo X")
self.assertEqualChunks(getattr(self.klass(path), attr),
{"dev-util/bar":(chunked_data(atom("dev-util/bar"), ('X',), ()),),
"dev-util/foo":(chunked_data(atom("dev-util/foo"), (), ('X',)),)})
self.wipe_path(pjoin(path, filename))
sorted(self.repo.itermatch(packages.AndRestriction(rp, rc2))),
sorted([]))
# note this mixes a category level match, and a pkg level
# match. they *must* be treated as an or.
self.assertEqual(
sorted(self.repo.itermatch(packages.OrRestriction(rp, rc2))),
sorted(VersionedCPV(x) for x in (
"dev-util/diffball-0.7", "dev-util/diffball-1.0",
"dev-lib/fake-1.0", "dev-lib/fake-1.0-r1")))
# this is similar to the test above, but mixes a cat/pkg
# candidate with a pkg candidate
rp2 = packages.PackageRestriction(
"package", values.StrExactMatch("fake"))
r = packages.OrRestriction(atom("dev-util/diffball"), rp2)
self.assertEqual(
sorted(self.repo.itermatch(r)),
sorted(VersionedCPV(x) for x in (
"dev-util/diffball-0.7", "dev-util/diffball-1.0",
"dev-lib/fake-1.0", "dev-lib/fake-1.0-r1")))
self.assertEqual(
sorted(self.repo.itermatch(
packages.OrRestriction(packages.AlwaysTrue, rp2))),
sorted(VersionedCPV(x) for x in (
"dev-util/diffball-0.7", "dev-util/diffball-1.0",
"dev-util/bsdiff-0.4.1", "dev-util/bsdiff-0.4.2",
"dev-lib/fake-1.0", "dev-lib/fake-1.0-r1")))
self.assertEqual(
sorted(self.repo.itermatch(
orig_text,))
# ok... fake category. whee.
try:
r = list(collect_package_restrictions(
atom.atom("%scategory/%s" % (ops, text)).restrictions,
attrs=("category",), invert=True))
except errors.MalformedAtom as e:
e.atom = orig_text
raise_from(ParseError(str(e)))
if not restrictions and len(r) == 1:
return r[0]
restrictions.extend(r)
return packages.AndRestriction(*restrictions)
elif text[0] in "=<>~" or "*" not in text:
try:
return atom.atom(orig_text)
except errors.MalformedAtom as e:
raise_from(ParseError(str(e)))
r = map(convert_glob, tsplit)
if not r[0] and not r[1]:
restrictions.append(packages.AlwaysTrue)
elif not r[0]:
restrictions.append(packages.PackageRestriction("package", r[1]))
elif not r[1]:
restrictions.append(packages.PackageRestriction("category", r[0]))
else:
restrictions.extend((
packages.PackageRestriction("category", r[0]),
packages.PackageRestriction("package", r[1]),
))
if len(restrictions) == 1:
def _modify(self, atom_inst, func):
if atom_inst.slot:
for slot in atom_inst.slot:
if slot == '0':
new_atom_inst = atom(atom_inst.key)
else:
new_atom_inst = atom(atom_inst.key + ":" + slot)
func(self, new_atom_inst)
else:
atom_inst = atom(atom_inst.key)
func(self, atom_inst)
def __call__(self, namespace, out, err):
global_use = []
pkg_use = {}
for k, v in namespace.use.render_to_dict().items():
if isinstance(k, str):
for pkg, neg, pos in v:
if isinstance(pkg, atom.atom):
pkg_neg, pkg_pos = pkg_use.setdefault(pkg, (set(), set()))
pkg_neg.update(neg)
pkg_pos.update(pos)
matched = pkg_neg.intersection(pkg_pos)
pkg_pos.difference_update(matched)
pkg_neg.difference_update(matched)
else:
_, neg, pos = v[0]
global_use = (neg, pos)
if global_use:
out.write(f'*/*: {self._output_use(*global_use)}')
if pkg_use:
for pkg, (neg, pos) in sorted(pkg_use.items()):
if neg or pos:
out.write(f'{pkg}: {self._output_use(neg, pos)}')
r = convert_glob(text)
if r is None:
restrictions.append(packages.AlwaysTrue)
else:
restrictions.append(packages.PackageRestriction("package", r))
if len(restrictions) == 1:
return restrictions[0]
return packages.AndRestriction(*restrictions)
elif text.startswith("*"):
raise ParseError(
"cannot do prefix glob matches with version ops: %s" % (
orig_text,))
# ok... fake category. whee.
try:
r = list(collect_package_restrictions(
atom.atom("%scategory/%s" % (ops, text)).restrictions,
attrs=("category",), invert=True))
except errors.MalformedAtom as e:
e.atom = orig_text
raise_from(ParseError(str(e)))
if not restrictions and len(r) == 1:
return r[0]
restrictions.extend(r)
return packages.AndRestriction(*restrictions)
elif text[0] in "=<>~" or "*" not in text:
try:
return atom.atom(orig_text)
except errors.MalformedAtom as e:
raise_from(ParseError(str(e)))
r = map(convert_glob, tsplit)
if not r[0] and not r[1]: