mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-08 04:54:47 +08:00
stubtest_stdlib: get rid of --ignore-missing-stub (#6491)
* get rid of --ignore-missing-stub
* update allowlists based on github actions logs, with script
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)
* Manually combine __main__ attributes into a single entry
* move and comment entries manually
This commit is contained in:
@@ -24,10 +24,6 @@ def run_stubtest(typeshed_dir: Path) -> int:
|
||||
sys.executable,
|
||||
"-m",
|
||||
"mypy.stubtest",
|
||||
# Use --ignore-missing-stub, because if someone makes a correct addition, they'll need to
|
||||
# also make a allowlist change and if someone makes an incorrect addition, they'll run into
|
||||
# false negatives.
|
||||
"--ignore-missing-stub",
|
||||
"--check-typeshed",
|
||||
"--custom-typeshed-dir",
|
||||
str(typeshed_dir),
|
||||
|
||||
Reference in New Issue
Block a user