Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
7710e92
Add `data` to UserList class, fix UserDict.data type (#3316)
CraftSpider Oct 7, 2019
6e4708e
Add type stub for decorator lib (#3038)
RafiB Oct 7, 2019
a6f146e
Fix return type of werkzeug's ProxyFix (#3320)
lalinsky Oct 8, 2019
256b3ce
Remove a bunch of unused imports (#3323)
srittau Oct 8, 2019
d82d339
Minor flake8 improvements (#3324)
srittau Oct 8, 2019
4027add
__init__.pyi: Add missing methods on pkg_resources.VersionConflict (#…
utkarsh2102 Oct 8, 2019
50961d4
protobuf: Add Message.FromString static method. (#3327)
benjaminp Oct 9, 2019
3ee8fc2
Add missing Optional types in urllib.parse (#3263)
robertschweizer Oct 9, 2019
824e94a
Make 2-arg iter() retrun type match passed callable's return type (#3…
wbolster Oct 9, 2019
0914d50
Fix the signature of decorator.contextmanager (#3330)
JukkaL Oct 9, 2019
3a2fdfd
Make it explicit that the cryptography stubs are incomplete (#3331)
JukkaL Oct 9, 2019
bd7222c
models.pyi: Add missing requests.Respons.next() (#3328)
utkarsh2102 Oct 9, 2019
07c8675
Remove unused # type: ignore comments (#3325)
srittau Oct 9, 2019
f0ccb32
Mark some urllib.parse return fields optional (#3332)
Oct 9, 2019
57384ce
Revised stubs for geoip2 third party library (#3317)
jolaf Oct 10, 2019
1a932ce
message.pyi: Change HeaderType to Any (#2924)
utkarsh2102 Oct 10, 2019
eca9375
Update the signature of decorator.decorator (#3336)
JukkaL Oct 10, 2019
fc23c82
protobuf: Tighten annotations for MergeFromString and ParseFromString…
benjaminp Oct 10, 2019
d0beab9
Fix an argument to csv.DictReader() (#3339)
martindemello Oct 11, 2019
8a7d617
Python3.8 additions and changes (#3337)
srittau Oct 11, 2019
d41bcd3
Add assorted annotations (#3335)
srittau Oct 11, 2019
9b09221
Allow callables in _SourceObjectType (Python 2) (#3338)
The-Compiler Oct 11, 2019
036abc7
protobuf: Narrow type of Message.FromString. (#3340)
benjaminp Oct 11, 2019
bb12f3b
Fix argument type for logging.Formatter.formatTime (#3343)
The-Compiler Oct 11, 2019
6a92ae6
Change type for urllib headers from Mapping to email.message.Message …
mthuurne Oct 11, 2019
61d5f76
find_loader() can return None (#3341)
srittau Oct 11, 2019
6354bc8
Ensurepip stubs (#3349)
CraftSpider Oct 12, 2019
583784d
Add missing exception to smtplib (#3348)
srittau Oct 12, 2019
8ec2570
Update 'format' README section -- don't imply it is executable (#3350)
gvanrossum Oct 12, 2019
62bbdf8
Add several Python 3.8 annotations (#3347)
srittau Oct 12, 2019
91b72d4
typing.pyi: Remove verbose and rename from NamedTuple (#3352)
utkarsh2102 Oct 12, 2019
2bd1b75
Extract asyncio exceptions into a separate module (Python 3.8) (#3356)
Hanaasagi Oct 13, 2019
de26a3d
Remove raise statements from function bodies (#3355)
srittau Oct 13, 2019
950f391
Remove unnecessary __all__ annotations (#3357)
srittau Oct 13, 2019
6507875
Annotate Python 3.8 removals (#3359)
srittau Oct 14, 2019
0501e2b
Annotations for remaining Python 3.8 additions (#3358)
srittau Oct 14, 2019
6b55f5c
Clean up multiprocessing + shared_memory (#3351)
srittau Oct 14, 2019
7e99848
fixing https://github.com/python/typeshed/issues/3361 (#3362)
arnimarj Oct 14, 2019
add16d2
protobuf: Fix inadvertently deleted annotations. (#3364)
benjaminp Oct 14, 2019
6c42f6b
Add bdb stubs (#3354)
CraftSpider Oct 15, 2019
dfe6862
Add public missing asyncio stubs for windows and proactor files (#3234)
CraftSpider Oct 15, 2019
b969ead
Reorder memoryview.__setitem__ overloads (#3365)
srittau Oct 15, 2019
89f0f63
Fix HTMLParser.handle_startendtag() attrs annotation (#3366)
cptpcrd Oct 15, 2019
67629a1
Add stubs for cgitb (#3368)
CraftSpider Oct 16, 2019
299d89a
generate_tokens(readline) must return bytes (#3372)
srittau Oct 16, 2019
6058c23
Make path separator based on OS separator (#3375)
CraftSpider Oct 16, 2019
6e4f640
Add PEP 593 (Annotated etc.) typing_extensions stubs (#3369)
jstasiak Oct 16, 2019
7c6104d
Don't shadow ast.Tuple with typing.Tuple (#3376)
msullivan Oct 16, 2019
6b68fb0
pymysql.Cursor is a context manager (#3379)
trim21 Oct 17, 2019
fa9e1ab
multiprocessing.pool: Fix return of map_async() (#3378)
nbrahms Oct 17, 2019
fd7f106
Change select() stub to accept iterables, not just sequences (#3382)
jstasiak Oct 17, 2019
966f8d2
Revert __import__ function annotation to return type back to Any (#3383)
ericvw Oct 17, 2019
38fbdc9
Fix show_default type in click.option signatures (#3385)
dmtucker Oct 18, 2019
bf862d9
Add missing @property to Response.next() stub (#3384)
jrheard Oct 18, 2019
ffd73b3
Add shlex.shlex.next in Python 2. (#3389)
rchen152 Oct 18, 2019
3fbebc7
Require a more recent pytype version. (#3388)
rchen152 Oct 18, 2019
2b9dc7b
Adds `posonlyargs` property to `arguments` for python3.8+ (#3390)
sobolevn Oct 19, 2019
ec7960a
Convert namedtuples to class syntax (#3321)
srittau Oct 20, 2019
f286912
Change pprint depth type to Optional[int] (#3392)
llchan Oct 20, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions .flake8
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# 7155 E302 expected 2 blank lines
# 1463 F401 imported but unused
# 967 E701 multiple statements on one line (colon)
# 457 F811 redefinition
# 457 F811 redefinition (should be fixed in pyflakes 2.1.2)
# 390 E305 expected 2 blank lines
# 4 E741 ambiguous variable name

Expand All @@ -18,8 +18,6 @@
[flake8]
ignore = F401, F403, F405, F811, E301, E302, E305, E501, E701, E704, E741, B303, W504
# We are checking with Python 3 but many of the stubs are Python 2 stubs.
# A nice future improvement would be to provide separate .flake8
# configurations for Python 2 and Python 3 files.
builtins = StandardError,apply,basestring,buffer,cmp,coerce,execfile,file,intern,long,raw_input,reduce,reload,unichr,unicode,xrange
exclude = .venv*,@*,.git
max-line-length = 130
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,13 @@ pytype repo.

## Format

Each Python module is represented by a `.pyi` "stub". This is a normal Python
file (i.e., it can be interpreted by Python 3), except all the methods are empty.
Each Python module is represented by a `.pyi` "stub file". This is a
syntactically valid Python file, although it usually cannot be run by
Python 3 (since forward references don't require string quotes). All
the methods are empty.

Python function annotations ([PEP 3107](https://www.python.org/dev/peps/pep-3107/))
are used to describe the types the function has.
are used to describe the signature of each function or method.

See [PEP 484](http://www.python.org/dev/peps/pep-0484/) for the exact
syntax of the stub files and [CONTRIBUTING.md](CONTRIBUTING.md) for the
Expand Down
4 changes: 2 additions & 2 deletions requirements-tests-py3.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ git+https://github.com/python/mypy.git@master
typed-ast>=1.0.4
black==19.3b0
flake8==3.7.8
flake8-bugbear==19.3.0
flake8-bugbear==19.8.0
flake8-pyi==19.3.0
isort==4.3.21
pytype>=2019.7.30
pytype>=2019.10.17
2 changes: 1 addition & 1 deletion stdlib/2/UserDict.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ _VT = TypeVar('_VT')
_T = TypeVar('_T')

class UserDict(Dict[_KT, _VT], Generic[_KT, _VT]):
data: Mapping[_KT, _VT]
data: Dict[_KT, _VT]

def __init__(self, initialdata: Mapping[_KT, _VT] = ...) -> None: ...

Expand Down
3 changes: 2 additions & 1 deletion stdlib/2/UserList.pyi
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from typing import Iterable, MutableSequence, TypeVar, Union, overload
from typing import Iterable, MutableSequence, TypeVar, Union, overload, List

_T = TypeVar("_T")
_S = TypeVar("_S")

class UserList(MutableSequence[_T]):
data: List[_T]
def insert(self, index: int, object: _T) -> None: ...
@overload
def __setitem__(self, i: int, o: _T) -> None: ...
Expand Down
2 changes: 1 addition & 1 deletion stdlib/2/UserString.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class UserString(Sequence[UserString]):
def upper(self: _UST) -> _UST: ...
def zfill(self: _UST, width: int) -> _UST: ...

class MutableString(UserString, MutableSequence[MutableString]): # type: ignore
class MutableString(UserString, MutableSequence[MutableString]):
@overload
def __getitem__(self: _MST, i: int) -> _MST: ...
@overload
Expand Down
51 changes: 27 additions & 24 deletions stdlib/2/__builtin__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,17 @@ from typing import (
)
from abc import abstractmethod, ABCMeta
from ast import mod, AST
from types import TracebackType, CodeType, ModuleType
from types import TracebackType, CodeType
import sys

if sys.version_info >= (3,):
from typing import SupportsBytes, SupportsRound

if sys.version_info >= (3, 8):
from typing import Literal
else:
from typing_extensions import Literal

_T = TypeVar('_T')
_T_co = TypeVar('_T_co', covariant=True)
_KT = TypeVar('_KT')
Expand All @@ -29,6 +34,9 @@ _T4 = TypeVar('_T4')
_T5 = TypeVar('_T5')
_TT = TypeVar('_TT', bound='type')

class _SupportsIndex(Protocol):
def __index__(self) -> int: ...

class object:
__doc__: Optional[str]
__dict__: Dict[str, Any]
Expand Down Expand Up @@ -129,10 +137,12 @@ class super(object):

class int:
@overload
def __init__(self, x: Union[Text, bytes, SupportsInt] = ...) -> None: ...
def __init__(self, x: Union[Text, bytes, SupportsInt, _SupportsIndex] = ...) -> None: ...
@overload
def __init__(self, x: Union[Text, bytes, bytearray], base: int) -> None: ...

if sys.version_info >= (3, 8):
def as_integer_ratio(self) -> Tuple[int, Literal[1]]: ...
@property
def real(self) -> int: ...
@property
Expand Down Expand Up @@ -209,7 +219,7 @@ class int:
def __index__(self) -> int: ...

class float:
def __init__(self, x: Union[SupportsFloat, Text, bytes, bytearray] = ...) -> None: ...
def __init__(self, x: Union[SupportsFloat, _SupportsIndex, Text, bytes, bytearray] = ...) -> None: ...
def as_integer_ratio(self) -> Tuple[int, int]: ...
def hex(self) -> str: ...
def is_integer(self) -> bool: ...
Expand Down Expand Up @@ -271,11 +281,9 @@ class float:

class complex:
@overload
def __init__(self, re: float = ..., im: float = ...) -> None: ...
@overload
def __init__(self, s: str) -> None: ...
def __init__(self, real: float = ..., imag: float = ...) -> None: ...
@overload
def __init__(self, s: SupportsComplex) -> None: ...
def __init__(self, real: Union[str, SupportsComplex, _SupportsIndex]) -> None: ...

@property
def real(self) -> float: ...
Expand Down Expand Up @@ -804,12 +812,12 @@ class memoryview(Sized, Container[_mv_container_type]):
def __iter__(self) -> Iterator[_mv_container_type]: ...
def __len__(self) -> int: ...

@overload
def __setitem__(self, s: slice, o: memoryview) -> None: ...
@overload
def __setitem__(self, i: int, o: bytes) -> None: ...
@overload
def __setitem__(self, s: slice, o: Sequence[bytes]) -> None: ...
@overload
def __setitem__(self, s: slice, o: memoryview) -> None: ...

def tobytes(self) -> bytes: ...
def tolist(self) -> List[int]: ...
Expand Down Expand Up @@ -987,6 +995,8 @@ class dict(MutableMapping[_KT, _VT], Generic[_KT, _VT]):
def __setitem__(self, k: _KT, v: _VT) -> None: ...
def __delitem__(self, v: _KT) -> None: ...
def __iter__(self) -> Iterator[_KT]: ...
if sys.version_info >= (3, 8):
def __reversed__(self) -> Iterator[_KT]: ...
def __str__(self) -> str: ...
__hash__: None # type: ignore

Expand Down Expand Up @@ -1117,8 +1127,6 @@ if sys.version_info < (3,):
if sys.version_info >= (3,):
def ascii(__o: object) -> str: ...

class _SupportsIndex(Protocol):
def __index__(self) -> int: ...
def bin(__number: Union[int, _SupportsIndex]) -> str: ...

if sys.version_info >= (3, 7):
Expand Down Expand Up @@ -1160,20 +1168,15 @@ if sys.version_info >= (3,):
def filter(__function: Callable[[_T], Any], __iterable: Iterable[_T]) -> Iterator[_T]: ...
else:
@overload
def filter(__function: Callable[[AnyStr], Any], # type: ignore
__iterable: AnyStr) -> AnyStr: ...
def filter(__function: Callable[[AnyStr], Any], __iterable: AnyStr) -> AnyStr: ... # type: ignore
@overload
def filter(__function: None, # type: ignore
__iterable: Tuple[Optional[_T], ...]) -> Tuple[_T, ...]: ...
def filter(__function: None, __iterable: Tuple[Optional[_T], ...]) -> Tuple[_T, ...]: ... # type: ignore
@overload
def filter(__function: Callable[[_T], Any], # type: ignore
__iterable: Tuple[_T, ...]) -> Tuple[_T, ...]: ...
def filter(__function: Callable[[_T], Any], __iterable: Tuple[_T, ...]) -> Tuple[_T, ...]: ... # type: ignore
@overload
def filter(__function: None,
__iterable: Iterable[Optional[_T]]) -> List[_T]: ...
def filter(__function: None, __iterable: Iterable[Optional[_T]]) -> List[_T]: ...
@overload
def filter(__function: Callable[[_T], Any],
__iterable: Iterable[_T]) -> List[_T]: ...
def filter(__function: Callable[[_T], Any], __iterable: Iterable[_T]) -> List[_T]: ...
def format(__o: object, __format_spec: str = ...) -> str: ... # TODO unicode
def getattr(__o: Any, name: Text, __default: Any = ...) -> Any: ...
def globals() -> Dict[str, Any]: ...
Expand All @@ -1193,7 +1196,7 @@ def iter(__iterable: Iterable[_T]) -> Iterator[_T]: ...
@overload
def iter(__function: Callable[[], Optional[_T]], __sentinel: None) -> Iterator[_T]: ...
@overload
def iter(__function: Callable[[], Any], __sentinel: Any) -> Iterator[Any]: ...
def iter(__function: Callable[[], _T], __sentinel: Any) -> Iterator[_T]: ...
def isinstance(__o: object, __t: Union[type, Tuple[Union[type, Tuple[Any, ...]], ...]]) -> bool: ...
def issubclass(__cls: type, __classinfo: Union[type, Tuple[Union[type, Tuple[Any, ...]], ...]]) -> bool: ...
def len(__o: Sized) -> int: ...
Expand Down Expand Up @@ -1383,7 +1386,7 @@ if sys.version_info >= (3,):
@overload
def round(number: SupportsRound[_T]) -> int: ...
@overload
def round(number: SupportsRound[_T], ndigits: None) -> int: ... # type: ignore
def round(number: SupportsRound[_T], ndigits: None) -> int: ...
@overload
def round(number: SupportsRound[_T], ndigits: int) -> _T: ...
else:
Expand Down Expand Up @@ -1452,7 +1455,7 @@ else:
def __import__(name: Text, globals: Optional[Mapping[str, Any]] = ...,
locals: Optional[Mapping[str, Any]] = ...,
fromlist: Sequence[str] = ...,
level: int = ...) -> ModuleType: ...
level: int = ...) -> Any: ...

# Actually the type of Ellipsis is <type 'ellipsis'>, but since it's
# not exposed anywhere under that name, we make it private here.
Expand Down
12 changes: 4 additions & 8 deletions stdlib/2/_collections.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,14 @@ class deque(Generic[_T]):
def count(self, x: Any) -> int: ...
def extend(self, iterable: Iterator[_T]) -> None: ...
def extendleft(self, iterable: Iterator[_T]) -> None: ...
def pop(self) -> _T:
raise IndexError()
def popleft(self) -> _T:
raise IndexError()
def remove(self, value: _T) -> None:
raise IndexError()
def pop(self) -> _T: ...
def popleft(self) -> _T: ...
def remove(self, value: _T) -> None: ...
def reverse(self) -> None: ...
def rotate(self, n: int = ...) -> None: ...
def __contains__(self, o: Any) -> bool: ...
def __copy__(self) -> deque[_T]: ...
def __getitem__(self, i: int) -> _T:
raise IndexError()
def __getitem__(self, i: int) -> _T: ...
def __iadd__(self, other: deque[_T2]) -> deque[Union[_T, _T2]]: ...
def __iter__(self) -> Iterator[_T]: ...
def __len__(self) -> int: ...
Expand Down
20 changes: 5 additions & 15 deletions stdlib/2/_hotshot.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,19 @@
from typing import Any, List, Tuple, Dict, Generic

def coverage(a: str) -> Any: ...

def logreader(a: str) -> LogReaderType:
raise IOError()
raise RuntimeError()

def profiler(a: str, *args, **kwargs) -> Any:
raise IOError()

def logreader(a: str) -> LogReaderType: ...
def profiler(a: str, *args, **kwargs) -> Any: ...
def resolution() -> Tuple[Any, ...]: ...


class LogReaderType(object):
def close(self) -> None: ...
def fileno(self) -> int:
raise ValueError()
def fileno(self) -> int: ...

class ProfilerType(object):
def addinfo(self, a: str, b: str) -> None: ...
def close(self) -> None: ...
def fileno(self) -> int:
raise ValueError()
def fileno(self) -> int: ...
def runcall(self, *args, **kwargs) -> Any: ...
def runcode(self, a, b, *args, **kwargs) -> Any:
raise TypeError()
def runcode(self, a, b, *args, **kwargs) -> Any: ...
def start(self) -> None: ...
def stop(self) -> None: ...
10 changes: 3 additions & 7 deletions stdlib/2/_socket.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -256,23 +256,19 @@ class SocketType(object):
def accept(self) -> Tuple[SocketType, Tuple[Any, ...]]: ...
def bind(self, address: Tuple[Any, ...]) -> None: ...
def close(self) -> None: ...
def connect(self, address: Tuple[Any, ...]) -> None:
raise gaierror
raise timeout
def connect(self, address: Tuple[Any, ...]) -> None: ...
def connect_ex(self, address: Tuple[Any, ...]) -> int: ...
def dup(self) -> SocketType: ...
def fileno(self) -> int: ...
def getpeername(self) -> Tuple[Any, ...]: ...
def getsockname(self) -> Tuple[Any, ...]: ...
def getsockopt(self, level: int, option: int, buffersize: int = ...) -> str: ...
def gettimeout(self) -> float: ...
def listen(self, backlog: int) -> None:
raise error
def listen(self, backlog: int) -> None: ...
def makefile(self, mode: str = ..., buffersize: int = ...) -> IO[Any]: ...
def recv(self, buffersize: int, flags: int = ...) -> str: ...
def recv_into(self, buffer: bytearray, nbytes: int = ..., flags: int = ...) -> int: ...
def recvfrom(self, buffersize: int, flags: int = ...) -> Tuple[Any, ...]:
raise error
def recvfrom(self, buffersize: int, flags: int = ...) -> Tuple[Any, ...]: ...
def recvfrom_into(self, buffer: bytearray, nbytes: int = ...,
flags: int = ...) -> int: ...
def send(self, data: str, flags: int = ...) -> int: ...
Expand Down
22 changes: 11 additions & 11 deletions stdlib/2/_sre.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,16 @@ MAXREPEAT: long
copyright: str

class SRE_Match(object):
def start(self, group: int = ...) -> int:
raise IndexError()
def end(self, group: int = ...) -> int:
raise IndexError()
def start(self, group: int = ...) -> int: ...
def end(self, group: int = ...) -> int: ...
def expand(self, s: str) -> Any: ...
@overload
def group(self) -> str: ...
@overload
def group(self, group: int = ...) -> Optional[str]: ...
def groupdict(self) -> Dict[int, Optional[str]]: ...
def groups(self) -> Tuple[Optional[str], ...]: ...
def span(self) -> Tuple[int, int]:
raise IndexError()
def span(self) -> Tuple[int, int]: ...
@property
def regs(self) -> Tuple[Tuple[int, int], ...]: ... # undocumented

Expand All @@ -44,11 +41,14 @@ class SRE_Pattern(object):
def sub(self, repl: str, string: str, count: int = ...) -> Tuple[Any, ...]: ...
def subn(self, repl: str, string: str, count: int = ...) -> Tuple[Any, ...]: ...

def compile(pattern: str, flags: int, code: List[int],
groups: int = ...,
groupindex: Mapping[str, int] = ...,
indexgroup: Sequence[int] = ...) -> SRE_Pattern:
raise OverflowError()
def compile(
pattern: str,
flags: int,
code: List[int],
groups: int = ...,
groupindex: Mapping[str, int] = ...,
indexgroup: Sequence[int] = ...,
) -> SRE_Pattern: ...

def getcodesize() -> int: ...

Expand Down
4 changes: 1 addition & 3 deletions stdlib/2/_threading_local.pyi
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# Source: https://hg.python.org/cpython/file/2.7/Lib/_threading_local.py
from typing import Any, List

__all__: List[str]
from typing import Any

class _localbase(object): ...

Expand Down
1 change: 0 additions & 1 deletion stdlib/2/functools.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

from abc import ABCMeta, abstractmethod
from typing import Any, Callable, Generic, Dict, Iterable, Optional, Sequence, Tuple, TypeVar, overload
from collections import namedtuple

_AnyCallable = Callable[..., Any]

Expand Down
6 changes: 2 additions & 4 deletions stdlib/2/heapq.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,10 @@ class _Sortable(Protocol):

def cmp_lt(x, y) -> bool: ...
def heappush(heap: List[_T], item: _T) -> None: ...
def heappop(heap: List[_T]) -> _T:
raise IndexError() # if heap is empty
def heappop(heap: List[_T]) -> _T: ...
def heappushpop(heap: List[_T], item: _T) -> _T: ...
def heapify(x: List[_T]) -> None: ...
def heapreplace(heap: List[_T], item: _T) -> _T:
raise IndexError() # if heap is empty
def heapreplace(heap: List[_T], item: _T) -> _T: ...
def merge(*iterables: Iterable[_T]) -> Iterable[_T]: ...
def nlargest(n: int, iterable: Iterable[_T],
key: Optional[Callable[[_T], _Sortable]] = ...) -> List[_T]: ...
Expand Down
Loading