summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/importlib/_bootstrap_external.py3
-rw-r--r--Lib/test/test_except_star.py28
2 files changed, 30 insertions, 1 deletions
diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py
index 5ead6ca..095c127 100644
--- a/Lib/importlib/_bootstrap_external.py
+++ b/Lib/importlib/_bootstrap_external.py
@@ -375,6 +375,7 @@ _code_type = type(_write_atomic.__code__)
# Python 3.11a4 3467 (Change CALL_xxx opcodes)
# Python 3.11a4 3468 (Add SEND opcode)
# Python 3.11a4 3469 (bpo-45711: remove type, traceback from exc_info)
+# Python 3.11a4 3470 (bpo-46221: PREP_RERAISE_STAR no longer pushes lasti)
#
# MAGIC must change whenever the bytecode emitted by the compiler may no
@@ -384,7 +385,7 @@ _code_type = type(_write_atomic.__code__)
# Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array
# in PC/launcher.c must also be updated.
-MAGIC_NUMBER = (3469).to_bytes(2, 'little') + b'\r\n'
+MAGIC_NUMBER = (3470).to_bytes(2, 'little') + b'\r\n'
_RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c
_PYCACHE = '__pycache__'
diff --git a/Lib/test/test_except_star.py b/Lib/test/test_except_star.py
index b03de9c..490b159 100644
--- a/Lib/test/test_except_star.py
+++ b/Lib/test/test_except_star.py
@@ -952,6 +952,34 @@ class TestExceptStarExceptionGroupSubclass(ExceptStarTest):
self.assertEqual(teg.code, 42)
self.assertEqual(teg.exceptions[0].code, 101)
+ def test_falsy_exception_group_subclass(self):
+ class FalsyEG(ExceptionGroup):
+ def __bool__(self):
+ return False
+
+ def derive(self, excs):
+ return FalsyEG(self.message, excs)
+
+ try:
+ try:
+ raise FalsyEG("eg", [TypeError(1), ValueError(2)])
+ except *TypeError as e:
+ tes = e
+ raise
+ except *ValueError as e:
+ ves = e
+ pass
+ except Exception as e:
+ exc = e
+
+ for e in [tes, ves, exc]:
+ self.assertFalse(e)
+ self.assertIsInstance(e, FalsyEG)
+
+ self.assertExceptionIsLike(exc, FalsyEG("eg", [TypeError(1)]))
+ self.assertExceptionIsLike(tes, FalsyEG("eg", [TypeError(1)]))
+ self.assertExceptionIsLike(ves, FalsyEG("eg", [ValueError(2)]))
+
class TestExceptStarCleanup(ExceptStarTest):
def test_exc_info_restored(self):