From 58e505eeb2f97ca4a045b7a04a631c06d1e6aea4 Mon Sep 17 00:00:00 2001 From: Alex Waygood Date: Wed, 23 Feb 2022 22:04:21 +0000 Subject: [PATCH] Add `__all__` for modules beginning with 'u', 'x', 'w' and 'z' (#7374) --- stdlib/unittest/__init__.pyi | 51 +++++++++++++++++++ stdlib/urllib/error.pyi | 2 +- stdlib/urllib/parse.pyi | 24 +++++++++ stdlib/urllib/request.pyi | 37 ++++++++++++++ stdlib/urllib/response.pyi | 2 + stdlib/urllib/robotparser.pyi | 6 ++- stdlib/uu.pyi | 2 + stdlib/warnings.pyi | 11 +++++ stdlib/wave.pyi | 5 ++ stdlib/weakref.pyi | 16 ++++++ stdlib/webbrowser.pyi | 2 + stdlib/wsgiref/handlers.pyi | 2 + stdlib/wsgiref/simple_server.pyi | 2 + stdlib/wsgiref/util.pyi | 2 + stdlib/wsgiref/validate.pyi | 2 + stdlib/xdrlib.pyi | 2 + stdlib/xml/dom/minicompat.pyi | 2 + stdlib/xml/dom/xmlbuilder.pyi | 2 + stdlib/xml/etree/ElementTree.pyi | 84 ++++++++++++++++++++++++++++++++ stdlib/zipapp.pyi | 2 + stdlib/zipfile.pyi | 32 ++++++++++++ stdlib/zipimport.pyi | 3 ++ stdlib/zoneinfo/__init__.pyi | 2 + 23 files changed, 292 insertions(+), 3 deletions(-) diff --git a/stdlib/unittest/__init__.pyi b/stdlib/unittest/__init__.pyi index 2a9e002cb..4bbf98c99 100644 --- a/stdlib/unittest/__init__.pyi +++ b/stdlib/unittest/__init__.pyi @@ -32,4 +32,55 @@ if sys.version_info >= (3, 8): from .case import addModuleCleanup as addModuleCleanup + __all__ = [ + "TestResult", + "TestCase", + "IsolatedAsyncioTestCase", + "TestSuite", + "TextTestRunner", + "TestLoader", + "FunctionTestCase", + "main", + "defaultTestLoader", + "SkipTest", + "skip", + "skipIf", + "skipUnless", + "expectedFailure", + "TextTestResult", + "installHandler", + "registerResult", + "removeResult", + "removeHandler", + "addModuleCleanup", + "getTestCaseNames", + "makeSuite", + "findTestCases", + ] + +else: + __all__ = [ + "TestResult", + "TestCase", + "TestSuite", + "TextTestRunner", + "TestLoader", + "FunctionTestCase", + "main", + "defaultTestLoader", + "SkipTest", + "skip", + "skipIf", + "skipUnless", + "expectedFailure", + "TextTestResult", + "installHandler", + "registerResult", + "removeResult", + "removeHandler", + "getTestCaseNames", + "makeSuite", + "findTestCases", + ] + def load_tests(loader: TestLoader, tests: TestSuite, pattern: str | None) -> TestSuite: ... diff --git a/stdlib/urllib/error.pyi b/stdlib/urllib/error.pyi index 1d91fedce..954dd4fa0 100644 --- a/stdlib/urllib/error.pyi +++ b/stdlib/urllib/error.pyi @@ -2,7 +2,7 @@ from email.message import Message from typing import IO from urllib.response import addinfourl -# Stubs for urllib.error +__all__ = ["URLError", "HTTPError", "ContentTooShortError"] class URLError(IOError): reason: str | BaseException diff --git a/stdlib/urllib/parse.pyi b/stdlib/urllib/parse.pyi index 613049bbb..a044e60ee 100644 --- a/stdlib/urllib/parse.pyi +++ b/stdlib/urllib/parse.pyi @@ -4,6 +4,30 @@ from typing import Any, AnyStr, Callable, Generic, Mapping, NamedTuple, Sequence if sys.version_info >= (3, 9): from types import GenericAlias +__all__ = [ + "urlparse", + "urlunparse", + "urljoin", + "urldefrag", + "urlsplit", + "urlunsplit", + "urlencode", + "parse_qs", + "parse_qsl", + "quote", + "quote_plus", + "quote_from_bytes", + "unquote", + "unquote_plus", + "unquote_to_bytes", + "DefragResult", + "ParseResult", + "SplitResult", + "DefragResultBytes", + "ParseResultBytes", + "SplitResultBytes", +] + _Str = Union[bytes, str] uses_relative: list[str] diff --git a/stdlib/urllib/request.pyi b/stdlib/urllib/request.pyi index 211fa3604..265ef2196 100644 --- a/stdlib/urllib/request.pyi +++ b/stdlib/urllib/request.pyi @@ -8,6 +8,43 @@ from typing import IO, Any, Callable, ClassVar, Iterable, Mapping, MutableMappin from urllib.error import HTTPError from urllib.response import addclosehook, addinfourl +__all__ = [ + "Request", + "OpenerDirector", + "BaseHandler", + "HTTPDefaultErrorHandler", + "HTTPRedirectHandler", + "HTTPCookieProcessor", + "ProxyHandler", + "HTTPPasswordMgr", + "HTTPPasswordMgrWithDefaultRealm", + "HTTPPasswordMgrWithPriorAuth", + "AbstractBasicAuthHandler", + "HTTPBasicAuthHandler", + "ProxyBasicAuthHandler", + "AbstractDigestAuthHandler", + "HTTPDigestAuthHandler", + "ProxyDigestAuthHandler", + "HTTPHandler", + "FileHandler", + "FTPHandler", + "CacheFTPHandler", + "DataHandler", + "UnknownHandler", + "HTTPErrorProcessor", + "urlopen", + "install_opener", + "build_opener", + "pathname2url", + "url2pathname", + "getproxies", + "urlretrieve", + "urlcleanup", + "URLopener", + "FancyURLopener", + "HTTPSHandler", +] + _T = TypeVar("_T") _UrlopenRet = Any _DataType = bytes | SupportsRead[bytes] | Iterable[bytes] | None diff --git a/stdlib/urllib/response.pyi b/stdlib/urllib/response.pyi index 970f134e4..2efec0d47 100644 --- a/stdlib/urllib/response.pyi +++ b/stdlib/urllib/response.pyi @@ -4,6 +4,8 @@ from email.message import Message from types import TracebackType from typing import IO, Any, BinaryIO, Callable, Iterable +__all__ = ["addbase", "addclosehook", "addinfo", "addinfourl"] + class addbase(BinaryIO): fp: IO[bytes] def __init__(self, fp: IO[bytes]) -> None: ... diff --git a/stdlib/urllib/robotparser.pyi b/stdlib/urllib/robotparser.pyi index 361126327..d1d69546d 100644 --- a/stdlib/urllib/robotparser.pyi +++ b/stdlib/urllib/robotparser.pyi @@ -1,7 +1,9 @@ import sys from typing import Iterable, NamedTuple -class _RequestRate(NamedTuple): +__all__ = ["RobotFileParser"] + +class RequestRate(NamedTuple): requests: int seconds: int @@ -14,6 +16,6 @@ class RobotFileParser: def mtime(self) -> int: ... def modified(self) -> None: ... def crawl_delay(self, useragent: str) -> str | None: ... - def request_rate(self, useragent: str) -> _RequestRate | None: ... + def request_rate(self, useragent: str) -> RequestRate | None: ... if sys.version_info >= (3, 8): def site_maps(self) -> list[str] | None: ... diff --git a/stdlib/uu.pyi b/stdlib/uu.pyi index aacd458c0..05aa4afef 100644 --- a/stdlib/uu.pyi +++ b/stdlib/uu.pyi @@ -1,6 +1,8 @@ import sys from typing import BinaryIO, Union +__all__ = ["Error", "encode", "decode"] + _File = Union[str, BinaryIO] class Error(Exception): ... diff --git a/stdlib/warnings.pyi b/stdlib/warnings.pyi index 714356162..1799d69f5 100644 --- a/stdlib/warnings.pyi +++ b/stdlib/warnings.pyi @@ -3,6 +3,17 @@ from types import ModuleType, TracebackType from typing import Any, Sequence, TextIO, overload from typing_extensions import Literal +__all__ = [ + "warn", + "warn_explicit", + "showwarning", + "formatwarning", + "filterwarnings", + "simplefilter", + "resetwarnings", + "catch_warnings", +] + _ActionKind = Literal["default", "error", "ignore", "always", "module", "once"] filters: Sequence[tuple[str, str | None, type[Warning], str | None, int]] # undocumented, do not mutate diff --git a/stdlib/wave.pyi b/stdlib/wave.pyi index 22b6d3233..13fa12348 100644 --- a/stdlib/wave.pyi +++ b/stdlib/wave.pyi @@ -3,6 +3,11 @@ from _typeshed import ReadableBuffer, Self from typing import IO, Any, BinaryIO, NamedTuple, NoReturn, Union, overload from typing_extensions import Literal +if sys.version_info >= (3, 9): + __all__ = ["open", "Error", "Wave_read", "Wave_write"] +else: + __all__ = ["open", "openfp", "Error", "Wave_read", "Wave_write"] + _File = Union[str, IO[bytes]] class Error(Exception): ... diff --git a/stdlib/weakref.pyi b/stdlib/weakref.pyi index adf493bad..de771114a 100644 --- a/stdlib/weakref.pyi +++ b/stdlib/weakref.pyi @@ -14,6 +14,22 @@ from _weakref import ( ref as ref, ) +__all__ = [ + "ref", + "proxy", + "getweakrefcount", + "getweakrefs", + "WeakKeyDictionary", + "ReferenceType", + "ProxyType", + "CallableProxyType", + "ProxyTypes", + "WeakValueDictionary", + "WeakSet", + "WeakMethod", + "finalize", +] + _T = TypeVar("_T") _T1 = TypeVar("_T1") _T2 = TypeVar("_T2") diff --git a/stdlib/webbrowser.pyi b/stdlib/webbrowser.pyi index 0a1f41b5e..ce8fca262 100644 --- a/stdlib/webbrowser.pyi +++ b/stdlib/webbrowser.pyi @@ -3,6 +3,8 @@ from abc import abstractmethod from typing import Callable, Sequence from typing_extensions import Literal +__all__ = ["Error", "open", "open_new", "open_new_tab", "get", "register"] + class Error(Exception): ... if sys.version_info >= (3, 7): diff --git a/stdlib/wsgiref/handlers.pyi b/stdlib/wsgiref/handlers.pyi index 11f474660..731cb52ea 100644 --- a/stdlib/wsgiref/handlers.pyi +++ b/stdlib/wsgiref/handlers.pyi @@ -6,6 +6,8 @@ from .headers import Headers from .types import ErrorStream, InputStream, StartResponse, WSGIApplication, WSGIEnvironment from .util import FileWrapper +__all__ = ["BaseHandler", "SimpleHandler", "BaseCGIHandler", "CGIHandler", "IISCGIHandler", "read_environ"] + _exc_info = tuple[Optional[type[BaseException]], Optional[BaseException], Optional[TracebackType]] def format_date_time(timestamp: float | None) -> str: ... # undocumented diff --git a/stdlib/wsgiref/simple_server.pyi b/stdlib/wsgiref/simple_server.pyi index 7e746451d..389d30c22 100644 --- a/stdlib/wsgiref/simple_server.pyi +++ b/stdlib/wsgiref/simple_server.pyi @@ -4,6 +4,8 @@ from typing import TypeVar, overload from .handlers import SimpleHandler from .types import ErrorStream, StartResponse, WSGIApplication, WSGIEnvironment +__all__ = ["WSGIServer", "WSGIRequestHandler", "demo_app", "make_server"] + server_version: str # undocumented sys_version: str # undocumented software_version: str # undocumented diff --git a/stdlib/wsgiref/util.pyi b/stdlib/wsgiref/util.pyi index 0b6198ca5..f2c3135df 100644 --- a/stdlib/wsgiref/util.pyi +++ b/stdlib/wsgiref/util.pyi @@ -3,6 +3,8 @@ from typing import IO, Any, Callable from .types import WSGIEnvironment +__all__ = ["FileWrapper", "guess_scheme", "application_uri", "request_uri", "shift_path_info", "setup_testing_defaults"] + class FileWrapper: filelike: IO[bytes] blksize: int diff --git a/stdlib/wsgiref/validate.pyi b/stdlib/wsgiref/validate.pyi index 68e22727b..35491756c 100644 --- a/stdlib/wsgiref/validate.pyi +++ b/stdlib/wsgiref/validate.pyi @@ -1,6 +1,8 @@ from _typeshed.wsgi import ErrorStream, InputStream, WSGIApplication from typing import Any, Callable, Iterable, Iterator, NoReturn +__all__ = ["validator"] + class WSGIWarning(Warning): ... def validator(application: WSGIApplication) -> WSGIApplication: ... diff --git a/stdlib/xdrlib.pyi b/stdlib/xdrlib.pyi index f59843f8e..e9716e290 100644 --- a/stdlib/xdrlib.pyi +++ b/stdlib/xdrlib.pyi @@ -1,5 +1,7 @@ from typing import Callable, Sequence, TypeVar +__all__ = ["Error", "Packer", "Unpacker", "ConversionError"] + _T = TypeVar("_T") class Error(Exception): diff --git a/stdlib/xml/dom/minicompat.pyi b/stdlib/xml/dom/minicompat.pyi index e37b7cd89..411401d11 100644 --- a/stdlib/xml/dom/minicompat.pyi +++ b/stdlib/xml/dom/minicompat.pyi @@ -1,5 +1,7 @@ from typing import Any, Iterable, TypeVar +__all__ = ["NodeList", "EmptyNodeList", "StringTypes", "defproperty"] + _T = TypeVar("_T") StringTypes: tuple[type[str]] diff --git a/stdlib/xml/dom/xmlbuilder.pyi b/stdlib/xml/dom/xmlbuilder.pyi index 2738d735e..0615edb80 100644 --- a/stdlib/xml/dom/xmlbuilder.pyi +++ b/stdlib/xml/dom/xmlbuilder.pyi @@ -4,6 +4,8 @@ from urllib.request import OpenerDirector from xml.dom.expatbuilder import ExpatBuilder, ExpatBuilderNS from xml.dom.minidom import Node +__all__ = ["DOMBuilder", "DOMEntityResolver", "DOMInputSource"] + # UNKNOWN TYPES: # - `Options.errorHandler`. # The same as `_DOMBuilderErrorHandlerType`? diff --git a/stdlib/xml/etree/ElementTree.pyi b/stdlib/xml/etree/ElementTree.pyi index 265f42a47..aef8285ee 100644 --- a/stdlib/xml/etree/ElementTree.pyi +++ b/stdlib/xml/etree/ElementTree.pyi @@ -17,6 +17,90 @@ from typing import ( ) from typing_extensions import Literal, SupportsIndex, TypeGuard +if sys.version_info >= (3, 9): + __all__ = [ + "Comment", + "dump", + "Element", + "ElementTree", + "fromstring", + "fromstringlist", + "indent", + "iselement", + "iterparse", + "parse", + "ParseError", + "PI", + "ProcessingInstruction", + "QName", + "SubElement", + "tostring", + "tostringlist", + "TreeBuilder", + "VERSION", + "XML", + "XMLID", + "XMLParser", + "XMLPullParser", + "register_namespace", + "canonicalize", + "C14NWriterTarget", + ] +elif sys.version_info >= (3, 8): + __all__ = [ + "Comment", + "dump", + "Element", + "ElementTree", + "fromstring", + "fromstringlist", + "iselement", + "iterparse", + "parse", + "ParseError", + "PI", + "ProcessingInstruction", + "QName", + "SubElement", + "tostring", + "tostringlist", + "TreeBuilder", + "VERSION", + "XML", + "XMLID", + "XMLParser", + "XMLPullParser", + "register_namespace", + "canonicalize", + "C14NWriterTarget", + ] +else: + __all__ = [ + "Comment", + "dump", + "Element", + "ElementTree", + "fromstring", + "fromstringlist", + "iselement", + "iterparse", + "parse", + "ParseError", + "PI", + "ProcessingInstruction", + "QName", + "SubElement", + "tostring", + "tostringlist", + "TreeBuilder", + "VERSION", + "XML", + "XMLID", + "XMLParser", + "XMLPullParser", + "register_namespace", + ] + _T = TypeVar("_T") _FileRead = Union[StrOrBytesPath, FileDescriptor, SupportsRead[bytes], SupportsRead[str]] _FileWriteC14N = Union[StrOrBytesPath, FileDescriptor, SupportsWrite[bytes]] diff --git a/stdlib/zipapp.pyi b/stdlib/zipapp.pyi index 581d2b72a..17c3503ad 100644 --- a/stdlib/zipapp.pyi +++ b/stdlib/zipapp.pyi @@ -2,6 +2,8 @@ import sys from pathlib import Path from typing import BinaryIO, Callable, Union +__all__ = ["ZipAppError", "create_archive", "get_interpreter"] + _Path = Union[str, Path, BinaryIO] class ZipAppError(ValueError): ... diff --git a/stdlib/zipfile.pyi b/stdlib/zipfile.pyi index b60ece6ad..3db178dce 100644 --- a/stdlib/zipfile.pyi +++ b/stdlib/zipfile.pyi @@ -6,6 +6,38 @@ from types import TracebackType from typing import IO, Any, Callable, Iterable, Iterator, Protocol, Sequence, overload from typing_extensions import Literal +if sys.version_info >= (3, 8): + __all__ = [ + "BadZipFile", + "BadZipfile", + "error", + "ZIP_STORED", + "ZIP_DEFLATED", + "ZIP_BZIP2", + "ZIP_LZMA", + "is_zipfile", + "ZipInfo", + "ZipFile", + "PyZipFile", + "LargeZipFile", + "Path", + ] +else: + __all__ = [ + "BadZipFile", + "BadZipfile", + "error", + "ZIP_STORED", + "ZIP_DEFLATED", + "ZIP_BZIP2", + "ZIP_LZMA", + "is_zipfile", + "ZipInfo", + "ZipFile", + "PyZipFile", + "LargeZipFile", + ] + _DateTuple = tuple[int, int, int, int, int, int] _ReadWriteMode = Literal["r", "w"] _ReadWriteBinaryMode = Literal["r", "w", "rb", "wb"] diff --git a/stdlib/zipimport.pyi b/stdlib/zipimport.pyi index 982aa05ee..a0e6d9e25 100644 --- a/stdlib/zipimport.pyi +++ b/stdlib/zipimport.pyi @@ -7,6 +7,9 @@ from typing import Any if sys.version_info >= (3, 7): from importlib.abc import ResourceReader +if sys.version_info >= (3, 8): + __all__ = ["ZipImportError", "zipimporter"] + class ZipImportError(ImportError): ... class zipimporter: diff --git a/stdlib/zoneinfo/__init__.pyi b/stdlib/zoneinfo/__init__.pyi index 77148e835..d766eab6b 100644 --- a/stdlib/zoneinfo/__init__.pyi +++ b/stdlib/zoneinfo/__init__.pyi @@ -2,6 +2,8 @@ from _typeshed import Self, StrPath from datetime import tzinfo from typing import Any, Iterable, Protocol, Sequence +__all__ = ["ZoneInfo", "reset_tzpath", "available_timezones", "TZPATH", "ZoneInfoNotFoundError", "InvalidTZPathWarning"] + class _IOBytes(Protocol): def read(self, __size: int) -> bytes: ... def seek(self, __size: int, __whence: int = ...) -> Any: ...