python: use the setdefault method on dict
It allows more concise code and skips some key lookups.
This commit is contained in:
parent
f76b3890ff
commit
9d90cb6962
3 changed files with 7 additions and 16 deletions
|
@ -87,10 +87,7 @@ def index_by(objects, *funcs):
|
||||||
result = {}
|
result = {}
|
||||||
for o in objects:
|
for o in objects:
|
||||||
key = f(o)
|
key = f(o)
|
||||||
if key not in result:
|
result.setdefault(key, []).append(o)
|
||||||
result[key] = [o]
|
|
||||||
else:
|
|
||||||
result[key].append(o)
|
|
||||||
|
|
||||||
for key, objects in result.items():
|
for key, objects in result.items():
|
||||||
result[key] = index_by(objects, *funcs[1:])
|
result[key] = index_by(objects, *funcs[1:])
|
||||||
|
|
|
@ -239,12 +239,10 @@ def patch(pkg, url_or_filename, level=1, when=None):
|
||||||
when = pkg.name
|
when = pkg.name
|
||||||
when_spec = parse_anonymous_spec(when, pkg.name)
|
when_spec = parse_anonymous_spec(when, pkg.name)
|
||||||
|
|
||||||
if when_spec not in pkg.patches:
|
cur_patches = pkg.patches.setdefault(when_spec, [])
|
||||||
pkg.patches[when_spec] = [Patch(pkg.name, url_or_filename, level)]
|
# if this spec is identical to some other, then append this
|
||||||
else:
|
# patch to the existing list.
|
||||||
# if this spec is identical to some other, then append this
|
cur_patches.append(Patch(pkg.name, url_or_filename, level))
|
||||||
# patch to the existing list.
|
|
||||||
pkg.patches[when_spec].append(Patch(pkg.name, url_or_filename, level))
|
|
||||||
|
|
||||||
|
|
||||||
@directive('variants')
|
@directive('variants')
|
||||||
|
|
|
@ -73,10 +73,8 @@ def update(self, spec):
|
||||||
for provided_spec, provider_spec in pkg.provided.iteritems():
|
for provided_spec, provider_spec in pkg.provided.iteritems():
|
||||||
if provider_spec.satisfies(spec, deps=False):
|
if provider_spec.satisfies(spec, deps=False):
|
||||||
provided_name = provided_spec.name
|
provided_name = provided_spec.name
|
||||||
if provided_name not in self.providers:
|
|
||||||
self.providers[provided_name] = {}
|
|
||||||
|
|
||||||
provider_map = self.providers[provided_name]
|
provider_map = self.providers.setdefault(provided_name, {})
|
||||||
if not provided_spec in provider_map:
|
if not provided_spec in provider_map:
|
||||||
provider_map[provided_spec] = set()
|
provider_map[provided_spec] = set()
|
||||||
|
|
||||||
|
@ -133,9 +131,7 @@ def _cross_provider_maps(self, lmap, rmap):
|
||||||
if lp_spec.name == rp_spec.name:
|
if lp_spec.name == rp_spec.name:
|
||||||
try:
|
try:
|
||||||
const = lp_spec.copy().constrain(rp_spec,deps=False)
|
const = lp_spec.copy().constrain(rp_spec,deps=False)
|
||||||
if constrained not in result:
|
result.setdefault(constrained, set()).add(const)
|
||||||
result[constrained] = set()
|
|
||||||
result[constrained].add(const)
|
|
||||||
except spack.spec.UnsatisfiableSpecError:
|
except spack.spec.UnsatisfiableSpecError:
|
||||||
continue
|
continue
|
||||||
return result
|
return result
|
||||||
|
|
Loading…
Reference in a new issue