From ccfd7fa9e482bc3f7d30eb8c3f9fe98f78576d3a Mon Sep 17 00:00:00 2001 From: Avram Lubkin Date: Mon, 9 Jan 2023 18:42:59 -0500 Subject: [PATCH] Pylint: Enable modified-iterating-list --- lisa/parameter_parser/runbook.py | 43 +++++++++++++------------------- pylintrc | 1 - 2 files changed, 17 insertions(+), 27 deletions(-) diff --git a/lisa/parameter_parser/runbook.py b/lisa/parameter_parser/runbook.py index 3e55ce2779..efc65fa777 100644 --- a/lisa/parameter_parser/runbook.py +++ b/lisa/parameter_parser/runbook.py @@ -260,21 +260,19 @@ def _merge_extensions( data_from_include: Dict[str, Any], data_from_current: Dict[str, Any], ) -> List[Any]: - old_extensions = self._load_extensions(merged_path, data_from_include) - extensions = self._load_extensions(merged_path, data_from_current) - # remove duplicate paths - for old_extension in old_extensions: - for extension in extensions: - if extension.path == old_extension.path: - if not old_extension.name: - # specify name as possible - old_extension.name = extension.name - extensions.remove(extension) + extensions = self._load_extensions(merged_path, data_from_include) + initial_len = len(extensions) + + # Remove duplicate paths and append new extensions after old ones + for new_extension in self._load_extensions(merged_path, data_from_current): + for idx in range(initial_len): + old_extension = extensions[idx] + if not old_extension.name and new_extension.path == old_extension.path: + old_extension.name = new_extension.name break - if extensions or old_extensions: - # don't change the order, old ones should be imported earlier. - old_extensions.extend(extensions) - extensions = old_extensions + else: + extensions.append(new_extension) + return extensions def _merge_data( @@ -287,23 +285,16 @@ def _merge_data( Merge included data to data_from_current. The current data has higher precedence. """ - result = data_from_include.copy() + result = {**data_from_include, **data_from_current} - # merge others - result.update(data_from_current) - - # merge variables, latest should be effective last - variables = self._merge_variables( + if variables := self._merge_variables( merged_path, data_from_include, data_from_current - ) - if variables: + ): result[constants.VARIABLE] = variables - # merge extensions - extensions = self._merge_extensions( + if extensions := self._merge_extensions( merged_path, data_from_include, data_from_current - ) - if extensions: + ): result[constants.EXTENSION] = extensions return result diff --git a/pylintrc b/pylintrc index 6463e8f172..356b28c4af 100644 --- a/pylintrc +++ b/pylintrc @@ -34,7 +34,6 @@ disable= cyclic-import, expression-not-assigned, keyword-arg-before-vararg, - modified-iterating-list, no-member, redefined-argument-from-local, redefined-outer-name,