stubtest_stdlib: get rid of --ignore-missing-stub#6491
stubtest_stdlib: get rid of --ignore-missing-stub#6491JelleZijlstra merged 4 commits intopython:masterfrom
Conversation
import re
platforms = ["linux", "win32", "darwin"]
versions = ["py36", "py37", "py38", "py39", "py310"]
entries_by_pv = {}
for p in platforms:
for v in versions:
p_name = {"linux": "ubuntu", "darwin": "macos", "win32": "windows"}[p]
v_name = "3." + v.replace("py3", "")
if v_name == "3.9":
v_name = "3.9.7"
entries = set()
with open(f"la/Check stdlib with stubtest ({p_name}-latest, {v_name})/6_Run stubtest.txt") as file:
for line in file:
m = re.search(r"error: (.*) is not present in stub$", line.strip())
if m:
entries.add(m.group(1))
entries_by_pv[p, v] = entries
def remove_intersection(sets):
sets = list(sets)
result = set(sets[0])
for s in sets[1:]:
result &= s
for s in sets:
for r in result:
s.remove(r)
return result
common_to_all = remove_intersection(entries_by_pv.values())
common_to_version = {}
for v in versions:
common_to_version[v] = remove_intersection([
entries
for (p, v2), entries in entries_by_pv.items()
if v == v2
])
common_to_platform = {}
for p in platforms:
common_to_platform[p] = remove_intersection([
entries
for (p2, v), entries in entries_by_pv.items()
if p == p2
])
def write(fname, entries):
with open(f"tests/stubtest_allowlists/{fname}.txt", "a") as file:
file.write("\n# Exists at runtime, but missing from stubs\n")
for i in sorted(entries):
file.write(i + "\n")
write("py3_common", common_to_all)
for v, entries in common_to_version.items():
write(v, entries)
for p, entries in common_to_platform.items():
write(p, entries)
for (p, v), entries in entries_by_pv.items():
write(p + "-" + v, entries)
|
This is easiest to review commit by commit. There are a lot of new entries, but I don't think combining them with wildcards, e.g. |
AlexWaygood
left a comment
There was a problem hiding this comment.
Thanks, this looks great! A few thoughts:
| rlcompleter.Completer.global_matches | ||
| sunau.Au_read.initfp | ||
| sunau.Au_write.initfp | ||
| threading.Event.isSet |
There was a problem hiding this comment.
This is a deprecated alias to another method (https://docs.python.org/3/library/threading.html#threading.Event.is_set), so shouldn't ever be added to the stub in my opinion -- I'd put it in a "Won't fix" section
There was a problem hiding this comment.
threading has other aliases too. We can remove them, or add isSet, but either way it's beyond the scope of this PR.
|
According to mypy_primer, this change has no effect on the checked open source code. 🤖🎉 |
Fixes #6401.