# Various stricter settings that we can't yet enable
# Try to enable these in the following order:
-disallow_any_generics = False
disallow_incomplete_defs = False
disallow_untyped_calls = False
disallow_untyped_defs = False
import sys
import trace
+from typing import TYPE_CHECKING
from .runtests import RunTests
from .result import State, TestResult, TestStats, Location
StrPath, TestName, TestTuple, TestList, FilterDict,
printlist, count, format_duration)
+if TYPE_CHECKING:
+ from xml.etree.ElementTree import Element
+
# Python uses exit code 1 when an exception is not caught
# argparse.ArgumentParser.error() uses exit code 2
self.test_times: list[tuple[float, TestName]] = []
self.stats = TestStats()
# used by --junit-xml
- self.testsuite_xml: list = []
+ self.testsuite_xml: list['Element'] = []
# used by -T with -j
self.covered_lines: set[Location] = set()
file: int | None
file_type: str
- def configure_subprocess(self, popen_kwargs: dict) -> None:
+ def configure_subprocess(self, popen_kwargs: dict[str, Any]) -> None:
match self.file_type:
case JsonFileType.UNIX_FD:
# Unix file descriptor
def create_worker_process(runtests: WorkerRunTests, output_fd: int,
- tmp_dir: StrPath | None = None) -> subprocess.Popen:
+ tmp_dir: StrPath | None = None) -> subprocess.Popen[str]:
worker_json = runtests.as_json()
cmd = runtests.create_python_cmd()