diff options
author | pukkandan <pukkandan.ytdlp@gmail.com> | 2021-07-11 03:29:44 +0530 |
---|---|---|
committer | pukkandan <pukkandan.ytdlp@gmail.com> | 2021-07-11 04:46:51 +0530 |
commit | 6606817a86b96cc66aaa1d567b7bfce0c75500a2 (patch) | |
tree | 1ce9ff0cf4f8a6b669b6a409c514ca0d68f21d3f /yt_dlp/utils.py | |
parent | 73d829c144601c105f7ee1a3d8f2aed6d8e1b76d (diff) | |
download | hypervideo-pre-6606817a86b96cc66aaa1d567b7bfce0c75500a2.tar.lz hypervideo-pre-6606817a86b96cc66aaa1d567b7bfce0c75500a2.tar.xz hypervideo-pre-6606817a86b96cc66aaa1d567b7bfce0c75500a2.zip |
[utils] Add `variadic`
Diffstat (limited to 'yt_dlp/utils.py')
-rw-r--r-- | yt_dlp/utils.py | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/yt_dlp/utils.py b/yt_dlp/utils.py index f0d0097bb..888cfbb7e 100644 --- a/yt_dlp/utils.py +++ b/yt_dlp/utils.py @@ -4289,9 +4289,7 @@ def dict_get(d, key_or_keys, default=None, skip_false_values=True): def try_get(src, getter, expected_type=None): - if not isinstance(getter, (list, tuple)): - getter = [getter] - for get in getter: + for get in variadic(getter): try: v = get(src) except (AttributeError, KeyError, TypeError, IndexError): @@ -4964,11 +4962,9 @@ def cli_configuration_args(argdict, keys, default=[], use_compat=True): assert isinstance(keys, (list, tuple)) for key_list in keys: - if isinstance(key_list, compat_str): - key_list = (key_list,) arg_list = list(filter( lambda x: x is not None, - [argdict.get(key.lower()) for key in key_list])) + [argdict.get(key.lower()) for key in variadic(key_list)])) if arg_list: return [arg for args in arg_list for arg in args] return default @@ -6265,3 +6261,7 @@ def traverse_dict(dictn, keys, casesense=True): ''' For backward compatibility. Do not use ''' return traverse_obj(dictn, keys, casesense=casesense, is_user_input=True, traverse_string=True) + + +def variadic(x, allowed_types=str): + return x if isinstance(x, collections.Iterable) and not isinstance(x, allowed_types) else (x,) |