From 110ba4c808499420ef499cd6fee04bf2ad1feffb Mon Sep 17 00:00:00 2001 From: Alexandre Detiste Date: Mon, 28 Jul 2025 17:39:36 +0200 Subject: [PATCH 1/4] prefer newer "tomllib" over "tomli" backport --- lib/ts_utils/metadata.py | 10 +++++++--- lib/ts_utils/mypy.py | 7 +++++-- requirements-tests.txt | 2 +- scripts/stubsabot.py | 8 ++++++-- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/lib/ts_utils/metadata.py b/lib/ts_utils/metadata.py index ff5bfadec494..5ba349cca14d 100644 --- a/lib/ts_utils/metadata.py +++ b/lib/ts_utils/metadata.py @@ -15,7 +15,11 @@ from typing import Annotated, Any, Final, NamedTuple, final from typing_extensions import TypeGuard -import tomli +try: + import tomllib +except ImportError: + import tomli as tomllib + import tomlkit from packaging.requirements import Requirement from packaging.specifiers import Specifier @@ -52,7 +56,7 @@ def _is_nested_dict(obj: object) -> TypeGuard[dict[str, dict[str, Any]]]: @functools.cache def get_oldest_supported_python() -> str: with PYPROJECT_PATH.open("rb") as config: - val = tomli.load(config)["tool"]["typeshed"]["oldest_supported_python"] + val = tomllib.load(config)["tool"]["typeshed"]["oldest_supported_python"] assert type(val) is str return val @@ -92,7 +96,7 @@ def system_requirements_for_platform(self, platform: str) -> list[str]: def read_stubtest_settings(distribution: str) -> StubtestSettings: """Return an object describing the stubtest settings for a single stubs distribution.""" with metadata_path(distribution).open("rb") as f: - data: dict[str, object] = tomli.load(f).get("tool", {}).get("stubtest", {}) + data: dict[str, object] = tomllib.load(f).get("tool", {}).get("stubtest", {}) skip: object = data.get("skip", False) apt_dependencies: object = data.get("apt_dependencies", []) diff --git a/lib/ts_utils/mypy.py b/lib/ts_utils/mypy.py index 39f4255ec011..69aa15491713 100644 --- a/lib/ts_utils/mypy.py +++ b/lib/ts_utils/mypy.py @@ -4,7 +4,10 @@ from contextlib import contextmanager from typing import Any, NamedTuple -import tomli +try: + import tomllib +except ImportError: + import tomli as tomllib from ts_utils.metadata import StubtestSettings, metadata_path from ts_utils.utils import NamedTemporaryFile, TemporaryFileWrapper @@ -26,7 +29,7 @@ class MypyDistConf(NamedTuple): def mypy_configuration_from_distribution(distribution: str) -> list[MypyDistConf]: with metadata_path(distribution).open("rb") as f: - data = tomli.load(f) + data = tomllib.load(f) # TODO: This could be added to ts_utils.metadata mypy_tests_conf: dict[str, dict[str, Any]] = data.get("mypy-tests", {}) diff --git a/requirements-tests.txt b/requirements-tests.txt index d9dbeb1f85dc..819ac11c17fb 100644 --- a/requirements-tests.txt +++ b/requirements-tests.txt @@ -19,7 +19,7 @@ ruff==0.12.2 # TODO (2025-05-07): Dependency libcst doesn't support Python 3.14 yet. stubdefaulter==0.1.0; python_version < "3.14" termcolor>=2.3 -tomli==2.2.1 +tomli==2.2.1; python_version < "3.11" tomlkit==0.13.3 typing_extensions>=4.14.0rc1 uv==0.7.19 diff --git a/scripts/stubsabot.py b/scripts/stubsabot.py index 71e0d0b04527..4147d067f4fa 100755 --- a/scripts/stubsabot.py +++ b/scripts/stubsabot.py @@ -25,9 +25,13 @@ from typing import Annotated, Any, ClassVar, NamedTuple, TypeVar from typing_extensions import Self, TypeAlias +try: + import tomllib +except ImportError: + import tomli as tomllib + import aiohttp import packaging.version -import tomli import tomlkit from packaging.specifiers import Specifier from termcolor import colored @@ -536,7 +540,7 @@ def parse_no_longer_updated_from_archive(source: zipfile.ZipFile | tarfile.TarFi return False with file as f: - toml_data: dict[str, object] = tomli.load(f) + toml_data: dict[str, object] = tomllib.load(f) no_longer_updated = toml_data.get("no_longer_updated", False) assert type(no_longer_updated) is bool From 0d52d840a9af0b1af2d8f1131ac4353c1e218278 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 28 Jul 2025 15:42:23 +0000 Subject: [PATCH 2/4] [pre-commit.ci] auto fixes from pre-commit.com hooks --- scripts/stubsabot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/stubsabot.py b/scripts/stubsabot.py index 4147d067f4fa..a797d472227b 100755 --- a/scripts/stubsabot.py +++ b/scripts/stubsabot.py @@ -26,9 +26,9 @@ from typing_extensions import Self, TypeAlias try: - import tomllib + import tomllib except ImportError: - import tomli as tomllib + import tomli as tomllib import aiohttp import packaging.version From 0c196fa66ed71accb3d8b83983a8cc8be8756484 Mon Sep 17 00:00:00 2001 From: Alexandre Detiste Date: Mon, 28 Jul 2025 17:48:46 +0200 Subject: [PATCH 3/4] merge --- lib/ts_utils/metadata.py | 4 ++-- lib/ts_utils/mypy.py | 4 ++-- scripts/stubsabot.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/ts_utils/metadata.py b/lib/ts_utils/metadata.py index 5ba349cca14d..4039464b4c92 100644 --- a/lib/ts_utils/metadata.py +++ b/lib/ts_utils/metadata.py @@ -15,9 +15,9 @@ from typing import Annotated, Any, Final, NamedTuple, final from typing_extensions import TypeGuard -try: +if sys.version_info >= (3, 11): import tomllib -except ImportError: +else: import tomli as tomllib import tomlkit diff --git a/lib/ts_utils/mypy.py b/lib/ts_utils/mypy.py index 69aa15491713..8dd49bcce61d 100644 --- a/lib/ts_utils/mypy.py +++ b/lib/ts_utils/mypy.py @@ -4,9 +4,9 @@ from contextlib import contextmanager from typing import Any, NamedTuple -try: +if sys.version_info >= (3, 11): import tomllib -except ImportError: +else: import tomli as tomllib from ts_utils.metadata import StubtestSettings, metadata_path diff --git a/scripts/stubsabot.py b/scripts/stubsabot.py index a797d472227b..7b7ac77a06c7 100755 --- a/scripts/stubsabot.py +++ b/scripts/stubsabot.py @@ -25,9 +25,9 @@ from typing import Annotated, Any, ClassVar, NamedTuple, TypeVar from typing_extensions import Self, TypeAlias -try: +if sys.version_info >= (3, 11): import tomllib -except ImportError: +else: import tomli as tomllib import aiohttp From 6b3f21f6c11792a9f03ec4205ace6e7ed3f0e8fc Mon Sep 17 00:00:00 2001 From: Alexandre Detiste Date: Mon, 28 Jul 2025 17:51:33 +0200 Subject: [PATCH 4/4] pyflakes --- lib/ts_utils/metadata.py | 1 + lib/ts_utils/mypy.py | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/ts_utils/metadata.py b/lib/ts_utils/metadata.py index 4039464b4c92..43a8c918b770 100644 --- a/lib/ts_utils/metadata.py +++ b/lib/ts_utils/metadata.py @@ -8,6 +8,7 @@ import datetime import functools import re +import sys import urllib.parse from collections.abc import Mapping from dataclasses import dataclass diff --git a/lib/ts_utils/mypy.py b/lib/ts_utils/mypy.py index 8dd49bcce61d..5bfcfc1528c8 100644 --- a/lib/ts_utils/mypy.py +++ b/lib/ts_utils/mypy.py @@ -1,5 +1,6 @@ from __future__ import annotations +import sys from collections.abc import Generator, Iterable from contextlib import contextmanager from typing import Any, NamedTuple