[utils] Backport traverse_obj (etc) from yt-dlp (#31156)
authorAndrei Lebedev <lebdron@gmail.com>
Thu, 3 Nov 2022 10:09:37 +0000 (11:09 +0100)
committerGitHub <noreply@github.com>
Thu, 3 Nov 2022 10:09:37 +0000 (10:09 +0000)
commit27ed77aabba8c9eb08d66f34092b1bfcc22c482e
tree7cc41fc5e398009a5cf8e7e4156afb0246aa34d3
parentc4b19a88169fa76c5eb665d274e7270a0fe452c4
[utils] Backport traverse_obj (etc) from yt-dlp (#31156)

* Backport traverse_obj and closely related function from yt-dlp (code by pukkandan)
* Backport LazyList, variadic(), try_call (code by pukkandan)
* Recast using yt-dlp's newer traverse_obj() implementation and tests (code by grub4k)
* Add tests for Unicode case folding support matching Py3.5+ (requires f102e3d)
* Improve/add tests for variadic, try_call, join_nonempty

Co-authored-by: dirkf <fieldhouse@gmx.net>
test/test_utils.py
youtube_dl/utils.py