[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
This commit is contained in:
parent
f3e6dda15c
commit
b41bdc50be
|
@ -8,6 +8,7 @@ our CHANGELOG) into Markdown (which is required by GitHub Releases).
|
|||
|
||||
Requires Python3.6+.
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
import re
|
||||
import sys
|
||||
|
|
|
@ -13,6 +13,7 @@ After that, it will create a release using the `release` tox environment, and pu
|
|||
**Token**: currently the token from the GitHub Actions is used, pushed with
|
||||
`pytest bot <pytestbot@gmail.com>` commit author.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: disallow-untyped-defs
|
||||
"""Invoke development tasks."""
|
||||
|
||||
import argparse
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
|
|
@ -279,9 +279,9 @@ class TracebackEntry:
|
|||
|
||||
Mostly for internal use.
|
||||
"""
|
||||
tbh: Union[
|
||||
bool, Callable[[Optional[ExceptionInfo[BaseException]]], bool]
|
||||
] = False
|
||||
tbh: Union[bool, Callable[[Optional[ExceptionInfo[BaseException]]], bool]] = (
|
||||
False
|
||||
)
|
||||
for maybe_ns_dct in (self.frame.f_locals, self.frame.f_globals):
|
||||
# in normal cases, f_locals and f_globals are dictionaries
|
||||
# however via `exec(...)` / `eval(...)` they can be other types
|
||||
|
@ -378,12 +378,10 @@ class Traceback(List[TracebackEntry]):
|
|||
return self
|
||||
|
||||
@overload
|
||||
def __getitem__(self, key: "SupportsIndex") -> TracebackEntry:
|
||||
...
|
||||
def __getitem__(self, key: "SupportsIndex") -> TracebackEntry: ...
|
||||
|
||||
@overload
|
||||
def __getitem__(self, key: slice) -> "Traceback":
|
||||
...
|
||||
def __getitem__(self, key: slice) -> "Traceback": ...
|
||||
|
||||
def __getitem__(
|
||||
self, key: Union["SupportsIndex", slice]
|
||||
|
@ -1051,13 +1049,13 @@ class FormattedExcinfo:
|
|||
# full support for exception groups added to ExceptionInfo.
|
||||
# See https://github.com/pytest-dev/pytest/issues/9159
|
||||
if isinstance(e, BaseExceptionGroup):
|
||||
reprtraceback: Union[
|
||||
ReprTracebackNative, ReprTraceback
|
||||
] = ReprTracebackNative(
|
||||
traceback.format_exception(
|
||||
type(excinfo_.value),
|
||||
excinfo_.value,
|
||||
excinfo_.traceback[0]._rawentry,
|
||||
reprtraceback: Union[ReprTracebackNative, ReprTraceback] = (
|
||||
ReprTracebackNative(
|
||||
traceback.format_exception(
|
||||
type(excinfo_.value),
|
||||
excinfo_.value,
|
||||
excinfo_.traceback[0]._rawentry,
|
||||
)
|
||||
)
|
||||
)
|
||||
else:
|
||||
|
|
|
@ -47,12 +47,10 @@ class Source:
|
|||
__hash__ = None # type: ignore
|
||||
|
||||
@overload
|
||||
def __getitem__(self, key: int) -> str:
|
||||
...
|
||||
def __getitem__(self, key: int) -> str: ...
|
||||
|
||||
@overload
|
||||
def __getitem__(self, key: slice) -> "Source":
|
||||
...
|
||||
def __getitem__(self, key: slice) -> "Source": ...
|
||||
|
||||
def __getitem__(self, key: Union[int, slice]) -> Union[str, "Source"]:
|
||||
if isinstance(key, int):
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""local path implementation."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import atexit
|
||||
|
@ -205,12 +206,10 @@ class Stat:
|
|||
if TYPE_CHECKING:
|
||||
|
||||
@property
|
||||
def size(self) -> int:
|
||||
...
|
||||
def size(self) -> int: ...
|
||||
|
||||
@property
|
||||
def mtime(self) -> float:
|
||||
...
|
||||
def mtime(self) -> float: ...
|
||||
|
||||
def __getattr__(self, name: str) -> Any:
|
||||
return getattr(self._osstatresult, "st_" + name)
|
||||
|
@ -966,12 +965,10 @@ class LocalPath:
|
|||
return p
|
||||
|
||||
@overload
|
||||
def stat(self, raising: Literal[True] = ...) -> Stat:
|
||||
...
|
||||
def stat(self, raising: Literal[True] = ...) -> Stat: ...
|
||||
|
||||
@overload
|
||||
def stat(self, raising: Literal[False]) -> Stat | None:
|
||||
...
|
||||
def stat(self, raising: Literal[False]) -> Stat | None: ...
|
||||
|
||||
def stat(self, raising: bool = True) -> Stat | None:
|
||||
"""Return an os.stat() tuple."""
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Support for presenting detailed information in failing assertions."""
|
||||
|
||||
import sys
|
||||
from typing import Any
|
||||
from typing import Generator
|
||||
|
|
|
@ -672,9 +672,9 @@ class AssertionRewriter(ast.NodeVisitor):
|
|||
self.enable_assertion_pass_hook = False
|
||||
self.source = source
|
||||
self.scope: tuple[ast.AST, ...] = ()
|
||||
self.variables_overwrite: defaultdict[
|
||||
tuple[ast.AST, ...], Dict[str, str]
|
||||
] = defaultdict(dict)
|
||||
self.variables_overwrite: defaultdict[tuple[ast.AST, ...], Dict[str, str]] = (
|
||||
defaultdict(dict)
|
||||
)
|
||||
|
||||
def run(self, mod: ast.Module) -> None:
|
||||
"""Find all assert statements in *mod* and rewrite them."""
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Utilities for assertion debugging."""
|
||||
|
||||
import collections.abc
|
||||
import os
|
||||
import pprint
|
||||
|
@ -223,9 +224,7 @@ def assertrepr_compare(
|
|||
raise
|
||||
except Exception:
|
||||
explanation = [
|
||||
"(pytest_assertion plugin: representation of details failed: {}.".format(
|
||||
_pytest._code.ExceptionInfo.from_current()._getreprcrash()
|
||||
),
|
||||
f"(pytest_assertion plugin: representation of details failed: {_pytest._code.ExceptionInfo.from_current()._getreprcrash()}.",
|
||||
" Probably an object has a faulty __repr__.)",
|
||||
]
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Implementation of the cache provider."""
|
||||
|
||||
# This plugin was not named "cache" to avoid conflicts with the external
|
||||
# pytest-cache version.
|
||||
import dataclasses
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Per-test stdout/stderr capturing mechanism."""
|
||||
|
||||
import abc
|
||||
import collections
|
||||
import contextlib
|
||||
|
@ -482,13 +483,7 @@ class FDCaptureBase(CaptureBase[AnyStr]):
|
|||
self._state = "initialized"
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return "<{} {} oldfd={} _state={!r} tmpfile={!r}>".format(
|
||||
self.__class__.__name__,
|
||||
self.targetfd,
|
||||
self.targetfd_save,
|
||||
self._state,
|
||||
self.tmpfile,
|
||||
)
|
||||
return f"<{self.__class__.__name__} {self.targetfd} oldfd={self.targetfd_save} _state={self._state!r} tmpfile={self.tmpfile!r}>"
|
||||
|
||||
def _assert_state(self, op: str, states: Tuple[str, ...]) -> None:
|
||||
assert (
|
||||
|
@ -621,13 +616,7 @@ class MultiCapture(Generic[AnyStr]):
|
|||
self.err: Optional[CaptureBase[AnyStr]] = err
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return "<MultiCapture out={!r} err={!r} in_={!r} _state={!r} _in_suspended={!r}>".format(
|
||||
self.out,
|
||||
self.err,
|
||||
self.in_,
|
||||
self._state,
|
||||
self._in_suspended,
|
||||
)
|
||||
return f"<MultiCapture out={self.out!r} err={self.err!r} in_={self.in_!r} _state={self._state!r} _in_suspended={self._in_suspended!r}>"
|
||||
|
||||
def start_capturing(self) -> None:
|
||||
self._state = "started"
|
||||
|
@ -735,9 +724,7 @@ class CaptureManager:
|
|||
self._capture_fixture: Optional[CaptureFixture[Any]] = None
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return "<CaptureManager _method={!r} _global_capturing={!r} _capture_fixture={!r}>".format(
|
||||
self._method, self._global_capturing, self._capture_fixture
|
||||
)
|
||||
return f"<CaptureManager _method={self._method!r} _global_capturing={self._global_capturing!r} _capture_fixture={self._capture_fixture!r}>"
|
||||
|
||||
def is_capturing(self) -> Union[str, bool]:
|
||||
if self.is_globally_capturing():
|
||||
|
|
|
@ -304,7 +304,7 @@ def get_user_id() -> int | None:
|
|||
# mypy follows the version and platform checking expectation of PEP 484:
|
||||
# https://mypy.readthedocs.io/en/stable/common_issues.html?highlight=platform#python-version-and-system-platform-checks
|
||||
# Containment checks are too complex for mypy v1.5.0 and cause failure.
|
||||
if sys.platform == "win32" or sys.platform == "emscripten": # noqa: PLR1714
|
||||
if sys.platform == "win32" or sys.platform == "emscripten":
|
||||
# win32 does not have a getuid() function.
|
||||
# Emscripten has a return 0 stub.
|
||||
return None
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Command line options, ini-file and conftest.py processing."""
|
||||
|
||||
import argparse
|
||||
import collections.abc
|
||||
import copy
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Interactive debugging with PDB, the Python Debugger."""
|
||||
|
||||
import argparse
|
||||
import functools
|
||||
import sys
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Discover and run doctests in modules and test files."""
|
||||
|
||||
import bdb
|
||||
from contextlib import contextmanager
|
||||
import functools
|
||||
|
|
|
@ -631,15 +631,9 @@ class FixtureRequest(abc.ABC):
|
|||
source_path_str = str(source_path)
|
||||
msg = (
|
||||
"The requested fixture has no parameter defined for test:\n"
|
||||
" {}\n\n"
|
||||
"Requested fixture '{}' defined in:\n{}"
|
||||
"\n\nRequested here:\n{}:{}".format(
|
||||
funcitem.nodeid,
|
||||
fixturedef.argname,
|
||||
getlocation(fixturedef.func, funcitem.config.rootpath),
|
||||
source_path_str,
|
||||
source_lineno,
|
||||
)
|
||||
f" {funcitem.nodeid}\n\n"
|
||||
f"Requested fixture '{fixturedef.argname}' defined in:\n{getlocation(fixturedef.func, funcitem.config.rootpath)}"
|
||||
f"\n\nRequested here:\n{source_path_str}:{source_lineno}"
|
||||
)
|
||||
fail(msg, pytrace=False)
|
||||
|
||||
|
@ -1148,11 +1142,11 @@ def wrap_function_to_error_out_if_called_directly(
|
|||
"""Wrap the given fixture function so we can raise an error about it being called directly,
|
||||
instead of used as an argument in a test function."""
|
||||
message = (
|
||||
'Fixture "{name}" called directly. Fixtures are not meant to be called directly,\n'
|
||||
f'Fixture "{fixture_marker.name or function.__name__}" called directly. Fixtures are not meant to be called directly,\n'
|
||||
"but are created automatically when test functions request them as parameters.\n"
|
||||
"See https://docs.pytest.org/en/stable/explanation/fixtures.html for more information about fixtures, and\n"
|
||||
"https://docs.pytest.org/en/stable/deprecations.html#calling-fixtures-directly about how to update your code."
|
||||
).format(name=fixture_marker.name or function.__name__)
|
||||
)
|
||||
|
||||
@functools.wraps(function)
|
||||
def result(*args, **kwargs):
|
||||
|
@ -1219,8 +1213,7 @@ def fixture(
|
|||
Union[Sequence[Optional[object]], Callable[[Any], Optional[object]]]
|
||||
] = ...,
|
||||
name: Optional[str] = ...,
|
||||
) -> FixtureFunction:
|
||||
...
|
||||
) -> FixtureFunction: ...
|
||||
|
||||
|
||||
@overload
|
||||
|
@ -1234,8 +1227,7 @@ def fixture(
|
|||
Union[Sequence[Optional[object]], Callable[[Any], Optional[object]]]
|
||||
] = ...,
|
||||
name: Optional[str] = None,
|
||||
) -> FixtureFunctionMarker:
|
||||
...
|
||||
) -> FixtureFunctionMarker: ...
|
||||
|
||||
|
||||
def fixture(
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Version info, help messages, tracing configuration."""
|
||||
|
||||
from argparse import Action
|
||||
import os
|
||||
import sys
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Hook specifications for pytest plugins which are invoked by pytest itself
|
||||
and by builtin plugins."""
|
||||
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
from typing import Dict
|
||||
|
|
|
@ -7,6 +7,7 @@ Based on initial code from Ross Lawley.
|
|||
Output conforms to
|
||||
https://github.com/jenkinsci/xunit-plugin/blob/master/src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd
|
||||
"""
|
||||
|
||||
from datetime import datetime
|
||||
import functools
|
||||
import os
|
||||
|
@ -60,7 +61,7 @@ def bin_xml_escape(arg: object) -> str:
|
|||
# Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
|
||||
# For an unknown(?) reason, we disallow #x7F (DEL) as well.
|
||||
illegal_xml_re = (
|
||||
"[^\u0009\u000A\u000D\u0020-\u007E\u0080-\uD7FF\uE000-\uFFFD\u10000-\u10FFFF]"
|
||||
"[^\u0009\u000a\u000d\u0020-\u007e\u0080-\ud7ff\ue000-\ufffd\u10000-\u10ffFF]"
|
||||
)
|
||||
return re.sub(illegal_xml_re, repl, str(arg))
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Access and control log capturing."""
|
||||
|
||||
from contextlib import contextmanager
|
||||
from contextlib import nullcontext
|
||||
from datetime import datetime
|
||||
|
|
|
@ -736,14 +736,12 @@ class Session(nodes.Collector):
|
|||
@overload
|
||||
def perform_collect(
|
||||
self, args: Optional[Sequence[str]] = ..., genitems: "Literal[True]" = ...
|
||||
) -> Sequence[nodes.Item]:
|
||||
...
|
||||
) -> Sequence[nodes.Item]: ...
|
||||
|
||||
@overload
|
||||
def perform_collect(
|
||||
self, args: Optional[Sequence[str]] = ..., genitems: bool = ...
|
||||
) -> Sequence[Union[nodes.Item, nodes.Collector]]:
|
||||
...
|
||||
) -> Sequence[Union[nodes.Item, nodes.Collector]]: ...
|
||||
|
||||
def perform_collect(
|
||||
self, args: Optional[Sequence[str]] = None, genitems: bool = True
|
||||
|
|
|
@ -434,12 +434,10 @@ if TYPE_CHECKING:
|
|||
|
||||
class _SkipMarkDecorator(MarkDecorator):
|
||||
@overload # type: ignore[override,misc,no-overload-impl]
|
||||
def __call__(self, arg: Markable) -> Markable:
|
||||
...
|
||||
def __call__(self, arg: Markable) -> Markable: ...
|
||||
|
||||
@overload
|
||||
def __call__(self, reason: str = ...) -> "MarkDecorator":
|
||||
...
|
||||
def __call__(self, reason: str = ...) -> "MarkDecorator": ...
|
||||
|
||||
class _SkipifMarkDecorator(MarkDecorator):
|
||||
def __call__( # type: ignore[override]
|
||||
|
@ -447,13 +445,11 @@ if TYPE_CHECKING:
|
|||
condition: Union[str, bool] = ...,
|
||||
*conditions: Union[str, bool],
|
||||
reason: str = ...,
|
||||
) -> MarkDecorator:
|
||||
...
|
||||
) -> MarkDecorator: ...
|
||||
|
||||
class _XfailMarkDecorator(MarkDecorator):
|
||||
@overload # type: ignore[override,misc,no-overload-impl]
|
||||
def __call__(self, arg: Markable) -> Markable:
|
||||
...
|
||||
def __call__(self, arg: Markable) -> Markable: ...
|
||||
|
||||
@overload
|
||||
def __call__(
|
||||
|
@ -466,8 +462,7 @@ if TYPE_CHECKING:
|
|||
None, Type[BaseException], Tuple[Type[BaseException], ...]
|
||||
] = ...,
|
||||
strict: bool = ...,
|
||||
) -> MarkDecorator:
|
||||
...
|
||||
) -> MarkDecorator: ...
|
||||
|
||||
class _ParametrizeMarkDecorator(MarkDecorator):
|
||||
def __call__( # type: ignore[override]
|
||||
|
@ -483,8 +478,7 @@ if TYPE_CHECKING:
|
|||
]
|
||||
] = ...,
|
||||
scope: Optional[_ScopeName] = ...,
|
||||
) -> MarkDecorator:
|
||||
...
|
||||
) -> MarkDecorator: ...
|
||||
|
||||
class _UsefixturesMarkDecorator(MarkDecorator):
|
||||
def __call__(self, *fixtures: str) -> MarkDecorator: # type: ignore[override]
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Monkeypatching and mocking functionality."""
|
||||
|
||||
from contextlib import contextmanager
|
||||
import os
|
||||
import re
|
||||
|
@ -167,8 +168,7 @@ class MonkeyPatch:
|
|||
name: object,
|
||||
value: Notset = ...,
|
||||
raising: bool = ...,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
@overload
|
||||
def setattr(
|
||||
|
@ -177,8 +177,7 @@ class MonkeyPatch:
|
|||
name: str,
|
||||
value: object,
|
||||
raising: bool = ...,
|
||||
) -> None:
|
||||
...
|
||||
) -> None: ...
|
||||
|
||||
def setattr(
|
||||
self,
|
||||
|
|
|
@ -363,12 +363,10 @@ class Node(abc.ABC, metaclass=NodeMeta):
|
|||
yield node, mark
|
||||
|
||||
@overload
|
||||
def get_closest_marker(self, name: str) -> Optional[Mark]:
|
||||
...
|
||||
def get_closest_marker(self, name: str) -> Optional[Mark]: ...
|
||||
|
||||
@overload
|
||||
def get_closest_marker(self, name: str, default: Mark) -> Mark:
|
||||
...
|
||||
def get_closest_marker(self, name: str, default: Mark) -> Mark: ...
|
||||
|
||||
def get_closest_marker(
|
||||
self, name: str, default: Optional[Mark] = None
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Submit failure or test session information to a pastebin service."""
|
||||
|
||||
from io import StringIO
|
||||
import tempfile
|
||||
from typing import IO
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
PYTEST_DONT_REWRITE
|
||||
"""
|
||||
|
||||
import collections.abc
|
||||
import contextlib
|
||||
from fnmatch import fnmatch
|
||||
|
@ -245,8 +246,7 @@ class RecordedHookCall:
|
|||
|
||||
if TYPE_CHECKING:
|
||||
# The class has undetermined attributes, this tells mypy about it.
|
||||
def __getattr__(self, key: str):
|
||||
...
|
||||
def __getattr__(self, key: str): ...
|
||||
|
||||
|
||||
@final
|
||||
|
@ -327,15 +327,13 @@ class HookRecorder:
|
|||
def getreports(
|
||||
self,
|
||||
names: "Literal['pytest_collectreport']",
|
||||
) -> Sequence[CollectReport]:
|
||||
...
|
||||
) -> Sequence[CollectReport]: ...
|
||||
|
||||
@overload
|
||||
def getreports(
|
||||
self,
|
||||
names: "Literal['pytest_runtest_logreport']",
|
||||
) -> Sequence[TestReport]:
|
||||
...
|
||||
) -> Sequence[TestReport]: ...
|
||||
|
||||
@overload
|
||||
def getreports(
|
||||
|
@ -344,8 +342,7 @@ class HookRecorder:
|
|||
"pytest_collectreport",
|
||||
"pytest_runtest_logreport",
|
||||
),
|
||||
) -> Sequence[Union[CollectReport, TestReport]]:
|
||||
...
|
||||
) -> Sequence[Union[CollectReport, TestReport]]: ...
|
||||
|
||||
def getreports(
|
||||
self,
|
||||
|
@ -390,15 +387,13 @@ class HookRecorder:
|
|||
def getfailures(
|
||||
self,
|
||||
names: "Literal['pytest_collectreport']",
|
||||
) -> Sequence[CollectReport]:
|
||||
...
|
||||
) -> Sequence[CollectReport]: ...
|
||||
|
||||
@overload
|
||||
def getfailures(
|
||||
self,
|
||||
names: "Literal['pytest_runtest_logreport']",
|
||||
) -> Sequence[TestReport]:
|
||||
...
|
||||
) -> Sequence[TestReport]: ...
|
||||
|
||||
@overload
|
||||
def getfailures(
|
||||
|
@ -407,8 +402,7 @@ class HookRecorder:
|
|||
"pytest_collectreport",
|
||||
"pytest_runtest_logreport",
|
||||
),
|
||||
) -> Sequence[Union[CollectReport, TestReport]]:
|
||||
...
|
||||
) -> Sequence[Union[CollectReport, TestReport]]: ...
|
||||
|
||||
def getfailures(
|
||||
self,
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Python test discovery, setup and run of test functions."""
|
||||
|
||||
import abc
|
||||
from collections import Counter
|
||||
from collections import defaultdict
|
||||
|
|
|
@ -769,8 +769,7 @@ def raises(
|
|||
expected_exception: Union[Type[E], Tuple[Type[E], ...]],
|
||||
*,
|
||||
match: Optional[Union[str, Pattern[str]]] = ...,
|
||||
) -> "RaisesContext[E]":
|
||||
...
|
||||
) -> "RaisesContext[E]": ...
|
||||
|
||||
|
||||
@overload
|
||||
|
@ -779,8 +778,7 @@ def raises(
|
|||
func: Callable[..., Any],
|
||||
*args: Any,
|
||||
**kwargs: Any,
|
||||
) -> _pytest._code.ExceptionInfo[E]:
|
||||
...
|
||||
) -> _pytest._code.ExceptionInfo[E]: ...
|
||||
|
||||
|
||||
def raises(
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Record warnings during test function execution."""
|
||||
|
||||
from pprint import pformat
|
||||
import re
|
||||
from types import TracebackType
|
||||
|
@ -43,13 +44,11 @@ def recwarn() -> Generator["WarningsRecorder", None, None]:
|
|||
@overload
|
||||
def deprecated_call(
|
||||
*, match: Optional[Union[str, Pattern[str]]] = ...
|
||||
) -> "WarningsRecorder":
|
||||
...
|
||||
) -> "WarningsRecorder": ...
|
||||
|
||||
|
||||
@overload
|
||||
def deprecated_call(func: Callable[..., T], *args: Any, **kwargs: Any) -> T:
|
||||
...
|
||||
def deprecated_call(func: Callable[..., T], *args: Any, **kwargs: Any) -> T: ...
|
||||
|
||||
|
||||
def deprecated_call(
|
||||
|
@ -91,8 +90,7 @@ def warns(
|
|||
expected_warning: Union[Type[Warning], Tuple[Type[Warning], ...]] = ...,
|
||||
*,
|
||||
match: Optional[Union[str, Pattern[str]]] = ...,
|
||||
) -> "WarningsChecker":
|
||||
...
|
||||
) -> "WarningsChecker": ...
|
||||
|
||||
|
||||
@overload
|
||||
|
@ -101,8 +99,7 @@ def warns(
|
|||
func: Callable[..., T],
|
||||
*args: Any,
|
||||
**kwargs: Any,
|
||||
) -> T:
|
||||
...
|
||||
) -> T: ...
|
||||
|
||||
|
||||
def warns(
|
||||
|
|
|
@ -72,8 +72,7 @@ class BaseReport:
|
|||
|
||||
if TYPE_CHECKING:
|
||||
# Can have arbitrary fields given to __init__().
|
||||
def __getattr__(self, key: str) -> Any:
|
||||
...
|
||||
def __getattr__(self, key: str) -> Any: ...
|
||||
|
||||
def toterminal(self, out: TerminalWriter) -> None:
|
||||
if hasattr(self, "node"):
|
||||
|
@ -606,9 +605,9 @@ def _report_kwargs_from_json(reportdict: Dict[str, Any]) -> Dict[str, Any]:
|
|||
description,
|
||||
)
|
||||
)
|
||||
exception_info: Union[
|
||||
ExceptionChainRepr, ReprExceptionInfo
|
||||
] = ExceptionChainRepr(chain)
|
||||
exception_info: Union[ExceptionChainRepr, ReprExceptionInfo] = (
|
||||
ExceptionChainRepr(chain)
|
||||
)
|
||||
else:
|
||||
exception_info = ReprExceptionInfo(
|
||||
reprtraceback=reprtraceback,
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Basic collect and runtest protocol implementations."""
|
||||
|
||||
import bdb
|
||||
import dataclasses
|
||||
import os
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Support for skip/xfail functions and markers."""
|
||||
|
||||
from collections.abc import Mapping
|
||||
import dataclasses
|
||||
import os
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
This is a good source for looking at the various reporting hooks.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
from collections import Counter
|
||||
import dataclasses
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Support for providing temporary directories to test functions."""
|
||||
|
||||
import dataclasses
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Discover and run std-library "unittest" style tests."""
|
||||
|
||||
import sys
|
||||
import traceback
|
||||
import types
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# PYTHON_ARGCOMPLETE_OK
|
||||
"""pytest: unit and functional testing with Python."""
|
||||
|
||||
from _pytest import __version__
|
||||
from _pytest import version_tuple
|
||||
from _pytest._code import ExceptionInfo
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Reproduces issue #3774"""
|
||||
|
||||
from unittest import mock
|
||||
|
||||
import pytest
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Skipping an entire subclass with unittest.skip() should *not* call setUp from a base class."""
|
||||
|
||||
import unittest
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Skipping an entire subclass with unittest.skip() should *not* call setUpClass from a base class."""
|
||||
|
||||
import unittest
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""setUpModule is always called, even if all tests in the module are skipped"""
|
||||
|
||||
import unittest
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Issue #7110"""
|
||||
|
||||
import asyncio
|
||||
from typing import List
|
||||
|
||||
|
|
|
@ -11,8 +11,8 @@ import pytest
|
|||
("a", 1),
|
||||
("1", 1),
|
||||
("א", 1),
|
||||
("\u200B", 0),
|
||||
("\u1ABE", 0),
|
||||
("\u200b", 0),
|
||||
("\u1abe", 0),
|
||||
("\u0591", 0),
|
||||
("🉐", 2),
|
||||
("$", 2), # noqa: RUF001
|
||||
|
|
|
@ -294,9 +294,9 @@ class TestReportSerialization:
|
|||
|
||||
reprec = pytester.inline_run()
|
||||
if report_class is TestReport:
|
||||
reports: Union[
|
||||
Sequence[TestReport], Sequence[CollectReport]
|
||||
] = reprec.getreports("pytest_runtest_logreport")
|
||||
reports: Union[Sequence[TestReport], Sequence[CollectReport]] = (
|
||||
reprec.getreports("pytest_runtest_logreport")
|
||||
)
|
||||
# we have 3 reports: setup/call/teardown
|
||||
assert len(reports) == 3
|
||||
# get the call report
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Test correct setup/teardowns at module, class, and instance level."""
|
||||
|
||||
from typing import List
|
||||
|
||||
from _pytest.pytester import Pytester
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# mypy: allow-untyped-defs
|
||||
"""Terminal reporting of the full testing process."""
|
||||
|
||||
from io import StringIO
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
This file is not executed, it is only checked by mypy to ensure that
|
||||
none of the code triggers any mypy errors.
|
||||
"""
|
||||
|
||||
import contextlib
|
||||
from typing import Optional
|
||||
|
||||
|
|
Loading…
Reference in New Issue