https://github.com/python/cpython/commit/cd2f234ad2ddd95e2d650edac5a6d593c865756a
commit: cd2f234ad2ddd95e2d650edac5a6d593c865756a
branch: main
author: sobolevn <m...@sobolevn.me>
committer: sobolevn <m...@sobolevn.me>
date: 2025-05-09T17:21:49+03:00
summary:

gh-133403: Check `Tools/build/generate-build-details.py` with mypy (#133735)

files:
M .github/workflows/mypy.yml
M Tools/build/generate-build-details.py
M Tools/build/mypy.ini

diff --git a/.github/workflows/mypy.yml b/.github/workflows/mypy.yml
index be63fcb48bb4d1..c133193d30c4ed 100644
--- a/.github/workflows/mypy.yml
+++ b/.github/workflows/mypy.yml
@@ -15,6 +15,7 @@ on:
       - "Misc/mypy/**"
       - "Tools/build/compute-changes.py"
       - "Tools/build/generate_sbom.py"
+      - "Tools/build/generate-build-details.py"
       - "Tools/build/verify_ensurepip_wheels.py"
       - "Tools/build/update_file.py"
       - "Tools/cases_generator/**"
diff --git a/Tools/build/generate-build-details.py 
b/Tools/build/generate-build-details.py
index 0da6c2948d6688..5dc100b8b05e5e 100644
--- a/Tools/build/generate-build-details.py
+++ b/Tools/build/generate-build-details.py
@@ -3,6 +3,8 @@
 # Script initially imported from:
 # 
https://github.com/FFY00/python-instrospection/blob/main/python_introspection/scripts/generate-build-details.py
 
+from __future__ import annotations
+
 import argparse
 import collections
 import importlib.machinery
@@ -11,19 +13,23 @@
 import sys
 import sysconfig
 
+TYPE_CHECKING = False
+if TYPE_CHECKING:
+    from typing import Any
+
 
-def version_info_to_dict(obj):  # (object) -> dict[str, Any]
+def version_info_to_dict(obj: sys._version_info) -> dict[str, Any]:
     field_names = ('major', 'minor', 'micro', 'releaselevel', 'serial')
     return {field: getattr(obj, field) for field in field_names}
 
 
-def get_dict_key(container, key):  # (dict[str, Any], str) -> dict[str, Any]
+def get_dict_key(container: dict[str, Any], key: str) -> dict[str, Any]:
     for part in key.split('.'):
         container = container[part]
     return container
 
 
-def generate_data(schema_version):
+def generate_data(schema_version: str) -> collections.defaultdict[str, Any]:
     """Generate the build-details.json data (PEP 739).
 
     :param schema_version: The schema version of the data we want to generate.
@@ -32,7 +38,9 @@ def generate_data(schema_version):
     if schema_version != '1.0':
         raise ValueError(f'Unsupported schema_version: {schema_version}')
 
-    data = collections.defaultdict(lambda: collections.defaultdict(dict))
+    data: collections.defaultdict[str, Any] = collections.defaultdict(
+        lambda: collections.defaultdict(dict),
+    )
 
     data['schema_version'] = schema_version
 
@@ -122,7 +130,7 @@ def generate_data(schema_version):
     return data
 
 
-def make_paths_relative(data, config_path=None):  # (dict[str, Any], str | 
None) -> None
+def make_paths_relative(data: dict[str, Any], config_path: str | None = None) 
-> None:
     # Make base_prefix relative to the config_path directory
     if config_path:
         data['base_prefix'] = os.path.relpath(data['base_prefix'], 
os.path.dirname(config_path))
@@ -152,7 +160,7 @@ def make_paths_relative(data, config_path=None):  # 
(dict[str, Any], str | None)
         container[child] = new_path
 
 
-def main():  # () -> None
+def main() -> None:
     parser = argparse.ArgumentParser(exit_on_error=False)
     parser.add_argument('location')
     parser.add_argument(
diff --git a/Tools/build/mypy.ini b/Tools/build/mypy.ini
index fab35bf68904af..62d7e150fd8521 100644
--- a/Tools/build/mypy.ini
+++ b/Tools/build/mypy.ini
@@ -4,6 +4,7 @@
 # .github/workflows/mypy.yml
 files =
     Tools/build/compute-changes.py,
+    Tools/build/generate-build-details.py,
     Tools/build/generate_sbom.py,
     Tools/build/verify_ensurepip_wheels.py,
     Tools/build/update_file.py

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to