Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use dict.items() instead of repeatedly getting the value #4533

Merged
merged 1 commit into from
May 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading