@@ -1549,6 +1549,16 @@ async def in_task_group(task_status: TaskStatus[None]) -> None:
1549
1549
assert not tg .cancel_scope .cancel_called
1550
1550
1551
1551
1552
+ if sys .version_info <= (3 , 11 ):
1553
+
1554
+ def no_other_refs () -> list [object ]:
1555
+ return [sys ._getframe (1 )]
1556
+ else :
1557
+
1558
+ def no_other_refs () -> list [object ]:
1559
+ return []
1560
+
1561
+
1552
1562
async def test_exception_refcycles_direct () -> None :
1553
1563
"""Test that TaskGroup doesn't keep a reference to the raised ExceptionGroup"""
1554
1564
tg = create_task_group ()
@@ -1564,7 +1574,7 @@ class _Done(Exception):
1564
1574
exc = e
1565
1575
1566
1576
assert exc is not None
1567
- assert gc .get_referrers (exc ) == []
1577
+ assert gc .get_referrers (exc ) == no_other_refs ()
1568
1578
1569
1579
1570
1580
async def test_exception_refcycles_errors () -> None :
@@ -1582,7 +1592,7 @@ class _Done(Exception):
1582
1592
exc = excs .exceptions [0 ]
1583
1593
1584
1594
assert isinstance (exc , _Done )
1585
- assert gc .get_referrers (exc ) == []
1595
+ assert gc .get_referrers (exc ) == no_other_refs ()
1586
1596
1587
1597
1588
1598
async def test_exception_refcycles_parent_task () -> None :
@@ -1604,7 +1614,7 @@ async def coro_fn() -> None:
1604
1614
exc = excs .exceptions [0 ].exceptions [0 ]
1605
1615
1606
1616
assert isinstance (exc , _Done )
1607
- assert gc .get_referrers (exc ) == []
1617
+ assert gc .get_referrers (exc ) == no_other_refs ()
1608
1618
1609
1619
1610
1620
async def test_exception_refcycles_propagate_cancellation_error () -> None :
@@ -1622,7 +1632,7 @@ async def test_exception_refcycles_propagate_cancellation_error() -> None:
1622
1632
raise
1623
1633
1624
1634
assert isinstance (exc , get_cancelled_exc_class ())
1625
- assert gc .get_referrers (exc ) == []
1635
+ assert gc .get_referrers (exc ) == no_other_refs ()
1626
1636
1627
1637
1628
1638
async def test_exception_refcycles_base_error () -> None :
@@ -1641,7 +1651,7 @@ class MyKeyboardInterrupt(KeyboardInterrupt):
1641
1651
exc = excs .exceptions [0 ]
1642
1652
1643
1653
assert isinstance (exc , MyKeyboardInterrupt )
1644
- assert gc .get_referrers (exc ) == []
1654
+ assert gc .get_referrers (exc ) == no_other_refs ()
1645
1655
1646
1656
1647
1657
class TestTaskStatusTyping :
0 commit comments