-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Closed
Description
Type checkers report the type of TestReport.when as Union[builtins.str, None] (coming from the BaseReport base class) rather than the correct type for TestReport of Literal["setup", "call", "teardown"].
(I checked this with mypy 1.10.0 and pyright 1.1.342)
This looks to be due to the fact that the BaseReport annotation is on a class attribute, which takes precedence over the instance attribute assigned within the derived TestReport class.
Repro
def pytest_runtest_logreport(report: TestReport) -> None:
reveal_type(report.when)
mypy 1.10.0 reports:
note: Revealed type is "Union[builtins.str, None]"
(The actual type is Literal["setup", "call", "teardown"])
Suggested Solution
I think this can be resolved by adding a class-level type annotation to TestReport with the narrower type (the same applies to location):
@final
class TestReport(BaseReport):
# [...]
when: Literal["setup", "call", "teardown"]
location: tuple[str, int | None, str]
# [...]
rouge8
Metadata
Metadata
Assignees
Labels
No labels