Skip to content

Commit

Permalink
[3.12] pythongh-109413: libregrtest: enable mypy's `--strict-optional…
Browse files Browse the repository at this point in the history
…` check on most files (python#112586) (python#112602)

pythongh-109413: libregrtest: enable mypy's `--strict-optional` check on most files (python#112586)

Co-authored-by: Victor Stinner <vstinner@python.org>
  • Loading branch information
AlexWaygood and vstinner authored Dec 1, 2023
1 parent 4fc010c commit 36dbebe
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 4 deletions.
33 changes: 33 additions & 0 deletions Lib/test/libregrtest/mypy.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Config file for running mypy on libregrtest.
# Run mypy by invoking `mypy --config-file Lib/test/libregrtest/mypy.ini`
# on the command-line from the repo root

[mypy]
files = Lib/test/libregrtest
explicit_package_bases = True
python_version = 3.12
platform = linux
pretty = True

# Enable most stricter settings
enable_error_code = ignore-without-code
strict = True

# 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
check_untyped_defs = False
warn_return_any = False

disable_error_code = return

# Enable --strict-optional for these ASAP:
[mypy-Lib.test.libregrtest.main.*,Lib.test.libregrtest.run_workers.*]
strict_optional = False

# Various internal modules that typeshed deliberately doesn't have stubs for:
[mypy-_abc.*,_opcode.*,_overlapped.*,_testcapi.*,_testinternalcapi.*,test.*]
ignore_missing_imports = True
2 changes: 2 additions & 0 deletions Lib/test/libregrtest/results.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ def accumulate_result(self, result: TestResult, runtests: RunTests):
self.worker_bug = True

if result.has_meaningful_duration() and not rerun:
if result.duration is None:
raise ValueError("result.duration is None")
self.test_times.append((result.duration, test_name))
if result.stats is not None:
self.stats.accumulate(result.stats)
Expand Down
8 changes: 4 additions & 4 deletions Lib/test/libregrtest/single.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,11 +237,11 @@ def _runtest(result: TestResult, runtests: RunTests) -> None:
output_on_failure = runtests.output_on_failure
timeout = runtests.timeout

use_timeout = (
timeout is not None and threading_helper.can_start_thread
)
if use_timeout:
if timeout is not None and threading_helper.can_start_thread:
use_timeout = True
faulthandler.dump_traceback_later(timeout, exit=True)
else:
use_timeout = False

try:
setup_tests(runtests)
Expand Down
9 changes: 9 additions & 0 deletions Lib/test/libregrtest/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -377,10 +377,19 @@ def get_temp_dir(tmp_dir: StrPath | None = None) -> StrPath:
# Python out of the source tree, especially when the
# source tree is read only.
tmp_dir = sysconfig.get_config_var('srcdir')
if not tmp_dir:
raise RuntimeError(
"Could not determine the correct value for tmp_dir"
)
tmp_dir = os.path.join(tmp_dir, 'build')
else:
# WASI platform
tmp_dir = sysconfig.get_config_var('projectbase')
if not tmp_dir:
raise RuntimeError(
"sysconfig.get_config_var('projectbase') "
f"unexpectedly returned {tmp_dir!r} on WASI"
)
tmp_dir = os.path.join(tmp_dir, 'build')

# When get_temp_dir() is called in a worker process,
Expand Down

0 comments on commit 36dbebe

Please sign in to comment.