Skip to content

Commit

Permalink
Merge pull request #4533 from Flamefire/use-dict-items
Browse files Browse the repository at this point in the history
Use dict.items() instead of repeatedly getting the value
  • Loading branch information
boegel committed May 22, 2024
2 parents 5bc4746 + 23e5b39 commit d391629
Show file tree
Hide file tree
Showing 13 changed files with 46 additions and 46 deletions.
20 changes: 10 additions & 10 deletions easybuild/framework/easyblock.py
Original file line number Diff line number Diff line change
Expand Up @@ -2197,9 +2197,9 @@ def handle_iterate_opts(self):
self.log.info("Current iteration index: %s", self.iter_idx)

# pop first element from all iterative easyconfig parameters as next value to use
for opt in self.iter_opts:
if len(self.iter_opts[opt]) > self.iter_idx:
self.cfg[opt] = self.iter_opts[opt][self.iter_idx]
for opt, value in self.iter_opts.items():
if len(value) > self.iter_idx:
self.cfg[opt] = value[self.iter_idx]
else:
self.cfg[opt] = '' # empty list => empty option as next value
self.log.debug("Next value for %s: %s" % (opt, str(self.cfg[opt])))
Expand All @@ -2211,12 +2211,12 @@ def post_iter_step(self):
"""Restore options that were iterated over"""
# disable templating, since we're messing about with values in self.cfg
with self.cfg.disable_templating():
for opt in self.iter_opts:
self.cfg[opt] = self.iter_opts[opt]
for opt, value in self.iter_opts.items():
self.cfg[opt] = value

# also need to take into account extensions, since those were iterated over as well
for ext in self.ext_instances:
ext.cfg[opt] = self.iter_opts[opt]
ext.cfg[opt] = value

self.log.debug("Restored value of '%s' that was iterated over: %s", opt, self.cfg[opt])

Expand Down Expand Up @@ -4661,14 +4661,14 @@ def inject_checksums_to_json(ecs, checksum_type):

# actually inject new checksums or overwrite existing ones (if --force)
existing_checksums = app.get_checksums_from_json(always_read=True)
for filename in checksums:
for filename, checksum in checksums.items():
if filename not in existing_checksums:
existing_checksums[filename] = checksums[filename]
existing_checksums[filename] = checksum
# don't do anything if the checksum already exist and is the same
elif checksums[filename] != existing_checksums[filename]:
elif checksum != existing_checksums[filename]:
if build_option('force'):
print_warning("Found existing checksums for %s, overwriting them (due to --force)..." % ec_fn)
existing_checksums[filename] = checksums[filename]
existing_checksums[filename] = checksum
else:
raise EasyBuildError("Found existing checksum for %s, use --force to overwrite them" % filename)

Expand Down
10 changes: 5 additions & 5 deletions easybuild/framework/easyconfig/easyconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -827,7 +827,7 @@ def check_deprecated(self, path):
if depr_msgs:
depr_msg = ', '.join(depr_msgs)

depr_maj_ver = int(str(VERSION).split('.')[0]) + 1
depr_maj_ver = int(str(VERSION).split('.', maxsplit=1)[0]) + 1
depr_ver = '%s.0' % depr_maj_ver

