mirror of
https://github.com/davidhalter/typeshed.git
synced 2026-06-23 09:18:44 +08:00
Check pyrightconfig stricter exclude list order (#15243)
This commit is contained in:
@@ -35,6 +35,16 @@ def strip_comments(text: str) -> str:
|
||||
return text.split("#")[0].strip()
|
||||
|
||||
|
||||
def json5_to_json(text: str) -> str:
|
||||
"""Incomplete conversion from JSON5-like input to valid JSON."""
|
||||
# Remove full-line // comments only
|
||||
# (Can not remove inline comments)
|
||||
text = re.sub(r"(?m)^\s*//.*\n?", "", text)
|
||||
# Remove trailing commas before } or ]
|
||||
text = re.sub(r",\s*([}\]])", r"\1", text)
|
||||
return text
|
||||
|
||||
|
||||
# ====================================================================
|
||||
# Printing utilities
|
||||
# ====================================================================
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
// test cases use a custom pyrightconfig file
|
||||
"**/@tests/test_cases",
|
||||
"stdlib/__main__.pyi",
|
||||
"stdlib/_tkinter.pyi",
|
||||
"stdlib/distutils/cmd.pyi",
|
||||
"stdlib/distutils/command",
|
||||
"stdlib/distutils/dist.pyi",
|
||||
"stdlib/encodings/__init__.pyi",
|
||||
"stdlib/lib2to3/fixes/*.pyi",
|
||||
"stdlib/numbers.pyi",
|
||||
"stdlib/_tkinter.pyi",
|
||||
"stdlib/tkinter/__init__.pyi",
|
||||
"stdlib/tkinter/filedialog.pyi",
|
||||
"stdlib/tkinter/dialog.pyi",
|
||||
"stdlib/tkinter/filedialog.pyi",
|
||||
"stdlib/tkinter/scrolledtext.pyi",
|
||||
"stdlib/tkinter/tix.pyi",
|
||||
"stdlib/tkinter/ttk.pyi",
|
||||
|
||||
@@ -7,15 +7,17 @@ correct places, and that various configuration files are correct.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
from ts_utils.metadata import read_metadata
|
||||
from ts_utils.paths import REQUIREMENTS_PATH, STDLIB_PATH, STUBS_PATH, TEST_CASES_DIR, TESTS_DIR, tests_path
|
||||
from ts_utils.paths import PYRIGHT_CONFIG, REQUIREMENTS_PATH, STDLIB_PATH, STUBS_PATH, TEST_CASES_DIR, TESTS_DIR, tests_path
|
||||
from ts_utils.utils import (
|
||||
get_all_testcase_directories,
|
||||
get_gitignore_spec,
|
||||
json5_to_json,
|
||||
parse_requirements,
|
||||
parse_stdlib_versions_file,
|
||||
spec_matches_path,
|
||||
@@ -173,6 +175,19 @@ def check_requirement_pins() -> None:
|
||||
assert str(spec).startswith("=="), msg
|
||||
|
||||
|
||||
def check_pyright_exclude_order() -> None:
|
||||
"""Check that 'exclude' entries in pyrightconfig.stricter.json are sorted alphabetically."""
|
||||
text = PYRIGHT_CONFIG.read_text(encoding="utf-8")
|
||||
text = json5_to_json(text)
|
||||
data = json.loads(text)
|
||||
exclude: list[str] = data.get("exclude", [])
|
||||
|
||||
for i in range(len(exclude) - 1):
|
||||
assert (
|
||||
exclude[i].lower() <= exclude[i + 1].lower()
|
||||
), f"Entry '{exclude[i]}' should come before '{exclude[i + 1]}' in the {PYRIGHT_CONFIG.name} exclude list"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
check_versions_file()
|
||||
check_metadata()
|
||||
@@ -182,3 +197,4 @@ if __name__ == "__main__":
|
||||
check_stubs()
|
||||
check_distutils()
|
||||
check_test_cases()
|
||||
check_pyright_exclude_order()
|
||||
|
||||
Reference in New Issue
Block a user