From 86bda99109a7ee6505d896586210b462e20f1d64 Mon Sep 17 00:00:00 2001 From: Alex Waygood Date: Tue, 22 Feb 2022 00:22:43 +0000 Subject: [PATCH 1/2] Add `__all__` to most modules beginning with 'n', 'o' and 'p' --- stdlib/netrc.pyi | 2 + stdlib/nntplib.pyi | 12 +++++ stdlib/ntpath.pyi | 88 ++++++++++++++++++++++++++++++- stdlib/numbers.pyi | 2 + stdlib/operator.pyi | 116 +++++++++++++++++++++++++++++++++++++++++ stdlib/optparse.pyi | 20 +++++++ stdlib/os/path.pyi | 2 + stdlib/pathlib.pyi | 2 + stdlib/pdb.pyi | 2 + stdlib/pickletools.pyi | 2 + stdlib/pipes.pyi | 2 + stdlib/pkgutil.pyi | 15 ++++++ stdlib/plistlib.pyi | 51 ++++++++++++++++++ stdlib/poplib.pyi | 6 +++ stdlib/posixpath.pyi | 41 +++++++++++++++ stdlib/pprint.pyi | 5 ++ stdlib/profile.pyi | 2 + stdlib/py_compile.pyi | 5 ++ stdlib/pyclbr.pyi | 2 + stdlib/pydoc.pyi | 2 + 20 files changed, 377 insertions(+), 2 deletions(-) diff --git a/stdlib/netrc.pyi b/stdlib/netrc.pyi index 7c1c2068aff6..b1c3f5ec5024 100644 --- a/stdlib/netrc.pyi +++ b/stdlib/netrc.pyi @@ -1,6 +1,8 @@ from _typeshed import StrOrBytesPath from typing import Optional +__all__ = ["netrc", "NetrcParseError"] + class NetrcParseError(Exception): filename: str | None lineno: int | None diff --git a/stdlib/nntplib.pyi b/stdlib/nntplib.pyi index 01622a4fd76a..77cab1e154e8 100644 --- a/stdlib/nntplib.pyi +++ b/stdlib/nntplib.pyi @@ -6,6 +6,18 @@ from _typeshed import Self from typing import IO, Any, Iterable, NamedTuple, Union from typing_extensions import Literal +__all__ = [ + "NNTP", + "NNTPError", + "NNTPReplyError", + "NNTPTemporaryError", + "NNTPPermanentError", + "NNTPProtocolError", + "NNTPDataError", + "decode_header", + "NNTP_SSL", +] + _File = Union[IO[bytes], bytes, str, None] class NNTPError(Exception): diff --git a/stdlib/ntpath.pyi b/stdlib/ntpath.pyi index f691356cb702..ffe5cc1e5a2d 100644 --- a/stdlib/ntpath.pyi +++ b/stdlib/ntpath.pyi @@ -44,10 +44,94 @@ from posixpath import ( ) from typing import AnyStr, overload -altsep: str -if sys.version_info < (3, 7) and sys.platform == "win32": +if sys.version_info >= (3, 7) or sys.platform != "win32": + __all__ = [ + "normcase", + "isabs", + "join", + "splitdrive", + "split", + "splitext", + "basename", + "dirname", + "commonprefix", + "getsize", + "getmtime", + "getatime", + "getctime", + "islink", + "exists", + "lexists", + "isdir", + "isfile", + "ismount", + "expanduser", + "expandvars", + "normpath", + "abspath", + "curdir", + "pardir", + "sep", + "pathsep", + "defpath", + "altsep", + "extsep", + "devnull", + "realpath", + "supports_unicode_filenames", + "relpath", + "samefile", + "sameopenfile", + "samestat", + "commonpath", + ] +else: + __all__ = [ + "normcase", + "isabs", + "join", + "splitdrive", + "split", + "splitext", + "basename", + "dirname", + "commonprefix", + "getsize", + "getmtime", + "getatime", + "getctime", + "islink", + "exists", + "lexists", + "isdir", + "isfile", + "ismount", + "expanduser", + "expandvars", + "normpath", + "abspath", + "splitunc", + "curdir", + "pardir", + "sep", + "pathsep", + "defpath", + "altsep", + "extsep", + "devnull", + "realpath", + "supports_unicode_filenames", + "relpath", + "samefile", + "sameopenfile", + "samestat", + "commonpath", + ] + def splitunc(p: AnyStr) -> tuple[AnyStr, AnyStr]: ... # deprecated +altsep: str + # First parameter is not actually pos-only, # but must be defined as pos-only in the stub or cross-platform code doesn't type-check, # as the parameter name is different in posixpath.join() diff --git a/stdlib/numbers.pyi b/stdlib/numbers.pyi index d0024adbb46f..7c0c95853741 100644 --- a/stdlib/numbers.pyi +++ b/stdlib/numbers.pyi @@ -4,6 +4,8 @@ from abc import ABCMeta, abstractmethod from typing import Any, SupportsFloat, overload +__all__ = ["Number", "Complex", "Real", "Rational", "Integral"] + class Number(metaclass=ABCMeta): @abstractmethod def __hash__(self) -> int: ... diff --git a/stdlib/operator.pyi b/stdlib/operator.pyi index 180bd161c045..603e15ebc7be 100644 --- a/stdlib/operator.pyi +++ b/stdlib/operator.pyi @@ -2,6 +2,122 @@ import sys from _operator import * +if sys.version_info >= (3, 11): + __all__ = [ + "abs", + "add", + "and_", + "attrgetter", + "call", + "concat", + "contains", + "countOf", + "delitem", + "eq", + "floordiv", + "ge", + "getitem", + "gt", + "iadd", + "iand", + "iconcat", + "ifloordiv", + "ilshift", + "imatmul", + "imod", + "imul", + "index", + "indexOf", + "inv", + "invert", + "ior", + "ipow", + "irshift", + "is_", + "is_not", + "isub", + "itemgetter", + "itruediv", + "ixor", + "le", + "length_hint", + "lshift", + "lt", + "matmul", + "methodcaller", + "mod", + "mul", + "ne", + "neg", + "not_", + "or_", + "pos", + "pow", + "rshift", + "setitem", + "sub", + "truediv", + "truth", + "xor", + ] +else: + __all__ = [ + "abs", + "add", + "and_", + "attrgetter", + "concat", + "contains", + "countOf", + "delitem", + "eq", + "floordiv", + "ge", + "getitem", + "gt", + "iadd", + "iand", + "iconcat", + "ifloordiv", + "ilshift", + "imatmul", + "imod", + "imul", + "index", + "indexOf", + "inv", + "invert", + "ior", + "ipow", + "irshift", + "is_", + "is_not", + "isub", + "itemgetter", + "itruediv", + "ixor", + "le", + "length_hint", + "lshift", + "lt", + "matmul", + "methodcaller", + "mod", + "mul", + "ne", + "neg", + "not_", + "or_", + "pos", + "pow", + "rshift", + "setitem", + "sub", + "truediv", + "truth", + "xor", + ] + __lt__ = lt __le__ = le __eq__ = eq diff --git a/stdlib/optparse.pyi b/stdlib/optparse.pyi index 965438215e4f..7aedf583e556 100644 --- a/stdlib/optparse.pyi +++ b/stdlib/optparse.pyi @@ -1,6 +1,26 @@ from abc import abstractmethod from typing import IO, Any, AnyStr, Callable, Iterable, Mapping, Sequence, overload +__all__ = [ + "Option", + "make_option", + "SUPPRESS_HELP", + "SUPPRESS_USAGE", + "Values", + "OptionContainer", + "OptionGroup", + "OptionParser", + "HelpFormatter", + "IndentedHelpFormatter", + "TitledHelpFormatter", + "OptParseError", + "OptionError", + "OptionConflictError", + "OptionValueError", + "BadOptionError", + "check_choice", +] + NO_DEFAULT: tuple[str, ...] SUPPRESS_HELP: str SUPPRESS_USAGE: str diff --git a/stdlib/os/path.pyi b/stdlib/os/path.pyi index 4533738983f7..dc688a9f877f 100644 --- a/stdlib/os/path.pyi +++ b/stdlib/os/path.pyi @@ -2,5 +2,7 @@ import sys if sys.platform == "win32": from ntpath import * + from ntpath import __all__ as __all__ else: from posixpath import * + from posixpath import __all__ as __all__ diff --git a/stdlib/pathlib.pyi b/stdlib/pathlib.pyi index 98a53340a7f8..891f8fc8bdc9 100644 --- a/stdlib/pathlib.pyi +++ b/stdlib/pathlib.pyi @@ -17,6 +17,8 @@ from typing_extensions import Literal if sys.version_info >= (3, 9): from types import GenericAlias +__all__ = ["PurePath", "PurePosixPath", "PureWindowsPath", "Path", "PosixPath", "WindowsPath"] + class PurePath(PathLike[str]): parts: tuple[str, ...] drive: str diff --git a/stdlib/pdb.pyi b/stdlib/pdb.pyi index 7764b04bacf6..c1cba5e8d23b 100644 --- a/stdlib/pdb.pyi +++ b/stdlib/pdb.pyi @@ -8,6 +8,8 @@ from types import CodeType, FrameType, TracebackType from typing import IO, Any, Callable, ClassVar, Iterable, Mapping, Sequence, TypeVar from typing_extensions import ParamSpec +__all__ = ["run", "pm", "Pdb", "runeval", "runctx", "runcall", "set_trace", "post_mortem", "help"] + _T = TypeVar("_T") _P = ParamSpec("_P") diff --git a/stdlib/pickletools.pyi b/stdlib/pickletools.pyi index 056d115f52e7..7b79ddcff347 100644 --- a/stdlib/pickletools.pyi +++ b/stdlib/pickletools.pyi @@ -1,5 +1,7 @@ from typing import IO, Any, Callable, Iterator, MutableMapping +__all__ = ["dis", "genops", "optimize"] + _Reader = Callable[[IO[bytes]], Any] bytes_types: tuple[type[Any], ...] diff --git a/stdlib/pipes.pyi b/stdlib/pipes.pyi index fb9d7e4e1d16..d6bbd7eafac3 100644 --- a/stdlib/pipes.pyi +++ b/stdlib/pipes.pyi @@ -1,5 +1,7 @@ import os +__all__ = ["Template"] + class Template: def __init__(self) -> None: ... def reset(self) -> None: ... diff --git a/stdlib/pkgutil.pyi b/stdlib/pkgutil.pyi index 0b60a4868143..607c6b371507 100644 --- a/stdlib/pkgutil.pyi +++ b/stdlib/pkgutil.pyi @@ -3,6 +3,21 @@ from _typeshed import SupportsRead from importlib.abc import Loader, MetaPathFinder, PathEntryFinder from typing import IO, Any, Callable, Iterable, Iterator, NamedTuple +__all__ = [ + "get_importer", + "iter_importers", + "get_loader", + "find_loader", + "walk_packages", + "iter_modules", + "get_data", + "ImpImporter", + "ImpLoader", + "read_code", + "extend_path", + "ModuleInfo", +] + class ModuleInfo(NamedTuple): module_finder: MetaPathFinder | PathEntryFinder name: str diff --git a/stdlib/plistlib.pyi b/stdlib/plistlib.pyi index 59325104d76b..ef5ebd784353 100644 --- a/stdlib/plistlib.pyi +++ b/stdlib/plistlib.pyi @@ -4,6 +4,57 @@ from datetime import datetime from enum import Enum from typing import IO, Any, Mapping, MutableMapping +if sys.version_info >= (3, 9): + __all__ = ["InvalidFileException", "FMT_XML", "FMT_BINARY", "load", "dump", "loads", "dumps", "UID"] +elif sys.version_info >= (3, 8): + __all__ = [ + "readPlist", + "writePlist", + "readPlistFromBytes", + "writePlistToBytes", + "Data", + "InvalidFileException", + "FMT_XML", + "FMT_BINARY", + "load", + "dump", + "loads", + "dumps", + "UID", + ] +elif sys.version_Info >= (3, 7): + __all__ = [ + "readPlist", + "writePlist", + "readPlistFromBytes", + "writePlistToBytes", + "Data", + "InvalidFileException", + "FMT_XML", + "FMT_BINARY", + "load", + "dump", + "loads", + "dumps", + ] +else: + __all__ = [ + "readPlist", + "writePlist", + "readPlistFromBytes", + "writePlistToBytes", + "Plist", + "Data", + "Dict", + "InvalidFileException", + "FMT_XML", + "FMT_BINARY", + "load", + "dump", + "loads", + "dumps", + ] + class PlistFormat(Enum): FMT_XML: int FMT_BINARY: int diff --git a/stdlib/poplib.pyi b/stdlib/poplib.pyi index cc9992ae6135..111e5c4ca76a 100644 --- a/stdlib/poplib.pyi +++ b/stdlib/poplib.pyi @@ -1,8 +1,14 @@ import socket import ssl +import sys from typing import Any, BinaryIO, NoReturn, Pattern, overload from typing_extensions import Literal +if sys.version_info >= (3, 10): + __all__ = ["POP3", "error_proto", "POP3_SSL"] +else: + __all__ = ["POP3", "error_proto"] + _LongResp = tuple[bytes, list[bytes], int] class error_proto(Exception): ... diff --git a/stdlib/posixpath.pyi b/stdlib/posixpath.pyi index 58cadb4de03c..c72ba8a99bdd 100644 --- a/stdlib/posixpath.pyi +++ b/stdlib/posixpath.pyi @@ -16,6 +16,47 @@ from genericpath import ( from os import PathLike from typing import AnyStr, Sequence, overload +__all__ = [ + "normcase", + "isabs", + "join", + "splitdrive", + "split", + "splitext", + "basename", + "dirname", + "commonprefix", + "getsize", + "getmtime", + "getatime", + "getctime", + "islink", + "exists", + "lexists", + "isdir", + "isfile", + "ismount", + "expanduser", + "expandvars", + "normpath", + "abspath", + "samefile", + "sameopenfile", + "samestat", + "curdir", + "pardir", + "sep", + "pathsep", + "defpath", + "altsep", + "extsep", + "devnull", + "realpath", + "supports_unicode_filenames", + "relpath", + "commonpath", +] + supports_unicode_filenames: bool # aliases (also in os) curdir: str diff --git a/stdlib/pprint.pyi b/stdlib/pprint.pyi index 9d2167007d69..0addc8f538b2 100644 --- a/stdlib/pprint.pyi +++ b/stdlib/pprint.pyi @@ -1,6 +1,11 @@ import sys from typing import IO +if sys.version_info >= (3, 8): + __all__ = ["pprint", "pformat", "isreadable", "isrecursive", "saferepr", "PrettyPrinter", "pp"] +else: + __all__ = ["pprint", "pformat", "isreadable", "isrecursive", "saferepr", "PrettyPrinter"] + if sys.version_info >= (3, 10): def pformat( object: object, diff --git a/stdlib/profile.pyi b/stdlib/profile.pyi index b9afcbcae982..982bcabad401 100644 --- a/stdlib/profile.pyi +++ b/stdlib/profile.pyi @@ -2,6 +2,8 @@ from _typeshed import Self, StrOrBytesPath from typing import Any, Callable, TypeVar from typing_extensions import ParamSpec +__all__ = ["run", "runctx", "Profile"] + def run(statement: str, filename: str | None = ..., sort: str | int = ...) -> None: ... def runctx( statement: str, globals: dict[str, Any], locals: dict[str, Any], filename: str | None = ..., sort: str | int = ... diff --git a/stdlib/py_compile.pyi b/stdlib/py_compile.pyi index 2e8285400fc0..c544a7941981 100644 --- a/stdlib/py_compile.pyi +++ b/stdlib/py_compile.pyi @@ -1,6 +1,11 @@ import sys from typing import AnyStr +if sys.version_info >= (3, 7): + __all__ = ["compile", "main", "PyCompileError", "PycInvalidationMode"] +else: + __all__ = ["compile", "main", "PyCompileError"] + class PyCompileError(Exception): exc_type_name: str exc_value: BaseException diff --git a/stdlib/pyclbr.pyi b/stdlib/pyclbr.pyi index 84a4f60ec8e5..3033833a8162 100644 --- a/stdlib/pyclbr.pyi +++ b/stdlib/pyclbr.pyi @@ -1,6 +1,8 @@ import sys from collections.abc import Sequence +__all__ = ["readmodule", "readmodule_ex", "Class", "Function"] + class Class: module: str name: str diff --git a/stdlib/pydoc.pyi b/stdlib/pydoc.pyi index 48f35372801c..487656a3c160 100644 --- a/stdlib/pydoc.pyi +++ b/stdlib/pydoc.pyi @@ -4,6 +4,8 @@ from reprlib import Repr from types import MethodType, ModuleType, TracebackType from typing import IO, Any, AnyStr, Callable, Container, Mapping, MutableMapping, NoReturn, TypeVar +__all__ = ["help"] + # the return type of sys.exc_info(), used by ErrorDuringImport.__init__ _Exc_Info = tuple[type[BaseException] | None, BaseException | None, TracebackType | None] From 731422247d1878b3b7045c0251f07b41bc87bc20 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Mon, 21 Feb 2022 16:32:41 -0800 Subject: [PATCH 2/2] Update stdlib/plistlib.pyi --- stdlib/plistlib.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/plistlib.pyi b/stdlib/plistlib.pyi index ef5ebd784353..3f19eeeb6fc5 100644 --- a/stdlib/plistlib.pyi +++ b/stdlib/plistlib.pyi @@ -22,7 +22,7 @@ elif sys.version_info >= (3, 8): "dumps", "UID", ] -elif sys.version_Info >= (3, 7): +elif sys.version_info >= (3, 7): __all__ = [ "readPlist", "writePlist",