more_info_depr_ec = " (see also https://docs.easybuild.io/deprecated-easyconfigs)"
Expand All @@ -842,8 +842,8 @@ def validate(self, check_osdeps=True):
- check license
"""
self.log.info("Validating easyconfig")
for attr in self.validations:
self._validate(attr, self.validations[attr])
for attr, valid_values in self.validations.items():
self._validate(attr, valid_values)

if check_osdeps:
self.log.info("Checking OS dependencies")
Expand Down Expand Up @@ -1207,8 +1207,8 @@ def dump(self, fp, always_overwrite=True, backup=False, explicit_toolchains=Fals
# templated values should be dumped unresolved
with self.disable_templating():
# build dict of default values
default_values = {key: DEFAULT_CONFIG[key][0] for key in DEFAULT_CONFIG}
default_values.update({key: self.extra_options[key][0] for key in self.extra_options})
default_values = {key: value[0] for key, value in DEFAULT_CONFIG.items()}
default_values.update({key: value[0] for key, value in self.extra_options.items()})

self.generate_template_values()
templ_const = {quote_py_str(const[1]): const[0] for const in TEMPLATE_CONSTANTS}
Expand Down
6 changes: 3 additions & 3 deletions easybuild/tools/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -592,12 +592,12 @@ def init_build_options(build_options=None, cmdline_options=None):
# seed in defaults to make sure all build options are defined, and that build_option() doesn't fail on valid keys
bo = {}
for build_options_by_default in [BUILD_OPTIONS_CMDLINE, BUILD_OPTIONS_OTHER]:
for default in build_options_by_default:
for default, options in build_options_by_default.items():
if default == EMPTY_LIST:
for opt in build_options_by_default[default]:
for opt in options:
bo[opt] = []
else:
bo.update({opt: default for opt in build_options_by_default[default]})
bo.update({opt: default for opt in options})
bo.update(active_build_options)

# BuildOptions is a singleton, so any future calls to BuildOptions will yield the same instance
Expand Down
4 changes: 2 additions & 2 deletions easybuild/tools/docs.py
Original file line number Diff line number Diff line change
Expand Up @@ -807,8 +807,8 @@ def list_software(output_format=FORMAT_TXT, detailed=False, only_installed=False

# rebuild software, only retain entries with a corresponding available module
software, all_software = {}, software
for key in all_software:
for entry in all_software[key]:
for key, entries in all_software.items():
for entry in entries:
if entry['mod_name'] in avail_mod_names:
software.setdefault(key, []).append(entry)

Expand Down
4 changes: 2 additions & 2 deletions easybuild/tools/environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ def write_changes(filename):
"""
try:
with open(filename, 'w') as script:
for key in _changes:
script.write('export %s=%s\n' % (key, shell_quote(_changes[key])))
for key, changed_value in _changes.items():
script.write('export %s=%s\n' % (key, shell_quote(changed_value)))
except IOError as err:
raise EasyBuildError("Failed to write to %s: %s", filename, err)
reset_changes()
Expand Down
4 changes: 2 additions & 2 deletions easybuild/tools/github.py
Original file line number Diff line number Diff line change
Expand Up @@ -1029,8 +1029,8 @@ def _easyconfigs_pr_common(paths, ecs, start_branch=None, pr_branch=None, start_
# only consider new easyconfig files for dependencies (not updated ones)
for idx in range(len(all_dep_info['ecs'])):
if all_dep_info['new'][idx]:
for key in dep_info:
dep_info[key].append(all_dep_info[key][idx])
for key, values in dep_info.items():
values.append(all_dep_info[key][idx])

# checkout target branch
if pr_branch is None:
Expand Down
4 changes: 2 additions & 2 deletions easybuild/tools/module_naming_scheme/hierarchical_mns.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,10 +204,10 @@ def det_modpath_extensions(self, ec):

comp_name_ver = None
if ec['name'] in extend_comps:
for key in COMP_NAME_VERSION_TEMPLATES:
for key, comp_tmpl in COMP_NAME_VERSION_TEMPLATES.items():
comp_names = key.split(',')
if ec['name'] in comp_names:
comp_name, comp_ver_tmpl = COMP_NAME_VERSION_TEMPLATES[key]
comp_name, comp_ver_tmpl = comp_tmpl
comp_versions = {ec['name']: self.det_full_version(ec)}
if ec['name'] == 'ifort':
# 'icc' key should be provided since it's the only one used in the template
Expand Down
4 changes: 2 additions & 2 deletions easybuild/tools/multidiff.py
Original file line number Diff line number Diff line change
Expand Up @@ -291,8 +291,8 @@ def multidiff(base, files, colored=True):
offset -= 1

# construct the multi-diff based on the constructed dict
for line_no in local_diff:
for (line, filename) in local_diff[line_no]:
for line_no, line_infos in local_diff.items():
for (line, filename) in line_infos:
mdiff.parse_line(line_no, line.rstrip(), filename, squigly_dict.get(line, '').rstrip())

return str(mdiff)
4 changes: 2 additions & 2 deletions easybuild/tools/options.py
Original file line number Diff line number Diff line change
Expand Up @@ -1365,9 +1365,9 @@ def show_system_info(self):
'',
"* GPU:",
])
for vendor in gpu_info:
for vendor, vendor_gpu in gpu_info.items():
lines.append(" -> %s" % vendor)
for gpu, num in gpu_info[vendor].items():
for gpu, num in vendor_gpu.items():
lines.append(" -> %sx %s" % (num, gpu))

