mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-08 18:30:37 +00:00
[utils] Allow partial application for even more functions (#11437)
Fixes b6dc2c49e8
Authored by: Grub4K
This commit is contained in:
parent
a6783a3b99
commit
422195ec70
@ -9,6 +9,7 @@ from yt_dlp.utils import (
|
||||
determine_ext,
|
||||
dict_get,
|
||||
int_or_none,
|
||||
join_nonempty,
|
||||
str_or_none,
|
||||
)
|
||||
from yt_dlp.utils.traversal import (
|
||||
@ -16,6 +17,7 @@ from yt_dlp.utils.traversal import (
|
||||
subs_list_to_dict,
|
||||
traverse_obj,
|
||||
trim_str,
|
||||
unpack,
|
||||
)
|
||||
|
||||
_TEST_DATA = {
|
||||
@ -510,6 +512,15 @@ class TestTraversalHelpers:
|
||||
assert trim_str(start='abc', end='abc')('abc') == ''
|
||||
assert trim_str(start='', end='')('abc') == 'abc'
|
||||
|
||||
def test_unpack(self):
|
||||
assert unpack(lambda *x: ''.join(map(str, x)))([1, 2, 3]) == '123'
|
||||
assert unpack(join_nonempty)([1, 2, 3]) == '1-2-3'
|
||||
assert unpack(join_nonempty(delim=' '))([1, 2, 3]) == '1 2 3'
|
||||
with pytest.raises(TypeError):
|
||||
unpack(join_nonempty)()
|
||||
with pytest.raises(TypeError):
|
||||
unpack()
|
||||
|
||||
|
||||
class TestDictGet:
|
||||
def test_dict_get(self):
|
||||
|
@ -5294,6 +5294,7 @@ def make_archive_id(ie, video_id):
|
||||
return f'{ie_key.lower()} {video_id}'
|
||||
|
||||
|
||||
@partial_application
|
||||
def truncate_string(s, left, right=0):
|
||||
assert left > 3 and right >= 0
|
||||
if s is None or len(s) <= left + right:
|
||||
|
@ -449,6 +449,14 @@ def trim_str(*, start=None, end=None):
|
||||
return trim
|
||||
|
||||
|
||||
def unpack(func):
|
||||
@functools.wraps(func)
|
||||
def inner(items, **kwargs):
|
||||
return func(*items, **kwargs)
|
||||
|
||||
return inner
|
||||
|
||||
|
||||
def get_first(obj, *paths, **kwargs):
|
||||
return traverse_obj(obj, *((..., *variadic(keys)) for keys in paths), **kwargs, get_all=False)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user