From d45b3e67e2ee2877911ef85d42b3bbc9455c649a Mon Sep 17 00:00:00 2001 From: ryux1 Date: Sun, 6 Sep 2026 06:16:27 +0200 Subject: [PATCH 1/2] [yt-dlp] Expose options type --- stubs/yt-dlp/@tests/test_cases/check_options.py | 6 ++++++ stubs/yt-dlp/yt_dlp/YoutubeDL.pyi | 6 +++--- stubs/yt-dlp/yt_dlp/__init__.pyi | 4 ++-- stubs/yt-dlp/yt_dlp/utils/_utils.pyi | 12 ++++++------ 4 files changed, 17 insertions(+), 11 deletions(-) create mode 100644 stubs/yt-dlp/@tests/test_cases/check_options.py diff --git a/stubs/yt-dlp/@tests/test_cases/check_options.py b/stubs/yt-dlp/@tests/test_cases/check_options.py new file mode 100644 index 000000000000..98bda76a5cdb --- /dev/null +++ b/stubs/yt-dlp/@tests/test_cases/check_options.py @@ -0,0 +1,6 @@ +from yt_dlp import YoutubeDL, YoutubeDLOptions + +options: YoutubeDLOptions = {"quiet": True, "extract_flat": True} +YoutubeDL(options) + +YoutubeDL({"quiet": "yes"}) # type: ignore[arg-type] diff --git a/stubs/yt-dlp/yt_dlp/YoutubeDL.pyi b/stubs/yt-dlp/yt_dlp/YoutubeDL.pyi index 1fafc135d3cb..094b18951579 100644 --- a/stubs/yt-dlp/yt_dlp/YoutubeDL.pyi +++ b/stubs/yt-dlp/yt_dlp/YoutubeDL.pyi @@ -11,7 +11,7 @@ from yt_dlp.cookies import YoutubeDLCookieJar from yt_dlp.networking import RequestDirector, RequestHandler, Response from yt_dlp.utils import Namespace -from . import _Params +from . import YoutubeDLOptions from .extractor.common import InfoExtractor, _InfoDict from .postprocessor.common import PostProcessor from .utils._utils import _ProgressState @@ -19,11 +19,11 @@ from .utils._utils import _ProgressState _FormatSelector: TypeAlias = Callable[[Mapping[str, Any]], Iterator[Any]] class YoutubeDL: - params: _Params + params: YoutubeDLOptions cache: Cache format_selector: _FormatSelector archive: set[str] - def __init__(self, params: _Params | None = None, auto_init: bool = True) -> None: ... + def __init__(self, params: YoutubeDLOptions | None = None, auto_init: bool = True) -> None: ... def warn_if_short_id(self, argv: list[str]) -> None: ... def add_info_extractor(self, ie: InfoExtractor) -> None: ... def get_info_extractor(self, ie_key: str) -> InfoExtractor: ... diff --git a/stubs/yt-dlp/yt_dlp/__init__.pyi b/stubs/yt-dlp/yt_dlp/__init__.pyi index 3cb378a9a436..26e3e785deb9 100644 --- a/stubs/yt-dlp/yt_dlp/__init__.pyi +++ b/stubs/yt-dlp/yt_dlp/__init__.pyi @@ -63,7 +63,7 @@ _ProgressTemplate = TypedDict( ) @type_check_only -class _Params(TypedDict, total=False): +class YoutubeDLOptions(TypedDict, total=False): usenetrc: bool | None netrc_location: str | None netrc_cmd: str | None @@ -245,7 +245,7 @@ class _ParsedOptions(NamedTuple): parser: optparse.OptionParser options: optparse.Values urls: Collection[str] - ydl_opts: _Params + ydl_opts: YoutubeDLOptions def parse_options(argv: Collection[str] | None = None) -> _ParsedOptions: ... def main(argv: list[str] | None = None) -> int: ... diff --git a/stubs/yt-dlp/yt_dlp/utils/_utils.pyi b/stubs/yt-dlp/yt_dlp/utils/_utils.pyi index 2a9eec4ba73e..87517b3715a7 100644 --- a/stubs/yt-dlp/yt_dlp/utils/_utils.pyi +++ b/stubs/yt-dlp/yt_dlp/utils/_utils.pyi @@ -30,7 +30,7 @@ from xml.etree import ElementTree as ET from yt_dlp.networking import Response -from .. import _Params +from .. import YoutubeDLOptions from ..extractor.common import InfoExtractor, _InfoDict from ..globals import WINDOWS_VT_MODE as WINDOWS_VT_MODE from ..options import _YoutubeDLOptionParser @@ -516,16 +516,16 @@ def parse_dfxp_time_expr(time_expr: str | None) -> int | None: ... def srt_subtitles_timecode(seconds: float) -> str: ... def ass_subtitles_timecode(seconds: float) -> str: ... def dfxp2srt(dfxp_data: bytes) -> str: ... -def cli_option(params: _Params, command_option: str, param: str, separator: str | None = None) -> Any: ... +def cli_option(params: YoutubeDLOptions, command_option: str, param: str, separator: str | None = None) -> Any: ... def cli_bool_option( - params: _Params, + params: YoutubeDLOptions, command_option: str, param: bool | None, true_value: str = "true", false_value: str = "false", separator: str | None = None, ) -> Any: ... -def cli_valueless_option(params: _Params, command_option: str, param: str, expected_value: bool = True) -> Any: ... +def cli_valueless_option(params: YoutubeDLOptions, command_option: str, param: str, expected_value: bool = True) -> Any: ... def cli_configuration_args(argdict: dict[str, Any], keys: Iterable[str], default: Any = [], use_compat: bool = True) -> Any: ... class ISO639Utils: @@ -673,8 +673,8 @@ class FormatSorter: ytdl_default: tuple[str, ...] settings: dict[str, Any] ydl: YoutubeDL - def __init__(self, ydl: YoutubeDL, field_preference: _Params) -> None: ... - def evaluate_params(self, params: _Params, sort_extractor: Collection[str]) -> None: ... + def __init__(self, ydl: YoutubeDL, field_preference: YoutubeDLOptions) -> None: ... + def evaluate_params(self, params: YoutubeDLOptions, sort_extractor: Collection[str]) -> None: ... def print_verbose_info(self, write_debug: Callable[..., None]) -> None: ... def calculate_preference(self, format: dict[str, Any]) -> tuple[int, ...]: ... From c8c167ce3084d19bbf511d7c67ff20d3663c36b3 Mon Sep 17 00:00:00 2001 From: ryux1 Date: Sun, 6 Sep 2026 21:14:03 +0200 Subject: [PATCH 2/2] Remove trivial yt-dlp options test --- stubs/yt-dlp/@tests/test_cases/check_options.py | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 stubs/yt-dlp/@tests/test_cases/check_options.py diff --git a/stubs/yt-dlp/@tests/test_cases/check_options.py b/stubs/yt-dlp/@tests/test_cases/check_options.py deleted file mode 100644 index 98bda76a5cdb..000000000000 --- a/stubs/yt-dlp/@tests/test_cases/check_options.py +++ /dev/null @@ -1,6 +0,0 @@ -from yt_dlp import YoutubeDL, YoutubeDLOptions - -options: YoutubeDLOptions = {"quiet": True, "extract_flat": True} -YoutubeDL(options) - -YoutubeDL({"quiet": "yes"}) # type: ignore[arg-type]