Skip to content
This repository was archived by the owner on Nov 2, 2022. It is now read-only.

Commit d680bfd

Browse files
authored
Merge pull request #12 from WindSoilder/exceptiongroup_init
Use *args to fit exception convention.
2 parents fc07356 + 2ecc8f0 commit d680bfd

File tree

2 files changed

+56
-1
lines changed

2 files changed

+56
-1
lines changed

exceptiongroup/__init__.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class ExceptionGroup(BaseException):
2626
"""
2727

2828
def __init__(self, message, exceptions, sources):
29-
super().__init__(message)
29+
super().__init__(message, exceptions, sources)
3030
self.exceptions = list(exceptions)
3131
for exc in self.exceptions:
3232
if not isinstance(exc, BaseException):
@@ -52,6 +52,12 @@ def __copy__(self):
5252
new_group.__cause__ = self.__cause__
5353
return new_group
5454

55+
def __str__(self):
56+
return ", ".join(repr(exc) for exc in self.exceptions)
57+
58+
def __repr__(self):
59+
return "<ExceptionGroup: {}>".format(self)
60+
5561

5662
from . import _monkeypatch
5763
from ._tools import split, catch
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import pytest
2+
3+
from exceptiongroup import ExceptionGroup
4+
5+
6+
def test_exception_group_init():
7+
memberA = ValueError("A")
8+
memberB = RuntimeError("B")
9+
group = ExceptionGroup(
10+
"many error.", [memberA, memberB], [str(memberA), str(memberB)]
11+
)
12+
assert group.exceptions == [memberA, memberB]
13+
assert group.message == "many error."
14+
assert group.sources == [str(memberA), str(memberB)]
15+
assert group.args == (
16+
"many error.",
17+
[memberA, memberB],
18+
[str(memberA), str(memberB)],
19+
)
20+
21+
22+
def test_exception_group_when_members_are_not_exceptions():
23+
with pytest.raises(TypeError):
24+
ExceptionGroup(
25+
"error",
26+
[RuntimeError("RuntimeError"), "error2"],
27+
["RuntimeError", "error2"],
28+
)
29+
30+
31+
def test_exception_group_init_when_exceptions_messages_not_equal():
32+
with pytest.raises(ValueError):
33+
ExceptionGroup(
34+
"many error.", [ValueError("A"), RuntimeError("B")], ["A"]
35+
)
36+
37+
38+
def test_exception_group_str():
39+
memberA = ValueError("memberA")
40+
memberB = ValueError("memberB")
41+
group = ExceptionGroup(
42+
"many error.", [memberA, memberB], [str(memberA), str(memberB)]
43+
)
44+
assert "memberA" in str(group)
45+
assert "memberB" in str(group)
46+
47+
assert "ExceptionGroup: " in repr(group)
48+
assert "memberA" in repr(group)
49+
assert "memberB" in repr(group)

0 commit comments

Comments
 (0)