Skip to content

Commit c0662ae

Browse files
committed
rename unique_ordered_append to unique_ordered_extend and enforce closer behaviour to extend
1 parent 4d1b56e commit c0662ae

File tree

3 files changed

+15
-14
lines changed

3 files changed

+15
-14
lines changed

easybuild/tools/toolchain/toolchain.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
from easybuild.tools.systemtools import LINUX, get_os_type
7070
from easybuild.tools.toolchain.options import ToolchainOptions
7171
from easybuild.tools.toolchain.toolchainvariables import ToolchainVariables
72-
from easybuild.tools.utilities import nub, unique_ordered_append, trace_msg
72+
from easybuild.tools.utilities import nub, unique_ordered_extend, trace_msg
7373

7474

7575
_log = fancylogger.getLogger('tools.toolchain', fname=False)
@@ -1089,7 +1089,7 @@ def _add_dependency_cpp_headers(self, dep_root, extra_dirs=None):
10891089
extra_dirs = ()
10901090

10911091
header_dirs = ["include"]
1092-
header_dirs = unique_ordered_append(header_dirs, extra_dirs)
1092+
header_dirs = unique_ordered_extend(header_dirs, extra_dirs)
10931093

10941094
# mode of operation is defined by search-path-cpp-headers option
10951095
# toolchain option has precedence over build option
@@ -1120,7 +1120,7 @@ def _add_dependency_linker_paths(self, dep_root, extra_dirs=None):
11201120
extra_dirs = ()
11211121

11221122
lib_dirs = ["lib64", "lib"]
1123-
lib_dirs = unique_ordered_append(lib_dirs, extra_dirs)
1123+
lib_dirs = unique_ordered_extend(lib_dirs, extra_dirs)
11241124

11251125
env_var = "LDFLAGS"
11261126
self.log.debug("Adding lib paths to toolchain variable '%s': %s", env_var, dep_root)

easybuild/tools/utilities.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,11 @@ def nub(list_):
223223
return [x for x in list_ if x not in seen and not seen_add(x)]
224224

225225

226-
def unique_ordered_append(base, extra):
227-
"""Append elements of extra list to another base list keeping order and without duplicates"""
228-
if extra and isinstance(extra, str):
229-
extra = [extra]
226+
def unique_ordered_extend(base, extra):
227+
"""Extend base list with elements of extra list keeping order and without duplicates"""
228+
if isinstance(extra, str):
229+
# avoid strings as they are iterables and generate wrong result without error
230+
raise EasyBuildError(f"given extra list is a string: {extra}")
230231

231232
try:
232233
base.extend(extra)

test/framework/utilities_test.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -191,22 +191,22 @@ def test_LooseVersion(self):
191191
self.assertEqual(LooseVersion('2.a').version, [2, 'a'])
192192
self.assertEqual(LooseVersion('2.a5').version, [2, 'a', 5])
193193

194-
def test_unique_ordered_append(self):
194+
def test_unique_ordered_extend(self):
195195
"""Test unique_ordered_list_append method"""
196196
base = ["potato", "tomato", "orange"]
197197

198198
reference = ["potato", "tomato", "orange", "apple"]
199-
self.assertEqual(tu.unique_ordered_append(base, ["apple"]), reference)
200-
self.assertEqual(tu.unique_ordered_append(base, ["apple", "apple"]), reference)
201-
self.assertEqual(tu.unique_ordered_append(base, "apple"), reference)
202-
self.assertNotEqual(tu.unique_ordered_append(base, "apple"), sorted(reference))
199+
self.assertEqual(tu.unique_ordered_extend(base, ["apple"]), reference)
200+
self.assertEqual(tu.unique_ordered_extend(base, ["apple", "apple"]), reference)
201+
self.assertEqual(tu.unique_ordered_extend(base, "apple"), reference)
202+
self.assertNotEqual(tu.unique_ordered_extend(base, "apple"), sorted(reference))
203203

204204
error_pattern = "given extra list is not iterable"
205-
self.assertErrorRegex(EasyBuildError, error_pattern, tu.unique_ordered_append, base, 0)
205+
self.assertErrorRegex(EasyBuildError, error_pattern, tu.unique_ordered_extend, base, 0)
206206

207207
base = "potato"
208208
error_pattern = "given base cannot be extended"
209-
self.assertErrorRegex(EasyBuildError, error_pattern, tu.unique_ordered_append, base, reference)
209+
self.assertErrorRegex(EasyBuildError, error_pattern, tu.unique_ordered_extend, base, reference)
210210

211211

212212
def suite():

0 commit comments

Comments
 (0)