lines.extend([
Expand Down
8 changes: 4 additions & 4 deletions easybuild/tools/systemtools.py
Original file line number Diff line number Diff line change
Expand Up @@ -1367,9 +1367,9 @@ def extract_version(tool):
python_version = extract_version(sys.executable)

opt_dep_versions = {}
for key in EASYBUILD_OPTIONAL_DEPENDENCIES:
for key, opt_dep in EASYBUILD_OPTIONAL_DEPENDENCIES.items():

pkg = EASYBUILD_OPTIONAL_DEPENDENCIES[key][0]
pkg = opt_dep[0]
if pkg is None:
pkg = key.lower()

Expand All @@ -1395,8 +1395,8 @@ def extract_version(tool):
opt_deps_key = "Optional dependencies"
checks_data[opt_deps_key] = {}

for key in opt_dep_versions:
checks_data[opt_deps_key][key] = (opt_dep_versions[key], EASYBUILD_OPTIONAL_DEPENDENCIES[key][1])
for key, version in opt_dep_versions.items():
checks_data[opt_deps_key][key] = (version, EASYBUILD_OPTIONAL_DEPENDENCIES[key][1])

sys_tools_key = "System tools"
checks_data[sys_tools_key] = {}
Expand Down
4 changes: 2 additions & 2 deletions easybuild/tools/testing.py
Original file line number Diff line number Diff line change
Expand Up @@ -321,8 +321,8 @@ def post_pr_test_report(pr_nrs, repo_type, test_report, msg, init_session_state,
gpu_info = get_gpu_info()
gpu_str = ""
if gpu_info:
for vendor in gpu_info:
for gpu, num in gpu_info[vendor].items():
for vendor, vendor_gpu in gpu_info.items():
for gpu, num in vendor_gpu.items():
gpu_str += ", %s x %s %s" % (num, vendor, gpu)

os_info = '%(hostname)s - %(os_type)s %(os_name)s %(os_version)s' % system_info
Expand Down
4 changes: 2 additions & 2 deletions easybuild/tools/toolchain/toolchain.py
Original file line number Diff line number Diff line change
Expand Up @@ -588,8 +588,8 @@ def _simulated_load_dependency_module(self, name, version, metadata, verbose=Fal
self.log.debug("Defining $EB* environment variables for software named %s", name)

env_vars = env_vars_external_module(name, version, metadata)
for key in env_vars:
setvar(key, env_vars[key], verbose=verbose)
for var, value in env_vars.items():
setvar(var, value, verbose=verbose)

def _load_toolchain_module(self, silent=False):
"""Load toolchain module."""
Expand Down
16 changes: 8 additions & 8 deletions test/framework/easyconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -2168,8 +2168,8 @@ def test_external_dependencies_templates(self):
'pyshortver': '3.6',
'pyver': '3.6.5',
}
for key in expected_template_values:
self.assertEqual(ec.template_values[key], expected_template_values[key])
for key, expected in expected_template_values.items():
self.assertEqual(ec.template_values[key], expected)

self.assertEqual(ec['versionsuffix'], '-Python-3.6.5-Perl-5.30')

Expand Down Expand Up @@ -2245,8 +2245,8 @@ def test_quote_str(self):
'foo\\bar': '"foo\\bar"',
}

for t in teststrings:
self.assertEqual(quote_str(t), teststrings[t])
for t, expected in teststrings.items():
self.assertEqual(quote_str(t), expected)

# test escape_newline
self.assertEqual(quote_str("foo\nbar", escape_newline=False), '"foo\nbar"')
Expand Down Expand Up @@ -4815,8 +4815,8 @@ def test_get_cuda_cc_template_value(self):
update_build_option('cuda_compute_capabilities', ['6.5', '7.0'])
ec = EasyConfig(self.eb_file)

for key in cuda_template_values:
self.assertEqual(ec.get_cuda_cc_template_value(key), cuda_template_values[key])
for key, expected in cuda_template_values.items():
self.assertEqual(ec.get_cuda_cc_template_value(key), expected)

update_build_option('cuda_compute_capabilities', None)
ec = EasyConfig(self.eb_file)
Expand All @@ -4828,8 +4828,8 @@ def test_get_cuda_cc_template_value(self):
self.prep()
ec = EasyConfig(self.eb_file)

for key in cuda_template_values:
self.assertEqual(ec.get_cuda_cc_template_value(key), cuda_template_values[key])
for key, expected in cuda_template_values.items():
self.assertEqual(ec.get_cuda_cc_template_value(key), expected)

def test_count_files(self):
"""Tests for EasyConfig.count_files method."""
Expand Down

0 comments on commit d391629

Please sign in to comment.