22
33from __future__ import annotations
44
5- import sys
65from dataclasses import dataclass , replace
76from timeit import default_timer
87from typing import TYPE_CHECKING , Protocol , TypeVar , cast
1110
1211if TYPE_CHECKING :
1312 from _pytest .capture import CaptureManager
14- from _pytest .fixtures import SubRequest
15- from _pytest .terminal import TerminalReporter
1613
1714
1815def pytest_addoption (parser : pytest .Parser ) -> None :
@@ -45,7 +42,7 @@ def __call__(self, msg: str) -> None:
4542
4643
4744@pytest .fixture (scope = "session" )
48- def printer_session (request : SubRequest ) -> Printer :
45+ def printer_session (request : pytest . FixtureRequest ) -> Printer :
4946 """Pytest plugin to print test progress steps in verbose mode (session scoped)."""
5047 return _create (request , _Printer , Formatter ())
5148
@@ -76,7 +73,7 @@ def indent(self, *, icon: str) -> PrettyPrinter:
7673
7774
7875@pytest .fixture (scope = "session" )
79- def pretty_printer (request : SubRequest ) -> PrettyPrinter :
76+ def pretty_printer (request : pytest . FixtureRequest ) -> PrettyPrinter :
8077 """Pytest plugin to print test progress steps in verbose mode."""
8178 formatter = Formatter (head = " " , icon = "⏩" , space = " " , indentation = " " , timer_fmt = "[{elapsed:.20f}]" )
8279 return _create (request , _PrettyPrinter , formatter )
@@ -94,17 +91,16 @@ def __call__(self, *, formatter: Formatter) -> PrettyPrinter:
9491
9592
9693@pytest .fixture (scope = "session" )
97- def create_pretty_printer (request : SubRequest ) -> PrettyPrinterFactory :
94+ def create_pretty_printer (request : pytest . FixtureRequest ) -> PrettyPrinterFactory :
9895 """Pytest plugin to print test progress steps in verbose mode."""
99- Formatter (head = " " , icon = "⏩" , space = " " , indentation = " " , timer_fmt = "[{elapsed:.20f}]" )
10096
10197 def meth (* , formatter : Formatter ) -> PrettyPrinter :
10298 return _create (request , _PrettyPrinter , formatter )
10399
104100 return meth
105101
106102
107- @dataclass (frozen = True , ** { " slots" : True , " kw_only" : True } if sys . version_info >= ( 3 , 10 ) else {} )
103+ @dataclass (frozen = True , slots = True , kw_only = True )
108104class Formatter :
109105 """Configures how to format messages to be printed."""
110106
@@ -137,7 +133,7 @@ class _Printer:
137133 def __init__ (
138134 self ,
139135 * ,
140- reporter : TerminalReporter | None ,
136+ reporter : pytest . TerminalReporter | None ,
141137 capture_manager : CaptureManager | None ,
142138 formatter : Formatter ,
143139 level : int ,
@@ -177,9 +173,9 @@ def indent(self, *, icon: str) -> PrettyPrinter:
177173_OfType = TypeVar ("_OfType" , bound = _Printer )
178174
179175
180- def _create (request : SubRequest , of_type : type [_OfType ], formatter : Formatter ) -> _OfType :
176+ def _create (request : pytest . FixtureRequest , of_type : type [_OfType ], formatter : Formatter ) -> _OfType :
181177 return of_type (
182- reporter = cast ("TerminalReporter | None" , request .config .pluginmanager .getplugin ("terminalreporter" ))
178+ reporter = cast ("pytest. TerminalReporter | None" , request .config .pluginmanager .getplugin ("terminalreporter" ))
183179 if request .config .getoption ("pytest_print_on" ) or cast ("int" , request .config .getoption ("verbose" )) > 0
184180 else None ,
185181 capture_manager = cast ("CaptureManager | None" , request .config .pluginmanager .getplugin ("capturemanager" )),
0 commit comments