import shlex
import sys
from test.support import os_helper
-from .utils import ALL_RESOURCES, RESOURCE_NAMES
+from .utils import ALL_RESOURCES, RESOURCE_NAMES, TestFilter
USAGE = """\
self.forever = False
self.header = False
self.failfast = False
- self.match_tests = []
+ self.match_tests: TestFilter = []
self.pgo = False
self.pgo_extended = False
self.worker_json = None
except ImportError:
zdc = None # Run unmodified on platforms without zipimport support
else:
- zdc = zipimport._zip_directory_cache.copy()
+ # private attribute that mypy doesn't know about:
+ zdc = zipimport._zip_directory_cache.copy() # type: ignore[attr-defined]
abcs = {}
for abc in [getattr(collections.abc, a) for a in collections.abc.__all__]:
if not isabstract(abc):
self.test_times: list[tuple[float, TestName]] = []
self.stats = TestStats()
# used by --junit-xml
- self.testsuite_xml: list[str] = []
+ self.testsuite_xml: list = []
def is_all_good(self):
return (not self.bad
import threading
import time
import traceback
-from typing import Literal, TextIO
+from typing import Any, Literal, TextIO
from test import support
from test.support import os_helper, MS_WINDOWS
json_fd = json_tmpfile.fileno()
if MS_WINDOWS:
- json_handle = msvcrt.get_osfhandle(json_fd)
+ # The msvcrt module is only available on Windows;
+ # we run mypy with `--platform=linux` in CI
+ json_handle: int = msvcrt.get_osfhandle(json_fd) # type: ignore[attr-defined]
json_file = JsonFile(json_handle,
JsonFileType.WINDOWS_HANDLE)
else:
else:
match_tests = None
- kwargs = {}
+ kwargs: dict[str, Any] = {}
if match_tests:
kwargs['match_tests'] = [(test, True) for test in match_tests]
if self.runtests.output_on_failure:
json_file, json_tmpfile = self.create_json_file(stack)
worker_runtests = self.create_worker_runtests(test_name, json_file)
+ retcode: str | int | None
retcode, tmp_files = self.run_tmp_files(worker_runtests,
stdout_file.fileno())
popen_kwargs['pass_fds'] = [self.file]
case JsonFileType.WINDOWS_HANDLE:
# Windows handle
- startupinfo = subprocess.STARTUPINFO()
+ # We run mypy with `--platform=linux` so it complains about this:
+ startupinfo = subprocess.STARTUPINFO() # type: ignore[attr-defined]
startupinfo.lpAttributeList = {"handle_list": [self.file]}
popen_kwargs['startupinfo'] = startupinfo
support.LONG_TIMEOUT = min(support.LONG_TIMEOUT, timeout)
if runtests.hunt_refleak:
- unittest.BaseTestSuite._cleanup = False
+ # private attribute that mypy doesn't know about:
+ unittest.BaseTestSuite._cleanup = False # type: ignore[attr-defined]
if runtests.gc_threshold is not None:
gc.set_threshold(runtests.gc_threshold)
import sysconfig
import tempfile
import textwrap
-from collections.abc import Callable
+from collections.abc import Callable, Iterable
from test import support
from test.support import os_helper
return ('_PYTHON_HOST_PLATFORM' in os.environ)
-def format_resources(use_resources: tuple[str, ...]):
+def format_resources(use_resources: Iterable[str]):
use_resources = set(use_resources)
all_resources = set(ALL_RESOURCES)
print("== Python build:", ' '.join(get_build_info()))
print("== cwd:", os.getcwd())
- cpu_count = os.cpu_count()
+ cpu_count: object = os.cpu_count()
if cpu_count:
affinity = process_cpu_count()
if affinity and affinity != cpu_count: