Skip to content

Commit bb43ee0

Browse files
committed
Fixed formatting tests failing on Python 3.13
Fixes #122.
1 parent eb8fbbc commit bb43ee0

File tree

3 files changed

+31
-11
lines changed

3 files changed

+31
-11
lines changed

.github/workflows/test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
strategy:
3636
fail-fast: false
3737
matrix:
38-
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", pypy-3.10]
38+
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", pypy-3.10]
3939
runs-on: ubuntu-latest
4040
steps:
4141
- uses: actions/checkout@v4

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ warn_unused_ignores = true
8787
[tool.tox]
8888
legacy_tox_ini = """
8989
[tox]
90-
envlist = py37, py38, py39, py310, py311, py312, pypy3
90+
envlist = py37, py38, py39, py310, py311, py312, py313, pypy3
9191
labels =
9292
typing = py{310,311,312}-typing
9393
skip_missing_interpreters = true

tests/test_formatting.py

+29-9
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,15 @@ def test_exceptionhook(capsys: CaptureFixture) -> None:
6464
local_lineno = test_exceptionhook.__code__.co_firstlineno
6565
lineno = raise_excgroup.__code__.co_firstlineno
6666
module_prefix = "" if sys.version_info >= (3, 11) else "exceptiongroup."
67+
underline_suffix = (
68+
"" if sys.version_info < (3, 13) else "\n | ~~~~~~~~~~~~~~^^"
69+
)
6770
output = capsys.readouterr().err
6871
assert output == (
6972
f"""\
7073
+ Exception Group Traceback (most recent call last):
7174
| File "{__file__}", line {local_lineno + 2}, in test_exceptionhook
72-
| raise_excgroup()
75+
| raise_excgroup(){underline_suffix}
7376
| File "{__file__}", line {lineno + 15}, in raise_excgroup
7477
| raise exc
7578
| {module_prefix}ExceptionGroup: test message (2 sub-exceptions)
@@ -163,13 +166,16 @@ def test_exceptionhook_format_exception_only(capsys: CaptureFixture) -> None:
163166
local_lineno = test_exceptionhook_format_exception_only.__code__.co_firstlineno
164167
lineno = raise_excgroup.__code__.co_firstlineno
165168
module_prefix = "" if sys.version_info >= (3, 11) else "exceptiongroup."
169+
underline_suffix = (
170+
"" if sys.version_info < (3, 13) else "\n | ~~~~~~~~~~~~~~^^"
171+
)
166172
output = capsys.readouterr().err
167173
assert output == (
168174
f"""\
169175
+ Exception Group Traceback (most recent call last):
170176
| File "{__file__}", line {local_lineno + 2}, in \
171177
test_exceptionhook_format_exception_only
172-
| raise_excgroup()
178+
| raise_excgroup(){underline_suffix}
173179
| File "{__file__}", line {lineno + 15}, in raise_excgroup
174180
| raise exc
175181
| {module_prefix}ExceptionGroup: test message (2 sub-exceptions)
@@ -204,13 +210,14 @@ def test_formatting_syntax_error(capsys: CaptureFixture) -> None:
204210
underline = "\n ^"
205211

206212
lineno = test_formatting_syntax_error.__code__.co_firstlineno
213+
underline_suffix = "" if sys.version_info < (3, 13) else "\n ~~~~^^^^^^^^^^^^"
207214
output = capsys.readouterr().err
208215
assert output == (
209216
f"""\
210217
Traceback (most recent call last):
211218
File "{__file__}", line {lineno + 2}, \
212219
in test_formatting_syntax_error
213-
exec("//serser")
220+
exec("//serser"){underline_suffix}
214221
File "<string>", line 1
215222
//serser{underline}
216223
SyntaxError: invalid syntax
@@ -254,11 +261,14 @@ def test_format_exception(
254261
lineno = raise_excgroup.__code__.co_firstlineno
255262
assert isinstance(lines, list)
256263
module_prefix = "" if sys.version_info >= (3, 11) else "exceptiongroup."
264+
underline_suffix = (
265+
"" if sys.version_info < (3, 13) else "\n | ~~~~~~~~~~~~~~^^"
266+
)
257267
assert "".join(lines) == (
258268
f"""\
259269
+ Exception Group Traceback (most recent call last):
260270
| File "{__file__}", line {local_lineno + 25}, in test_format_exception
261-
| raise_excgroup()
271+
| raise_excgroup(){underline_suffix}
262272
| File "{__file__}", line {lineno + 15}, in raise_excgroup
263273
| raise exc
264274
| {module_prefix}ExceptionGroup: test message (2 sub-exceptions)
@@ -303,6 +313,10 @@ def raise_exc(max_level: int, level: int = 1) -> NoReturn:
303313
except Exception as exc:
304314
lines = format_exception(type(exc), exc, exc.__traceback__)
305315

316+
underline_suffix1 = (
317+
"" if sys.version_info < (3, 13) else "\n ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^"
318+
)
319+
underline_suffix2 = "" if sys.version_info < (3, 13) else "\n ~~~~~~~~~^^^"
306320
local_lineno = test_format_nested.__code__.co_firstlineno + 20
307321
raise_exc_lineno1 = raise_exc.__code__.co_firstlineno + 2
308322
raise_exc_lineno2 = raise_exc.__code__.co_firstlineno + 5
@@ -312,7 +326,7 @@ def raise_exc(max_level: int, level: int = 1) -> NoReturn:
312326
f"""\
313327
Traceback (most recent call last):
314328
File "{__file__}", line {raise_exc_lineno2}, in raise_exc
315-
raise_exc(max_level, level + 1)
329+
raise_exc(max_level, level + 1){underline_suffix1}
316330
File "{__file__}", line {raise_exc_lineno1}, in raise_exc
317331
raise Exception(f"LEVEL_{{level}}")
318332
Exception: LEVEL_3
@@ -321,7 +335,7 @@ def raise_exc(max_level: int, level: int = 1) -> NoReturn:
321335
322336
Traceback (most recent call last):
323337
File "{__file__}", line {raise_exc_lineno2}, in raise_exc
324-
raise_exc(max_level, level + 1)
338+
raise_exc(max_level, level + 1){underline_suffix1}
325339
File "{__file__}", line {raise_exc_lineno3}, in raise_exc
326340
raise Exception(f"LEVEL_{{level}}")
327341
Exception: LEVEL_2
@@ -330,7 +344,7 @@ def raise_exc(max_level: int, level: int = 1) -> NoReturn:
330344
331345
Traceback (most recent call last):
332346
File "{__file__}", line {local_lineno}, in test_format_nested
333-
raise_exc(3)
347+
raise_exc(3){underline_suffix2}
334348
File "{__file__}", line {raise_exc_lineno3}, in raise_exc
335349
raise Exception(f"LEVEL_{{level}}")
336350
Exception: LEVEL_1
@@ -388,12 +402,15 @@ def test_print_exception(
388402
local_lineno = test_print_exception.__code__.co_firstlineno
389403
lineno = raise_excgroup.__code__.co_firstlineno
390404
module_prefix = "" if sys.version_info >= (3, 11) else "exceptiongroup."
405+
underline_suffix = (
406+
"" if sys.version_info < (3, 13) else "\n | ~~~~~~~~~~~~~~^^"
407+
)
391408
output = capsys.readouterr().err
392409
assert output == (
393410
f"""\
394411
+ Exception Group Traceback (most recent call last):
395412
| File "{__file__}", line {local_lineno + 13}, in test_print_exception
396-
| raise_excgroup()
413+
| raise_excgroup(){underline_suffix}
397414
| File "{__file__}", line {lineno + 15}, in raise_excgroup
398415
| raise exc
399416
| {module_prefix}ExceptionGroup: test message (2 sub-exceptions)
@@ -433,12 +450,15 @@ def test_print_exc(
433450
local_lineno = test_print_exc.__code__.co_firstlineno
434451
lineno = raise_excgroup.__code__.co_firstlineno
435452
module_prefix = "" if sys.version_info >= (3, 11) else "exceptiongroup."
453+
underline_suffix = (
454+
"" if sys.version_info < (3, 13) else "\n | ~~~~~~~~~~~~~~^^"
455+
)
436456
output = capsys.readouterr().err
437457
assert output == (
438458
f"""\
439459
+ Exception Group Traceback (most recent call last):
440460
| File "{__file__}", line {local_lineno + 13}, in test_print_exc
441-
| raise_excgroup()
461+
| raise_excgroup(){underline_suffix}
442462
| File "{__file__}", line {lineno + 15}, in raise_excgroup
443463
| raise exc
444464
| {module_prefix}ExceptionGroup: test message (2 sub-exceptions)

0 commit comments

Comments
 (0)