summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Waygood <Alex.Waygood@Gmail.com>2023-08-29 19:14:08 (GMT)
committerGitHub <noreply@github.com>2023-08-29 19:14:08 (GMT)
commit77e8f233acd39420dc8921960715bf6b29587fee (patch)
treeefbfb5690a9fca0e1e23e3db023b1a25873f758d
parent8178a88bd81edae87d6974483e4de9b32e808797 (diff)
downloadcpython-77e8f233acd39420dc8921960715bf6b29587fee.zip
cpython-77e8f233acd39420dc8921960715bf6b29587fee.tar.gz
cpython-77e8f233acd39420dc8921960715bf6b29587fee.tar.bz2
gh-108455: peg_generator: install two stubs packages before running mypy (#108637)
-rw-r--r--Tools/peg_generator/mypy.ini6
-rw-r--r--Tools/peg_generator/pegen/build.py11
-rw-r--r--Tools/peg_generator/pegen/testutil.py2
-rw-r--r--Tools/requirements-dev.txt4
4 files changed, 17 insertions, 6 deletions
diff --git a/Tools/peg_generator/mypy.ini b/Tools/peg_generator/mypy.ini
index 3f3db2e..55429dd 100644
--- a/Tools/peg_generator/mypy.ini
+++ b/Tools/peg_generator/mypy.ini
@@ -14,5 +14,7 @@ enable_error_code = truthy-bool,ignore-without-code
warn_return_any = False
warn_unreachable = False
-[mypy-setuptools.*]
-ignore_missing_imports = True
+[mypy-pegen.build]
+# we need this for now due to some missing annotations
+# in typeshed's stubs for setuptools
+disallow_untyped_calls = False
diff --git a/Tools/peg_generator/pegen/build.py b/Tools/peg_generator/pegen/build.py
index 81efcad..998cd41 100644
--- a/Tools/peg_generator/pegen/build.py
+++ b/Tools/peg_generator/pegen/build.py
@@ -1,4 +1,5 @@
import itertools
+import logging
import os
import pathlib
import sys
@@ -90,6 +91,7 @@ def compile_c_extension(
static library of the common parser sources (this is useful in case you are
creating multiple extensions).
"""
+ import setuptools.command.build_ext
import setuptools.logging
from setuptools import Extension, Distribution
@@ -98,7 +100,7 @@ def compile_c_extension(
from setuptools._distutils.sysconfig import customize_compiler
if verbose:
- setuptools.logging.set_threshold(setuptools.logging.logging.DEBUG)
+ setuptools.logging.set_threshold(logging.DEBUG)
source_file_path = pathlib.Path(generated_source_path)
extension_name = source_file_path.stem
@@ -140,12 +142,14 @@ def compile_c_extension(
)
dist = Distribution({"name": extension_name, "ext_modules": [extension]})
cmd = dist.get_command_obj("build_ext")
+ assert isinstance(cmd, setuptools.command.build_ext.build_ext)
fixup_build_ext(cmd)
cmd.build_lib = str(source_file_path.parent)
cmd.include_dirs = include_dirs
if build_dir:
cmd.build_temp = build_dir
- cmd.ensure_finalized()
+ # A deficiency in typeshed's stubs means we have to type: ignore:
+ cmd.ensure_finalized() # type: ignore[attr-defined]
compiler = new_compiler()
customize_compiler(compiler)
@@ -156,7 +160,8 @@ def compile_c_extension(
library_filename = compiler.library_filename(extension_name, output_dir=library_dir)
if newer_group(common_sources, library_filename, "newer"):
if sys.platform == "win32":
- pdb = compiler.static_lib_format % (extension_name, ".pdb")
+ # A deficiency in typeshed's stubs means we have to type: ignore:
+ pdb = compiler.static_lib_format % (extension_name, ".pdb") # type: ignore[attr-defined]
compile_opts = [f"/Fd{library_dir}\\{pdb}"]
compile_opts.extend(extra_compile_args)
else:
diff --git a/Tools/peg_generator/pegen/testutil.py b/Tools/peg_generator/pegen/testutil.py
index 50cc852..0e85b84 100644
--- a/Tools/peg_generator/pegen/testutil.py
+++ b/Tools/peg_generator/pegen/testutil.py
@@ -116,7 +116,7 @@ def generate_parser_c_extension(
def print_memstats() -> bool:
MiB: Final = 2**20
try:
- import psutil # type: ignore[import]
+ import psutil
except ImportError:
return False
print("Memory stats:")
diff --git a/Tools/requirements-dev.txt b/Tools/requirements-dev.txt
index b814169..49f783c 100644
--- a/Tools/requirements-dev.txt
+++ b/Tools/requirements-dev.txt
@@ -1,3 +1,7 @@
# Requirements file for external linters and checks we run on
# Tools/clinic, Tools/cases_generator/, and Tools/peg_generator/ in CI
mypy==1.5.1
+
+# needed for peg_generator:
+types-psutil==5.9.5.16
+types-setuptools==68.1.0.0