Skip to content

Commit 2ad00c9

Browse files
hauntsaninjaAlexWaygoodJelleZijlstrasrittauAkuli
authored
Use stubtest 0.920 (#6589)
Co-authored-by: Alex Waygood <[email protected]> Co-authored-by: Jelle Zijlstra <[email protected]> Co-authored-by: Sebastian Rittau <[email protected]> Co-authored-by: Akuli <[email protected]>
1 parent 5f850af commit 2ad00c9

File tree

17 files changed

+121
-56
lines changed

17 files changed

+121
-56
lines changed

.github/workflows/tests.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,7 @@ jobs:
110110
- name: Update pip
111111
run: python -m pip install -U pip
112112
- name: Install dependencies
113-
# Temporarily hard-code the mypy version used for stubtest
114-
# run: pip install $(grep tomli== requirements-tests.txt) (grep mypy== requirements-tests.txt)
115-
run: pip install mypy==0.910
113+
run: pip install $(grep tomli== requirements-tests.txt) $(grep mypy== requirements-tests.txt)
116114
- name: Run stubtest
117115
run: python tests/stubtest_stdlib.py
118116

stubs/PyMySQL/@tests/stubtest_allowlist.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ pymysql.cursors.Cursor.__del__
66
# DictCursorMixin changes method types of inherited classes, but doesn't contain much at runtime
77
pymysql.cursors.DictCursorMixin.__iter__
88
pymysql.cursors.DictCursorMixin.fetch[a-z]*
9-
pymysql.err.ER
109
pymysql.escape_dict
1110
pymysql.escape_sequence
1211
pymysql.escape_string
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# In the stub we alias to OrderedDict, but it has positional-only differences
2+
babel.util.odict.fromkeys
3+
babel.util.odict.setdefault

stubs/hdbcli/@tests/stubtest_allowlist.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@ hdbcli.dbapi.Error.errorcode
22
hdbcli.dbapi.Error.errortext
33
hdbcli.dbapi.Warning.errorcode
44
hdbcli.dbapi.Warning.errortext
5+
# Similar issues to builtins.memoryview
6+
hdbcli.dbapi.BINARY.__iter__
7+
hdbcli.dbapi.BINARY.cast
8+
hdbcli.dbapi.BINARY.__contains__
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
# Misnamed first argument in implementation
22
html5lib._inputstream.EncodingBytes.__new__
3+
html5lib._tokenizer.attributeMap.get
Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1 @@
11
MySQLdb.Connection
2-
MySQLdb.connections
3-
MySQLdb.constants.CLIENT
4-
MySQLdb.constants.CR
5-
MySQLdb.constants.ER
6-
MySQLdb.constants.FLAG
7-
MySQLdb.converters
8-
MySQLdb.cursors

stubs/paramiko/@tests/stubtest_allowlist.txt

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,11 @@ paramiko.Transport.open_x11_channel
33
paramiko.Transport.send_ignore
44
paramiko.Transport.start_server
55
paramiko._winapi
6-
paramiko.py3compat.builtins.bytearray.pop
7-
paramiko.py3compat.builtins.bytearray.remove
8-
paramiko.py3compat.builtins.classmethod.__get__
9-
paramiko.py3compat.builtins.copyright
10-
paramiko.py3compat.builtins.credits
11-
paramiko.py3compat.builtins.dict.get
12-
paramiko.py3compat.builtins.ellipsis
13-
paramiko.py3compat.builtins.exit
14-
paramiko.py3compat.builtins.function
15-
paramiko.py3compat.builtins.help
16-
paramiko.py3compat.builtins.license
17-
paramiko.py3compat.builtins.memoryview.__contains__
18-
paramiko.py3compat.builtins.memoryview.__iter__
19-
paramiko.py3compat.builtins.memoryview.cast
20-
paramiko.py3compat.builtins.object.__init__
21-
paramiko.py3compat.builtins.property.__get__
22-
paramiko.py3compat.builtins.quit
23-
paramiko.py3compat.builtins.staticmethod.__get__
246
paramiko.py3compat.input
7+
paramiko.py3compat.BytesIO.readlines
8+
paramiko.py3compat.BytesIO.seek
9+
paramiko.py3compat.StringIO.seek
10+
paramiko.py3compat.StringIO.truncate
2511
paramiko.sftp_server.SFTPServer.__init__
2612
paramiko.transport.Transport.open_x11_channel
2713
paramiko.transport.Transport.send_ignore

stubs/requests/@tests/stubtest_allowlist.txt

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ requests.Session.options
55
requests.Session.patch
66
requests.Session.post
77
requests.Session.put
8+
requests.adapters.HTTPResponse.__init__
9+
requests.adapters.PoolManager.connection_from_host
10+
requests.adapters.PoolManager.connection_from_url
11+
requests.adapters.PoolManager.urlopen
12+
requests.adapters.Retry.is_forced_retry
13+
requests.adapters.Retry.sleep
814
requests.api.delete
915
requests.api.get
1016
requests.api.head
@@ -13,12 +19,28 @@ requests.api.patch
1319
requests.api.post
1420
requests.api.put
1521
requests.api.request
22+
requests.compat.OrderedDict.fromkeys
23+
requests.compat.OrderedDict.setdefault
1624
requests.delete
1725
requests.get
1826
requests.head
27+
requests.models.RequestField.__init__
28+
requests.models.RequestField.from_tuples
1929
requests.options
2030
requests.packages.VendorAlias
31+
requests.packages.urllib3.HTTPConnectionPool.__init__
32+
requests.packages.urllib3.HTTPConnectionPool.urlopen
33+
requests.packages.urllib3.HTTPResponse.__init__
34+
requests.packages.urllib3.HTTPSConnectionPool.__init__
2135
requests.packages.urllib3.NullHandler
36+
requests.packages.urllib3.PoolManager.connection_from_host
37+
requests.packages.urllib3.PoolManager.connection_from_url
38+
requests.packages.urllib3.PoolManager.urlopen
39+
requests.packages.urllib3.ProxyManager.__init__
40+
requests.packages.urllib3.ProxyManager.connection_from_host
41+
requests.packages.urllib3.ProxyManager.urlopen
42+
requests.packages.urllib3.Retry.is_forced_retry
43+
requests.packages.urllib3.Retry.sleep
2244
requests.packages.urllib3._collections.HTTPHeaderDict.from_httplib
2345
requests.packages.urllib3._collections.HTTPHeaderDict.getlist
2446
requests.packages.urllib3._collections.RLock
@@ -27,21 +49,36 @@ requests.packages.urllib3.connection.HTTPSConnection.__init__
2749
requests.packages.urllib3.connection.VerifiedHTTPSConnection.__init__
2850
requests.packages.urllib3.connection.VerifiedHTTPSConnection.set_cert
2951
requests.packages.urllib3.connectionpool.ConnectionError
52+
requests.packages.urllib3.connectionpool.HTTPConnection.request
3053
requests.packages.urllib3.connectionpool.HTTPConnectionPool.__init__
3154
requests.packages.urllib3.connectionpool.HTTPConnectionPool.urlopen
55+
requests.packages.urllib3.connectionpool.HTTPResponse.__init__
56+
requests.packages.urllib3.connectionpool.HTTPSConnection.__init__
3257
requests.packages.urllib3.connectionpool.HTTPSConnectionPool.__init__
58+
requests.packages.urllib3.connectionpool.ProxyError.__init__
59+
requests.packages.urllib3.connectionpool.RequestMethods.request_encode_url
60+
requests.packages.urllib3.connectionpool.Retry.is_forced_retry
61+
requests.packages.urllib3.connectionpool.Retry.sleep
62+
requests.packages.urllib3.connectionpool.VerifiedHTTPSConnection.__init__
63+
requests.packages.urllib3.connectionpool.VerifiedHTTPSConnection.set_cert
3364
requests.packages.urllib3.exceptions.ProxyError.__init__
3465
requests.packages.urllib3.fields.RequestField.__init__
3566
requests.packages.urllib3.fields.RequestField.from_tuples
67+
requests.packages.urllib3.filepost.RequestField.__init__
68+
requests.packages.urllib3.filepost.RequestField.from_tuples
3669
requests.packages.urllib3.poolmanager.PoolManager.connection_from_host
3770
requests.packages.urllib3.poolmanager.PoolManager.connection_from_url
3871
requests.packages.urllib3.poolmanager.PoolManager.urlopen
3972
requests.packages.urllib3.poolmanager.ProxyManager.__init__
4073
requests.packages.urllib3.poolmanager.ProxyManager.connection_from_host
4174
requests.packages.urllib3.poolmanager.ProxyManager.urlopen
4275
requests.packages.urllib3.request.RequestMethods.request_encode_url
76+
requests.packages.urllib3.response.HTTPHeaderDict.from_httplib
77+
requests.packages.urllib3.response.HTTPHeaderDict.getlist
4378
requests.packages.urllib3.response.HTTPResponse.__init__
4479
requests.packages.urllib3.response.PY3
80+
requests.packages.urllib3.util.Retry.is_forced_retry
81+
requests.packages.urllib3.util.Retry.sleep
4582
requests.packages.urllib3.util.connection.poll
4683
requests.packages.urllib3.util.connection.select
4784
requests.packages.urllib3.util.retry.Retry.is_forced_retry
@@ -52,6 +89,8 @@ requests.patch
5289
requests.post
5390
requests.put
5491
requests.request
92+
requests.sessions.OrderedDict.fromkeys
93+
requests.sessions.OrderedDict.setdefault
5594
requests.sessions.Session.delete
5695
requests.sessions.Session.get
5796
requests.sessions.Session.head
@@ -62,3 +101,5 @@ requests.sessions.Session.put
62101
requests.sessions.SessionRedirectMixin.resolve_redirects
63102
requests.structures.LookupDict.__getattr__
64103
requests.structures.LookupDict.get
104+
requests.utils.OrderedDict.fromkeys
105+
requests.utils.OrderedDict.setdefault

stubs/waitress/@tests/stubtest_allowlist.txt

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,6 @@ waitress.channel.HTTPChannel.error_task_class
99
waitress.channel.HTTPChannel.parser_class
1010
waitress.channel.HTTPChannel.request
1111
waitress.channel.HTTPChannel.task_class
12-
waitress.channel.wasyncore.compat.qualname
13-
waitress.channel.wasyncore.compat.reraise
14-
waitress.channel.wasyncore.compat.set_nonblocking
15-
waitress.channel.wasyncore.compat.text_
16-
waitress.channel.wasyncore.compat.tobytes
17-
waitress.channel.wasyncore.compat.tostr
18-
waitress.channel.wasyncore.compat.unquote_bytes_to_wsgi
19-
waitress.channel.wasyncore.dispatcher_with_send.handle_write
2012
waitress.compat.PY2
2113
waitress.compat.PY3
2214
waitress.compat.ResourceWarning
@@ -40,20 +32,6 @@ waitress.server.WSGIServer
4032
waitress.task.ErrorTask.content_length
4133
waitress.task.ThreadedTaskDispatcher.start_new_thread
4234
waitress.task.WSGITask.content_length
43-
waitress.trigger.wasyncore.compat.qualname
44-
waitress.trigger.wasyncore.compat.reraise
45-
waitress.trigger.wasyncore.compat.set_nonblocking
46-
waitress.trigger.wasyncore.compat.text_
47-
waitress.trigger.wasyncore.compat.tobytes
48-
waitress.trigger.wasyncore.compat.tostr
49-
waitress.trigger.wasyncore.compat.unquote_bytes_to_wsgi
50-
waitress.trigger.wasyncore.dispatcher_with_send.handle_write
51-
waitress.wasyncore.compat.qualname
52-
waitress.wasyncore.compat.reraise
53-
waitress.wasyncore.compat.set_nonblocking
54-
waitress.wasyncore.compat.text_
55-
waitress.wasyncore.compat.tobytes
56-
waitress.wasyncore.compat.tostr
57-
waitress.wasyncore.compat.unquote_bytes_to_wsgi
58-
waitress.wasyncore.dispatcher_with_send.handle_write
35+
waitress.rfc7230.BWS
5936
waitress.wasyncore.map
37+
waitress.wasyncore.dispatcher_with_send.handle_write

tests/stubtest_allowlists/linux.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ msvcrt
3636
winreg
3737
winsound
3838

39+
# Aliases for OSError
40+
posix.error.characters_written
41+
resource.error.characters_written
42+
3943
# NamedTuple like, but not actually NamedTuples (PyStructSequence)
4044
posix.[a-z]+_(param|result)._(asdict|make|replace)
4145

tests/stubtest_allowlists/py310.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ asyncio.futures.Future.__init__ # Usually initialized from c object
3131
asyncio.futures.Future._callbacks # Usually initialized from c object
3232
builtins.dict.get
3333
contextvars.Context.__init__ # Default C __init__ signature is wrong
34+
contextlib.AbstractAsyncContextManager.__class_getitem__
35+
contextlib.AbstractContextManager.__class_getitem__
3436
dataclasses.field
3537
dataclasses.KW_ONLY
3638
enum.Enum._generate_next_value_
@@ -40,6 +42,8 @@ functools.partialmethod.__get__
4042
functools.singledispatchmethod.__call__
4143
gettext.install
4244
gettext.translation
45+
hashlib.sha3_\d+ # Can be a class or a built-in function
46+
hashlib.shake_\d+ # Can be a class or a built-in function
4347
hmac.new # Stub is a white lie; see comments in the stub
4448
http.server.SimpleHTTPRequestHandler.__init__ # *args is expanded
4549
importlib.abc.Traversable.__init__ # Inherits __init__ from typing.Protocol
@@ -106,8 +110,11 @@ _collections_abc.Generator.send
106110
_collections_abc.Generator.throw
107111
contextvars.ContextVar.reset
108112
contextvars.ContextVar.set
113+
contextlib.AbstractAsyncContextManager.__aexit__
114+
contextlib.AbstractContextManager.__exit__
109115
io.IncrementalNewlineDecoder.setstate
110116
typing.SupportsRound.__round__
117+
types.DynamicClassAttribute..* # In the stub we pretend it's an alias for property, but it has positional-only differences
111118

112119
# These enums derive from (str, Enum). See comment in py3_common.txt
113120
pstats.SortKey.__new__

tests/stubtest_allowlists/py36.txt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,24 +43,24 @@ typing.AsyncGenerator.ag_await
4343
typing.AsyncGenerator.ag_code
4444
typing.AsyncGenerator.ag_frame
4545
typing.AsyncGenerator.ag_running
46+
typing.ChainMap.fromkeys
4647
typing.Coroutine.cr_await
4748
typing.Coroutine.cr_code
4849
typing.Coroutine.cr_frame
4950
typing.Coroutine.cr_running
50-
typing.Generator.__new__
5151
typing.Generator.gi_code
5252
typing.Generator.gi_frame
5353
typing.Generator.gi_running
5454
typing.Generator.gi_yieldfrom
55-
typing.GenericMeta.__new__
5655
typing.IO.closed # Incorrect definition in CPython, fixed in bpo-39493
5756
typing.Mapping.get
58-
typing.NamedTuple.__new__
5957
typing.NamedTuple._asdict
6058
typing.NamedTuple._make
6159
typing.NamedTuple._replace
6260
typing.Sequence.index
61+
typing.Text.maketrans
6362
typing.runtime_checkable
63+
typing\.\w+\.__new__
6464
unittest._log # New in Python 3.9
6565
unittest.async_case # Added in Python 3.8
6666
uuid.UUID.int
@@ -72,6 +72,14 @@ tkinter.EventType.__new__
7272

7373
builtins.memoryview.__iter__ # C type that implements __getitem__
7474
builtins.memoryview.cast # inspect.signature is incorrect about shape being kw-only
75+
sqlite3.dbapi2.Binary.__iter__ # C type that implements __getitem__
76+
sqlite3.dbapi2.Binary.cast # inspect.signature is incorrect about shape being kw-only
77+
sqlite3.Binary.__iter__ # C type that implements __getitem__
78+
sqlite3.Binary.cast # inspect.signature is incorrect about shape being kw-only
79+
80+
sqlite3.OptimizedUnicode.maketrans
81+
sqlite3.dbapi2.OptimizedUnicode.maketrans
82+
7583
collections.Coroutine.cr_await
7684
collections.Coroutine.cr_code
7785
collections.Coroutine.cr_frame

tests/stubtest_allowlists/py37.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ typing.NamedTuple._replace
5151
typing._SpecialForm.__init__
5252
typing._SpecialForm.__new__
5353
typing.runtime_checkable
54+
typing.Text.maketrans
5455
unittest._log # New in Python 3.9
5556
unittest.async_case # Added in Python 3.8
5657
uuid.UUID.int
@@ -65,6 +66,14 @@ tkinter.EventType.__new__
6566

6667
builtins.memoryview.__iter__ # C type that implements __getitem__
6768
builtins.memoryview.cast # inspect.signature is incorrect about shape being kw-only
69+
sqlite3.dbapi2.Binary.__iter__ # C type that implements __getitem__
70+
sqlite3.dbapi2.Binary.cast # inspect.signature is incorrect about shape being kw-only
71+
sqlite3.Binary.__iter__ # C type that implements __getitem__
72+
sqlite3.Binary.cast # inspect.signature is incorrect about shape being kw-only
73+
74+
sqlite3.OptimizedUnicode.maketrans
75+
sqlite3.dbapi2.OptimizedUnicode.maketrans
76+
6877
collections.Coroutine.cr_await
6978
collections.Coroutine.cr_code
7079
collections.Coroutine.cr_frame

tests/stubtest_allowlists/py38.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ tkinter.EventType.__new__
8282

8383
builtins.memoryview.__iter__ # C type that implements __getitem__
8484
builtins.memoryview.cast # inspect.signature is incorrect about shape being kw-only
85+
sqlite3.dbapi2.Binary.__iter__ # C type that implements __getitem__
86+
sqlite3.dbapi2.Binary.cast # inspect.signature is incorrect about shape being kw-only
87+
sqlite3.Binary.__iter__ # C type that implements __getitem__
88+
sqlite3.Binary.cast # inspect.signature is incorrect about shape being kw-only
8589
collections.Coroutine.cr_await
8690
collections.Coroutine.cr_code
8791
collections.Coroutine.cr_frame

tests/stubtest_allowlists/py39.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ collections.ItemsView.__reversed__
2929
collections.KeysView.__reversed__
3030
collections.ValuesView.__reversed__
3131
contextvars.Context.__init__ # Default C __init__ signature is wrong
32+
contextlib.AbstractAsyncContextManager.__class_getitem__
33+
contextlib.AbstractContextManager.__class_getitem__
3234
dataclasses.field
3335
enum.Enum._generate_next_value_
3436
fractions.Fraction.__new__ # overload is too complicated for stubtest to resolve
@@ -37,6 +39,8 @@ functools.partialmethod.__get__
3739
functools.singledispatchmethod.__call__
3840
gettext.install
3941
gettext.translation
42+
hashlib.sha3_\d+
43+
hashlib.shake_\d+
4044
hmac.new # Stub is a white lie; see comments in the stub
4145
http.server.SimpleHTTPRequestHandler.__init__ # *args is expanded
4246
importlib.abc.Traversable.__init__ # Inherits __init__ from typing.Protocol
@@ -94,6 +98,10 @@ tkinter.EventType.__new__
9498

9599
builtins.memoryview.__iter__ # C type that implements __getitem__
96100
builtins.memoryview.cast # inspect.signature is incorrect about shape being kw-only
101+
sqlite3.dbapi2.Binary.__iter__ # C type that implements __getitem__
102+
sqlite3.dbapi2.Binary.cast # inspect.signature is incorrect about shape being kw-only
103+
sqlite3.Binary.__iter__ # C type that implements __getitem__
104+
sqlite3.Binary.cast # inspect.signature is incorrect about shape being kw-only
97105
collections.Coroutine.cr_await
98106
collections.Coroutine.cr_code
99107
collections.Coroutine.cr_frame

0 commit comments

Comments
 (0)