mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-08 21:14:48 +08:00
* 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
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
from typing import Any, Iterable, Iterator, List, Protocol, Type, Union
|
|
|
|
QUOTE_ALL: int
|
|
QUOTE_MINIMAL: int
|
|
QUOTE_NONE: int
|
|
QUOTE_NONNUMERIC: int
|
|
|
|
class Error(Exception): ...
|
|
|
|
class Dialect:
|
|
delimiter: str
|
|
quotechar: str | None
|
|
escapechar: str | None
|
|
doublequote: bool
|
|
skipinitialspace: bool
|
|
lineterminator: str
|
|
quoting: int
|
|
strict: int
|
|
def __init__(self) -> None: ...
|
|
|
|
_DialectLike = Union[str, Dialect, Type[Dialect]]
|
|
|
|
class _reader(Iterator[List[str]]):
|
|
dialect: Dialect
|
|
line_num: int
|
|
def __next__(self) -> list[str]: ...
|
|
|
|
class _writer:
|
|
dialect: Dialect
|
|
def writerow(self, row: Iterable[Any]) -> Any: ...
|
|
def writerows(self, rows: Iterable[Iterable[Any]]) -> None: ...
|
|
|
|
class _Writer(Protocol):
|
|
def write(self, __s: str) -> object: ...
|
|
|
|
def writer(csvfile: _Writer, dialect: _DialectLike = ..., **fmtparams: Any) -> _writer: ...
|
|
def reader(csvfile: Iterable[str], dialect: _DialectLike = ..., **fmtparams: Any) -> _reader: ...
|
|
def register_dialect(name: str, dialect: Any = ..., **fmtparams: Any) -> None: ...
|
|
def unregister_dialect(name: str) -> None: ...
|
|
def get_dialect(name: str) -> Dialect: ...
|
|
def list_dialects() -> list[str]: ...
|
|
def field_size_limit(new_limit: int = ...) -> int: ...
|