Always flatten in listify() since we always want that

All our kwargs take lists that must be flattened

Closes https://github.com/mesonbuild/meson/issues/2408
This commit is contained in:
Nirbheek Chauhan 2017-10-01 12:18:57 +05:30
parent 26dada3797
commit 24e0774ace
1 changed files with 18 additions and 16 deletions

View File

@ -200,15 +200,7 @@ def classify_unity_sources(compilers, sources):
return compsrclist return compsrclist
def flatten(item): def flatten(item):
if not isinstance(item, list): return listify(item, flatten=True)
return [item]
result = []
for i in item:
if isinstance(i, list):
result += flatten(i)
else:
result.append(i)
return result
def is_osx(): def is_osx():
return platform.system().lower() == 'darwin' return platform.system().lower() == 'darwin'
@ -475,23 +467,33 @@ def replace_if_different(dst, dst_tmp):
os.unlink(dst_tmp) os.unlink(dst_tmp)
def listify(*args): def listify(item, flatten=True):
''' '''
Returns a list with all args embedded in a list if they are not of type list. Returns a list with all args embedded in a list if they are not of type list.
This function preserves order. This function preserves order.
''' '''
if len(args) == 1: # Special case with one single arg if not isinstance(item, list):
return args[0] if type(args[0]) is list else [args[0]] return [item]
return [item if type(item) is list else [item] for item in args] result = []
if flatten:
for i in item:
if isinstance(i, list):
result += listify(i, flatten=True)
else:
result.append(i)
else:
for i in item:
result.append(i)
return result
def extract_as_list(dict_object, *keys, pop = False): def extract_as_list(dict_object, *keys, pop=False):
''' '''
Extracts all values from given dict_object and listifies them. Extracts all values from given dict_object and listifies them.
''' '''
if pop: if pop:
return listify(*[dict_object.pop(key, []) for key in keys]) return flatten([dict_object.pop(key, []) for key in keys])
return listify(*[dict_object.get(key, []) for key in keys]) return flatten([dict_object.get(key, []) for key in keys])
def typeslistify(item, types): def typeslistify(item, types):