summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2022-12-31 22:08:25 -0500
committerNed Batchelder <ned@nedbatchelder.com>2022-12-31 22:08:25 -0500
commit09f9188e826f900198d638ee3c42b27bca29597d (patch)
tree785dca94af0f4ac52bd8bb21d02cd80e2c6c87e5
parent0bf14e2d297599bb0b0454b1b2636171aefb1882 (diff)
downloadpython-coveragepy-git-09f9188e826f900198d638ee3c42b27bca29597d.tar.gz
mypy: add env.py
-rw-r--r--coverage/config.py2
-rw-r--r--coverage/control.py6
-rw-r--r--coverage/debug.py10
-rw-r--r--coverage/env.py9
-rw-r--r--coverage/inorout.py6
-rw-r--r--coverage/plugin.py4
-rw-r--r--coverage/types.py5
-rw-r--r--tox.ini2
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]]]]
diff --git a/tox.ini b/tox.ini
index 3d22896b..10bdf6d3 100644
--- a/tox.ini
+++ b/tox.ini
@@ -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