Skip to content

Commit 3ed04f4

Browse files
committed
types(pytest) fix pytest 8.4.0 compatibility for RaisesContext -> RaisesExc migration
- Use try-except pattern to handle import differences between pytest versions - Import RaisesExc from _pytest.raises for pytest >= 8.4.0 - Fall back to RaisesContext from _pytest.python_api for older versions - Update type annotations to use the unified RaisesExc type alias See also: pytest-dev/pytest@134b759#diff-3d5406fcc489bcffb79345e3300878ab72075c82b898169e08fa590526518d7b.diff
1 parent 09ef6a0 commit 3ed04f4

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

tests/legacy_api/test_version.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,18 @@
1414
import sys
1515
from collections.abc import Callable
1616

17-
from _pytest.python_api import RaisesContext
18-
1917
if sys.version_info >= (3, 10):
2018
from typing import TypeAlias
2119
else:
2220
from typing_extensions import TypeAlias
2321

22+
try:
23+
from _pytest.raises import RaisesExc
24+
except ImportError:
25+
from _pytest.python_api import RaisesContext # type: ignore[attr-defined]
26+
27+
RaisesExc: TypeAlias = RaisesContext[Exception] # type: ignore[no-redef]
28+
2429
VersionCompareOp: TypeAlias = Callable[
2530
[t.Any, t.Any],
2631
bool,
@@ -75,10 +80,10 @@ def test_version_compare(
7580
raises: type[Exception] | bool,
7681
) -> None:
7782
"""Assert version comparisons."""
78-
raises_ctx: RaisesContext[Exception] = (
83+
raises_ctx: RaisesExc = (
7984
pytest.raises(t.cast("type[Exception]", raises))
8085
if raises
81-
else t.cast("RaisesContext[Exception]", does_not_raise())
86+
else t.cast("RaisesExc", does_not_raise())
8287
)
8388
with raises_ctx:
8489
assert op(LooseVersion(a), LooseVersion(b))

tests/test_version.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,18 @@
1414
import sys
1515
from collections.abc import Callable
1616

17-
from _pytest.python_api import RaisesContext
18-
1917
if sys.version_info >= (3, 10):
2018
from typing import TypeAlias
2119
else:
2220
from typing_extensions import TypeAlias
2321

22+
try:
23+
from _pytest.raises import RaisesExc
24+
except ImportError:
25+
from _pytest.python_api import RaisesContext # type: ignore[attr-defined]
26+
27+
RaisesExc: TypeAlias = RaisesContext[Exception] # type: ignore[no-redef]
28+
2429
VersionCompareOp: TypeAlias = Callable[
2530
[t.Any, t.Any],
2631
bool,
@@ -146,10 +151,10 @@ def test_version_compare(
146151
raises: type[Exception] | bool,
147152
) -> None:
148153
"""Assert version comparisons."""
149-
raises_ctx: RaisesContext[Exception] = (
154+
raises_ctx: RaisesExc = (
150155
pytest.raises(t.cast("type[Exception]", raises))
151156
if raises
152-
else t.cast("RaisesContext[Exception]", does_not_raise())
157+
else t.cast("RaisesExc", does_not_raise())
153158
)
154159
with raises_ctx:
155160
assert op(LooseVersion(a), LooseVersion(b))

0 commit comments

Comments
 (0)