The types of objects used in pytest's API are now exported so they may be used in type annotations.
The newly-exported types are:
pytest.Config
for :class:`Config <pytest.Config>`.pytest.Mark
for :class:`marks <pytest.Mark>`.pytest.MarkDecorator
for :class:`mark decorators <pytest.MarkDecorator>`.pytest.MarkGenerator
for the :class:`pytest.mark <pytest.MarkGenerator>` singleton.pytest.Metafunc
for the :class:`metafunc <pytest.MarkGenerator>` argument to the :func:`pytest_generate_tests <_pytest.hookspec.pytest_generate_tests>` hook.pytest.CallInfo
for the :class:`CallInfo <pytest.CallInfo>` type passed to various hooks.pytest.PytestPluginManager
for :class:`PytestPluginManager <pytest.PytestPluginManager>`.pytest.ExceptionInfo
for the :class:`ExceptionInfo <pytest.ExceptionInfo>` type returned from :func:`pytest.raises` and passed to various hooks.pytest.Parser
for the :class:`Parser <pytest.Parser>` type passed to the :func:`pytest_addoption <_pytest.hookspec.pytest_addoption>` hook.pytest.OptionGroup
for the :class:`OptionGroup <pytest.OptionGroup>` type returned from the :func:`parser.addgroup <pytest.Parser.getgroup>` method.pytest.HookRecorder
for the :class:`HookRecorder <pytest.HookRecorder>` type returned from :class:`~pytest.Pytester`.pytest.RecordedHookCall
for the :class:`RecordedHookCall <pytest.HookRecorder>` type returned from :class:`~pytest.HookRecorder`.pytest.RunResult
for the :class:`RunResult <pytest.RunResult>` type returned from :class:`~pytest.Pytester`.pytest.LineMatcher
for the :class:`LineMatcher <pytest.RunResult>` type used in :class:`~pytest.RunResult` and others.pytest.TestReport
for the :class:`TestReport <pytest.TestReport>` type used in various hooks.pytest.CollectReport
for the :class:`CollectReport <pytest.CollectReport>` type used in various hooks.
Constructing most of them directly is not supported; they are only meant for use in type annotations. Doing so will emit a deprecation warning, and may become a hard-error in pytest 8.0.
Subclassing them is also not supported. This is not currently enforced at runtime, but is detected by type-checkers such as mypy.