From 44a852dff5f3bc30beb7a7c3eafc207c147e1ca6 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Wed, 10 Jun 2020 21:23:58 -0700 Subject: [PATCH] Literal: always import from typing_extensions for simplicity (#4219) --- stdlib/2and3/codecs.pyi | 6 +----- stdlib/2and3/imaplib.pyi | 7 +------ stdlib/2and3/msilib/__init__.pyi | 7 +------ stdlib/2and3/socket.pyi | 6 +----- stdlib/2and3/winsound.pyi | 6 +----- stdlib/2and3/xml/etree/ElementTree.pyi | 9 +-------- stdlib/3/_sitebuiltins.pyi | 8 +------- stdlib/3/_winapi.pyi | 6 +----- stdlib/3/ast.pyi | 7 +------ stdlib/3/asyncio/base_events.pyi | 6 +----- stdlib/3/asyncio/base_futures.pyi | 9 ++------- stdlib/3/asyncio/sslproto.pyi | 6 +----- stdlib/3/asyncio/tasks.pyi | 6 +----- stdlib/3/fcntl.pyi | 10 ++-------- stdlib/3/http/__init__.pyi | 5 +---- stdlib/3/multiprocessing/__init__.pyi | 11 +++-------- stdlib/3/multiprocessing/context.pyi | 10 ++-------- stdlib/3/tempfile.pyi | 11 +---------- stdlib/3/xmlrpc/client.pyi | 8 ++------ third_party/2and3/dateutil/easter.pyi | 6 +----- third_party/2and3/jinja2/utils.pyi | 14 ++++---------- third_party/2and3/werkzeug/wrappers.pyi | 6 +----- 22 files changed, 31 insertions(+), 139 deletions(-) diff --git a/stdlib/2and3/codecs.pyi b/stdlib/2and3/codecs.pyi index 701b96f34..e98dee161 100644 --- a/stdlib/2and3/codecs.pyi +++ b/stdlib/2and3/codecs.pyi @@ -3,11 +3,7 @@ from typing import Any, BinaryIO, Callable, Generator, IO, Iterable, Iterator, L from abc import abstractmethod import types - -if sys.version_info < (3,) or sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from typing_extensions import Literal # TODO: this only satisfies the most common interface, where # bytes (py2 str) is the raw form and str (py2 unicode) is the cooked form. diff --git a/stdlib/2and3/imaplib.pyi b/stdlib/2and3/imaplib.pyi index 8a58846ee..a5962a836 100644 --- a/stdlib/2and3/imaplib.pyi +++ b/stdlib/2and3/imaplib.pyi @@ -1,15 +1,10 @@ -import imaplib import subprocess import sys import time from socket import socket as _socket from ssl import SSLSocket, SSLContext from typing import Any, Callable, Dict, IO, List, Optional, Pattern, Text, Tuple, Type, Union - -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from typing_extensions import Literal # TODO: Commands should use their actual return types, not this type alias. # E.g. Tuple[Literal["OK"], List[bytes]] diff --git a/stdlib/2and3/msilib/__init__.pyi b/stdlib/2and3/msilib/__init__.pyi index b61b7d642..0cfe0dc27 100644 --- a/stdlib/2and3/msilib/__init__.pyi +++ b/stdlib/2and3/msilib/__init__.pyi @@ -1,12 +1,7 @@ - import sys from typing import List, Tuple, Union, Set, Optional, Dict, Container, Any, Type, Iterable, Sequence from types import ModuleType - -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from typing_extensions import Literal if sys.platform == 'win32': from _msi import _Database diff --git a/stdlib/2and3/socket.pyi b/stdlib/2and3/socket.pyi index 89bb7876f..d74101fe3 100644 --- a/stdlib/2and3/socket.pyi +++ b/stdlib/2and3/socket.pyi @@ -16,11 +16,7 @@ CPython C source: https://github.com/python/cpython/blob/master/Modules/socketmo # adapted for Python 2.7 by Michal Pokorny import sys from typing import Any, BinaryIO, Iterable, List, Optional, Text, TextIO, Tuple, TypeVar, Union, overload - -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from typing_extensions import Literal # ----- Constants ----- diff --git a/stdlib/2and3/winsound.pyi b/stdlib/2and3/winsound.pyi index fd66e966a..14ca50993 100644 --- a/stdlib/2and3/winsound.pyi +++ b/stdlib/2and3/winsound.pyi @@ -1,10 +1,6 @@ - import sys from typing import Optional, Union, overload -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from typing_extensions import Literal if sys.platform == "win32": SND_FILENAME: int diff --git a/stdlib/2and3/xml/etree/ElementTree.pyi b/stdlib/2and3/xml/etree/ElementTree.pyi index 462491b5f..4722ba271 100644 --- a/stdlib/2and3/xml/etree/ElementTree.pyi +++ b/stdlib/2and3/xml/etree/ElementTree.pyi @@ -1,5 +1,3 @@ -# Stubs for xml.etree.ElementTree - from typing import ( Any, Callable, @@ -21,13 +19,8 @@ from typing import ( Union, overload, ) -import io import sys - -if sys.version_info < (3,) or sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from typing_extensions import Literal VERSION: str diff --git a/stdlib/3/_sitebuiltins.pyi b/stdlib/3/_sitebuiltins.pyi index 2a15d9744..bf2713f8b 100644 --- a/stdlib/3/_sitebuiltins.pyi +++ b/stdlib/3/_sitebuiltins.pyi @@ -1,11 +1,5 @@ - -import sys from typing import Optional, NoReturn, ClassVar, Iterable - -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from typing_extensions import Literal class Quitter: name: str diff --git a/stdlib/3/_winapi.pyi b/stdlib/3/_winapi.pyi index a535de150..6a8990c4f 100644 --- a/stdlib/3/_winapi.pyi +++ b/stdlib/3/_winapi.pyi @@ -1,10 +1,6 @@ import sys from typing import Any, Union, Tuple, Optional, overload, Dict, NoReturn, Sequence - -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from typing_extensions import Literal CREATE_NEW_CONSOLE: int CREATE_NEW_PROCESS_GROUP: int diff --git a/stdlib/3/ast.pyi b/stdlib/3/ast.pyi index 56d4dc134..3b76bf7f4 100644 --- a/stdlib/3/ast.pyi +++ b/stdlib/3/ast.pyi @@ -4,6 +4,7 @@ import sys # internal Bazel integration. import typing as _typing from typing import Any, Iterator, Optional, TypeVar, Union, overload +from typing_extensions import Literal # The same unorthodox Bazel integration causes issues with sys, which # is imported in both modules. unfortunately we can't just rename sys, @@ -11,12 +12,6 @@ from typing import Any, Iterator, Optional, TypeVar, Union, overload # sys. from _ast import * # type: ignore -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal - - if sys.version_info >= (3, 8): class Num(Constant): ... class Str(Constant): ... diff --git a/stdlib/3/asyncio/base_events.pyi b/stdlib/3/asyncio/base_events.pyi index 3705a1124..fcf675355 100644 --- a/stdlib/3/asyncio/base_events.pyi +++ b/stdlib/3/asyncio/base_events.pyi @@ -2,6 +2,7 @@ from socket import socket, _Address, _RetAddress import ssl import sys from typing import Any, Awaitable, Callable, Dict, Generator, IO, List, Optional, Sequence, Tuple, TypeVar, Union, overload +from typing_extensions import Literal from abc import ABCMeta from asyncio.futures import Future from asyncio.events import AbstractEventLoop, AbstractServer, Handle, TimerHandle @@ -10,11 +11,6 @@ from asyncio.tasks import Task from asyncio.transports import BaseTransport from _types import FileDescriptorLike -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal - if sys.version_info >= (3, 7): from contextvars import Context diff --git a/stdlib/3/asyncio/base_futures.pyi b/stdlib/3/asyncio/base_futures.pyi index f91c886ef..2298e500c 100644 --- a/stdlib/3/asyncio/base_futures.pyi +++ b/stdlib/3/asyncio/base_futures.pyi @@ -1,13 +1,8 @@ - -import sys import contextvars from typing import List, Tuple, Callable, Sequence -from . import futures +from typing_extensions import Literal -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from . import futures _PENDING: Literal["PENDING"] # undocumented _CANCELLED: Literal["CANCELLED"] # undocumented diff --git a/stdlib/3/asyncio/sslproto.pyi b/stdlib/3/asyncio/sslproto.pyi index a86a1b17b..18bf1d874 100644 --- a/stdlib/3/asyncio/sslproto.pyi +++ b/stdlib/3/asyncio/sslproto.pyi @@ -3,6 +3,7 @@ import sys import ssl from typing import ClassVar, Optional, List, Tuple, Callable, Dict, Any, Deque +from typing_extensions import Literal from . import transports from . import constants @@ -10,11 +11,6 @@ from . import events from . import protocols from . import futures -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal - def _create_transport_context(server_side: bool, server_hostname: Optional[str]) -> ssl.SSLContext: ... _UNWRAPPED: Literal["UNWRAPPED"] diff --git a/stdlib/3/asyncio/tasks.pyi b/stdlib/3/asyncio/tasks.pyi index f7de40db1..7f73bb2a4 100644 --- a/stdlib/3/asyncio/tasks.pyi +++ b/stdlib/3/asyncio/tasks.pyi @@ -3,15 +3,11 @@ import sys from typing import ( Any, TypeVar, Set, List, TextIO, Union, Tuple, Generic, Generator, Iterable, Awaitable, overload, Iterator, Optional, ) +from typing_extensions import Literal from types import FrameType from .events import AbstractEventLoop from .futures import Future -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal - _T = TypeVar('_T') _T1 = TypeVar('_T1') _T2 = TypeVar('_T2') diff --git a/stdlib/3/fcntl.pyi b/stdlib/3/fcntl.pyi index 735deeaad..b35bf5212 100644 --- a/stdlib/3/fcntl.pyi +++ b/stdlib/3/fcntl.pyi @@ -1,13 +1,7 @@ -# Stubs for fcntl from array import array -from io import IOBase -from typing import IO, Any, Union, overload +from typing import Any, Union, overload from _types import FileDescriptorLike -import sys -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from typing_extensions import Literal FASYNC: int FD_CLOEXEC: int diff --git a/stdlib/3/http/__init__.pyi b/stdlib/3/http/__init__.pyi index 2c61bd9d7..93895549c 100644 --- a/stdlib/3/http/__init__.pyi +++ b/stdlib/3/http/__init__.pyi @@ -1,9 +1,6 @@ import sys from enum import IntEnum -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from typing_extensions import Literal class HTTPStatus(IntEnum): @property diff --git a/stdlib/3/multiprocessing/__init__.pyi b/stdlib/3/multiprocessing/__init__.pyi index 569e6e394..fb8021ffe 100644 --- a/stdlib/3/multiprocessing/__init__.pyi +++ b/stdlib/3/multiprocessing/__init__.pyi @@ -1,8 +1,6 @@ -# Stubs for multiprocessing - import sys -from typing import Any, Callable, Iterable, Mapping, Optional, List, Union, Sequence, Tuple, Type, overload - +from typing import Any, Callable, Iterable, Optional, List, Union, Sequence, Tuple, Type, overload +from typing_extensions import Literal from ctypes import _CData from logging import Logger from multiprocessing import connection, pool, spawn, synchronize @@ -24,9 +22,6 @@ from multiprocessing.spawn import set_executable as set_executable if sys.version_info >= (3, 8): from multiprocessing.process import parent_process as parent_process - from typing import Literal -else: - from typing_extensions import Literal if sys.platform != "win32": from multiprocessing.context import ForkContext, ForkServerContext @@ -55,7 +50,7 @@ def Pool(processes: Optional[int] = ..., initargs: Iterable[Any] = ..., maxtasksperchild: Optional[int] = ...) -> pool.Pool: ... -class Array(): +class Array: value: Any = ... def __init__(self, typecode_or_type: Union[str, Type[_CData]], size_or_initializer: Union[int, Sequence[Any]], *, lock: Union[bool, _LockLike] = ...) -> None: ... diff --git a/stdlib/3/multiprocessing/context.pyi b/stdlib/3/multiprocessing/context.pyi index 49b4e8d3d..ced1d26eb 100644 --- a/stdlib/3/multiprocessing/context.pyi +++ b/stdlib/3/multiprocessing/context.pyi @@ -1,17 +1,11 @@ -# Stubs for multiprocessing.context - from logging import Logger import multiprocessing from multiprocessing import synchronize from multiprocessing import queues from multiprocessing.process import BaseProcess import sys -from typing import Any, Callable, Iterable, Optional, List, Mapping, Sequence, Type, Union, overload - -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from typing import Any, Callable, Iterable, Optional, List, Sequence, Type, Union, overload +from typing_extensions import Literal _LockLike = Union[synchronize.Lock, synchronize.RLock] diff --git a/stdlib/3/tempfile.pyi b/stdlib/3/tempfile.pyi index a50da2961..0f5cdecf4 100644 --- a/stdlib/3/tempfile.pyi +++ b/stdlib/3/tempfile.pyi @@ -1,17 +1,8 @@ -# Stubs for tempfile -# Ron Murawski - -# based on http://docs.python.org/3.3/library/tempfile.html - import os import sys from types import TracebackType from typing import Any, AnyStr, Generic, IO, Iterable, Iterator, List, Optional, overload, Tuple, Type, TypeVar, Union - -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from typing_extensions import Literal # global variables TMP_MAX: int diff --git a/stdlib/3/xmlrpc/client.pyi b/stdlib/3/xmlrpc/client.pyi index e54c928b2..931260423 100644 --- a/stdlib/3/xmlrpc/client.pyi +++ b/stdlib/3/xmlrpc/client.pyi @@ -4,15 +4,11 @@ import time import gzip import http.client -from typing import Any, Callable, Dict, IO, Iterable, List, Mapping, Optional, Protocol, Text, Tuple, Type, TypeVar, Union, overload +from typing import Any, Callable, Dict, Iterable, List, Mapping, Optional, Protocol, Text, Tuple, Type, TypeVar, Union, overload +from typing_extensions import Literal from types import TracebackType from datetime import datetime -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal - _T = TypeVar("_T") class _HasTimeTuple(Protocol): def timetuple(self) -> time.struct_time: ... diff --git a/third_party/2and3/dateutil/easter.pyi b/third_party/2and3/dateutil/easter.pyi index eefc828fa..33e366d47 100644 --- a/third_party/2and3/dateutil/easter.pyi +++ b/third_party/2and3/dateutil/easter.pyi @@ -1,9 +1,5 @@ from datetime import date -import sys -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal +from typing_extensions import Literal EASTER_JULIAN: Literal[1] EASTER_ORTHODOX: Literal[2] diff --git a/third_party/2and3/jinja2/utils.pyi b/third_party/2and3/jinja2/utils.pyi index 1572080a3..2d5bd637d 100644 --- a/third_party/2and3/jinja2/utils.pyi +++ b/third_party/2and3/jinja2/utils.pyi @@ -1,5 +1,5 @@ -import sys from typing import Any, Callable, IO, Iterable, Optional, Protocol, Text, TypeVar, Union +from typing_extensions import Literal from _typeshed import AnyPath from markupsafe import Markup as Markup, escape as escape, soft_unicode as soft_unicode @@ -8,24 +8,18 @@ missing: Any internal_code: Any concat: Any -if sys.version_info >= (3, 8): - from typing import Literal - _True = Literal[True] -else: - _True = bool - _CallableT = TypeVar("_CallableT", bound=Callable[..., Any]) class _ContextFunction(Protocol[_CallableT]): - contextfunction: _True + contextfunction: Literal[True] __call__: _CallableT class _EvalContextFunction(Protocol[_CallableT]): - evalcontextfunction: _True + evalcontextfunction: Literal[True] __call__: _CallableT class _EnvironmentFunction(Protocol[_CallableT]): - environmentfunction: _True + environmentfunction: Literal[True] __call__: _CallableT def contextfunction(f: _CallableT) -> _ContextFunction[_CallableT]: ... diff --git a/third_party/2and3/werkzeug/wrappers.pyi b/third_party/2and3/werkzeug/wrappers.pyi index ea1b01119..765694b02 100644 --- a/third_party/2and3/werkzeug/wrappers.pyi +++ b/third_party/2and3/werkzeug/wrappers.pyi @@ -3,6 +3,7 @@ from datetime import datetime from typing import ( Any, Callable, Iterable, Iterator, Mapping, MutableMapping, Optional, Sequence, Text, Tuple, Type, TypeVar, Union, overload ) +from typing_extensions import Literal from _typeshed.wsgi import WSGIEnvironment, InputStream from .datastructures import ( @@ -12,11 +13,6 @@ from .datastructures import ( ) from .useragents import UserAgent -if sys.version_info >= (3, 8): - from typing import Literal -else: - from typing_extensions import Literal - class BaseRequest: charset: str encoding_errors: str