diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2022-12-31 22:08:25 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2022-12-31 22:08:25 -0500 |
commit | 09f9188e826f900198d638ee3c42b27bca29597d (patch) | |
tree | 785dca94af0f4ac52bd8bb21d02cd80e2c6c87e5 | |
parent | 0bf14e2d297599bb0b0454b1b2636171aefb1882 (diff) | |
download | python-coveragepy-git-09f9188e826f900198d638ee3c42b27bca29597d.tar.gz |
mypy: add env.py
-rw-r--r-- | coverage/config.py | 2 | ||||
-rw-r--r-- | coverage/control.py | 6 | ||||
-rw-r--r-- | coverage/debug.py | 10 | ||||
-rw-r--r-- | coverage/env.py | 9 | ||||
-rw-r--r-- | coverage/inorout.py | 6 | ||||
-rw-r--r-- | coverage/plugin.py | 4 | ||||
-rw-r--r-- | coverage/types.py | 5 | ||||
-rw-r--r-- | tox.ini | 2 |
8 files changed, 24 insertions, 20 deletions
diff --git a/coverage/config.py b/coverage/config.py index cde35466..69159d99 100644 --- a/coverage/config.py +++ b/coverage/config.py @@ -518,7 +518,7 @@ class CoverageConfig(TConfigurable): for k, v in self.paths.items() ) - def debug_info(self) -> List[Tuple[str, str]]: + def debug_info(self) -> Iterable[Tuple[str, Any]]: """Make a list of (name, value) pairs for writing debug info.""" return human_sorted_items( # type: ignore (k, v) for k, v in self.__dict__.items() if not k.startswith("_") diff --git a/coverage/control.py b/coverage/control.py index 24439918..5aa312d3 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -46,9 +46,7 @@ from coverage.python import PythonFileReporter from coverage.report import render_report from coverage.results import Analysis from coverage.summary import SummaryReporter -from coverage.types import ( - TConfigurable, TConfigSection, TConfigValue, TLineNo, TMorf, TSysInfo, -) +from coverage.types import TConfigurable, TConfigSection, TConfigValue, TLineNo, TMorf from coverage.xmlreport import XmlReporter @@ -1233,7 +1231,7 @@ class Coverage(TConfigurable): ): return render_report(self.config.lcov_output, LcovReporter(self), morfs, self._message) - def sys_info(self) -> TSysInfo: + def sys_info(self) -> Iterable[Tuple[str, Any]]: """Return a list of (key, value) pairs showing internal information.""" import coverage as covmod diff --git a/coverage/debug.py b/coverage/debug.py index b770066b..7ed8937c 100644 --- a/coverage/debug.py +++ b/coverage/debug.py @@ -15,6 +15,8 @@ import sys import types import _thread +from typing import Any, Callable, Iterable, Iterator, Tuple + from coverage.misc import isolate_module os = isolate_module(os) @@ -108,7 +110,7 @@ def info_header(label): return "--{:-<60s}".format(" "+label+" ") -def info_formatter(info): +def info_formatter(info: Iterable[Tuple[str, Any]]) -> Iterator[str]: """Produce a sequence of formatted lines from info. `info` is a sequence of pairs (label, data). The produced lines are @@ -135,7 +137,11 @@ def info_formatter(info): yield "%*s: %s" % (label_len, label, data) -def write_formatted_info(write, header, info): +def write_formatted_info( + write: Callable[[str], None], + header: str, + info: Iterable[Tuple[str, Any]], +) -> None: """Write a sequence of (label,data) pairs nicely. `write` is a function write(str) that accepts each line of output. diff --git a/coverage/env.py b/coverage/env.py index fcd5ff04..0b01f3e7 100644 --- a/coverage/env.py +++ b/coverage/env.py @@ -7,6 +7,8 @@ import os import platform import sys +from typing import Any, Iterable, Tuple + # Operating systems. WINDOWS = sys.platform == "win32" LINUX = sys.platform.startswith("linux") @@ -21,7 +23,7 @@ PYPY = (platform.python_implementation() == "PyPy") PYVERSION = sys.version_info + (int(platform.python_version()[-1] == "+"),) if PYPY: - PYPYVERSION = sys.pypy_version_info + PYPYVERSION = sys.pypy_version_info # type: ignore[attr-defined] # Python behavior. class PYBEHAVIOR: @@ -134,13 +136,14 @@ METACOV = os.getenv('COVERAGE_COVERAGE', '') != '' TESTING = os.getenv('COVERAGE_TESTING', '') == 'True' -def debug_info(): +def debug_info() -> Iterable[Tuple[str, Any]]: """Return a list of (name, value) pairs for printing debug information.""" info = [ (name, value) for name, value in globals().items() if not name.startswith("_") and name not in {"PYBEHAVIOR", "debug_info"} and - not isinstance(value, type(os)) + not isinstance(value, type(os)) and + not str(value).startswith("typing.") ] info += [ (name, value) for name, value in PYBEHAVIOR.__dict__.items() diff --git a/coverage/inorout.py b/coverage/inorout.py index 4be4a85d..252796f4 100644 --- a/coverage/inorout.py +++ b/coverage/inorout.py @@ -16,7 +16,7 @@ import sysconfig import traceback from types import FrameType, ModuleType -from typing import cast, Iterable, List, Optional, Set, Tuple, TYPE_CHECKING +from typing import cast, Any, Iterable, List, Optional, Set, Tuple, TYPE_CHECKING from coverage import env from coverage.disposition import FileDisposition, disposition_init @@ -25,7 +25,7 @@ from coverage.files import TreeMatcher, GlobMatcher, ModuleMatcher from coverage.files import prep_patterns, find_python_files, canonical_filename from coverage.misc import sys_modules_saved from coverage.python import source_for_file, source_for_morf -from coverage.types import TMorf, TWarnFn, TDebugCtl, TSysInfo +from coverage.types import TMorf, TWarnFn, TDebugCtl if TYPE_CHECKING: from coverage.config import CoverageConfig @@ -565,7 +565,7 @@ class InOrOut: continue yield file_path, plugin_name - def sys_info(self) -> TSysInfo: + def sys_info(self) -> Iterable[Tuple[str, Any]]: """Our information for Coverage.sys_info. Returns a list of (key, value) pairs. diff --git a/coverage/plugin.py b/coverage/plugin.py index af586ec2..4a7fc235 100644 --- a/coverage/plugin.py +++ b/coverage/plugin.py @@ -121,7 +121,7 @@ from typing import Any, Dict, Iterable, Optional, Set, Tuple, Union from coverage import files from coverage.misc import _needs_to_implement -from coverage.types import TArc, TConfigurable, TLineNo, TSourceTokenLines, TSysInfo +from coverage.types import TArc, TConfigurable, TLineNo, TSourceTokenLines class CoveragePlugin: @@ -235,7 +235,7 @@ class CoveragePlugin: """ pass - def sys_info(self) -> TSysInfo: + def sys_info(self) -> Iterable[Tuple[str, Any]]: """Get a list of information useful for debugging. Plug-in type: any. diff --git a/coverage/types.py b/coverage/types.py index 1e641d1c..416b0b5d 100644 --- a/coverage/types.py +++ b/coverage/types.py @@ -7,7 +7,7 @@ Types for use throughout coverage.py. from types import ModuleType from typing import ( - Any, Dict, Iterable, List, Optional, Sequence, Tuple, Union, + Any, Dict, Iterable, List, Optional, Tuple, Union, TYPE_CHECKING, ) @@ -81,6 +81,3 @@ class TDebugCtl(Protocol): def write(self, msg: str) -> None: """Write a line of debug output.""" - -# Data returned from sys_info() -TSysInfo = Sequence[Tuple[str, Union[str, Iterable[str]]]] @@ -96,7 +96,7 @@ deps = setenv = {[testenv]setenv} C__B=coverage/__init__.py coverage/__main__.py coverage/annotate.py coverage/bytecode.py - C_CE=coverage/config.py coverage/context.py coverage/control.py coverage/data.py coverage/disposition.py coverage/exceptions.py + C_CE=coverage/config.py coverage/context.py coverage/control.py coverage/data.py coverage/disposition.py coverage/env.py coverage/exceptions.py C_FN=coverage/files.py coverage/inorout.py coverage/jsonreport.py coverage/lcovreport.py coverage/multiproc.py coverage/numbits.py C_OP=coverage/parser.py coverage/phystokens.py coverage/plugin.py coverage/python.py C_QZ=coverage/report.py coverage/results.py coverage/sqldata.py coverage/tomlconfig.py coverage/types.py coverage/version.py |