about summary refs log tree commit diff
diff options
context:
space:
mode:
authordirkf <fieldhouse@gmx.net>2023-03-19 02:27:46 +0000
committerdirkf <fieldhouse@gmx.net>2023-03-19 02:29:00 +0000
commitf35b757c826027ab5263d431bbe363c6403bd66d (patch)
tree21a0bd187f37f09f41174ebadf59702d591965a4
parent45495228b7a6728b7e764bbcf1f38490cd3d8697 (diff)
downloadyoutube-dl-f35b757c826027ab5263d431bbe363c6403bd66d.tar.gz
youtube-dl-f35b757c826027ab5263d431bbe363c6403bd66d.tar.xz
youtube-dl-f35b757c826027ab5263d431bbe363c6403bd66d.zip
[utils] Ensure `allow_types` for `variadic()` is a tuple
-rw-r--r--test/test_utils.py1
-rw-r--r--youtube_dl/utils.py2
2 files changed, 3 insertions, 0 deletions
diff --git a/test/test_utils.py b/test/test_utils.py
index ea2b96ed2..b85d397d0 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -1563,6 +1563,7 @@ Line 1
         self.assertEqual(variadic(None), (None, ))
         self.assertEqual(variadic('spam'), ('spam', ))
         self.assertEqual(variadic('spam', allowed_types=dict), 'spam')
+        self.assertEqual(variadic('spam', allowed_types=[dict]), 'spam')
 
     def test_traverse_obj(self):
         _TEST_DATA = {
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
index 761edcd49..f3c7af437 100644
--- a/youtube_dl/utils.py
+++ b/youtube_dl/utils.py
@@ -4213,6 +4213,8 @@ def multipart_encode(data, boundary=None):
 
 
 def variadic(x, allowed_types=(compat_str, bytes, dict)):
+    if not isinstance(allowed_types, tuple) and isinstance(allowed_types, compat_collections_abc.Iterable):
+        allowed_types = tuple(allowed_types)
     return x if isinstance(x, compat_collections_abc.Iterable) and not isinstance(x, allowed_types) else (x,)