From bb6613f379a0f43cc76c78ad49a29ea748759551 Mon Sep 17 00:00:00 2001 From: Avasam Date: Mon, 19 Feb 2024 00:10:01 -0500 Subject: [PATCH] `shlex.split`: allow `TextIO` and deprecate `None` (#11451) --- stdlib/shlex.pyi | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/stdlib/shlex.pyi b/stdlib/shlex.pyi index 3fda03b56..6d395971e 100644 --- a/stdlib/shlex.pyi +++ b/stdlib/shlex.pyi @@ -1,10 +1,20 @@ +import sys from collections.abc import Iterable -from typing import TextIO -from typing_extensions import Self +from typing import TextIO, overload +from typing_extensions import Self, deprecated __all__ = ["shlex", "split", "quote", "join"] -def split(s: str, comments: bool = False, posix: bool = True) -> list[str]: ... +if sys.version_info >= (3, 12): + def split(s: str | TextIO, comments: bool = False, posix: bool = True) -> list[str]: ... + +else: + @overload + def split(s: str | TextIO, comments: bool = False, posix: bool = True) -> list[str]: ... + @overload + @deprecated("Passing None for 's' to shlex.split() is deprecated and will raise an error in Python 3.12.") + def split(s: None, comments: bool = False, posix: bool = True) -> list[str]: ... + def join(split_command: Iterable[str]) -> str: ... def quote(s: str) -> str: ...