Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e736b5c

Browse files
committed
Address review
1 parent 1961cda commit e736b5c

File tree

1 file changed

+34
-64
lines changed

1 file changed

+34
-64
lines changed

Lib/test/test_inspect/test_inspect.py

Lines changed: 34 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1550,70 +1550,40 @@ def f(self):
15501550
self.assertIn(('f', b.f), inspect.getmembers(b))
15511551
self.assertIn(('f', b.f), inspect.getmembers(b, inspect.ismethod))
15521552

1553-
def test_getmembers_function(self):
1554-
def func(arg: int = 1, *, kw = 2) -> None:
1555-
"""Docstring."""
1556-
1557-
res = dict(inspect.getmembers(func))
1558-
expected = {k: getattr(func, k) for k in dir(func)}
1559-
self.assertEqual(res, expected)
1560-
1561-
def test_getmembers_function_predicate(self):
1562-
def func(*, a: int = 1): ...
1563-
1564-
res = dict(
1565-
inspect.getmembers(
1566-
func, lambda value: isinstance(value, dict),
1567-
),
1568-
)
1569-
expected = {
1570-
k: v
1571-
for k in dir(func)
1572-
if isinstance((v := getattr(func, k)), dict)
1573-
}
1574-
self.assertEqual(res, expected)
1575-
1576-
def test_getmembers_traceback(self):
1577-
try:
1578-
raise ValueError(3)
1579-
except ValueError as ex:
1580-
trace = ex.__traceback__
1581-
1582-
res = dict(inspect.getmembers(trace))
1583-
expected = {k: getattr(trace, k) for k in dir(trace)}
1584-
self.assertEqual(res, expected)
1585-
1586-
def test_getmembers_frame(self):
1587-
ns = {}
1588-
def func(a=1):
1589-
ns['fr'] = inspect.currentframe()
1590-
func()
1591-
1592-
res = dict(inspect.getmembers(ns['fr']))
1593-
expected = {k: getattr(ns['fr'], k) for k in dir(ns['fr'])}
1594-
self.assertEqual(res, expected)
1595-
1596-
def test_getmembers_code(self):
1597-
def func(): ...
1598-
1599-
res = dict(inspect.getmembers(func.__code__))
1600-
expected = {k: getattr(func.__code__, k) for k in dir(func.__code__)}
1601-
self.assertEqual(res, expected)
1602-
1603-
def test_getmembers_coroutine(self):
1604-
async def func(): ...
1605-
1606-
coro = func()
1607-
self.addCleanup(coro.close)
1608-
1609-
res = dict(inspect.getmembers(coro))
1610-
expected = {k: getattr(coro, k) for k in dir(coro)}
1611-
self.assertEqual(res, expected)
1612-
1613-
def test_getmembers_builtin(self):
1614-
res = dict(inspect.getmembers(list))
1615-
expected = {k: getattr(list, k) for k in dir(list)}
1616-
self.assertEqual(res, expected)
1553+
def test_getmembers_custom_dir(self):
1554+
class CorrectDir:
1555+
def __init__(self, attr):
1556+
self.attr = attr
1557+
def method(self):
1558+
return self.attr + 1
1559+
def __dir__(self):
1560+
return ['attr', 'method']
1561+
1562+
cd = CorrectDir(5)
1563+
self.assertEqual(inspect.getmembers(cd), [
1564+
('attr', 5),
1565+
('method', cd.method),
1566+
])
1567+
self.assertEqual(inspect.getmembers(cd, inspect.ismethod), [
1568+
('method', cd.method),
1569+
])
1570+
1571+
def test_getmembers_custom_broken_dir(self):
1572+
class BrokenDir:
1573+
existing = 1
1574+
def method(self):
1575+
return self.existing + 1
1576+
def __dir__(self):
1577+
return ['existing', 'missing', 'method']
1578+
1579+
bd = BrokenDir()
1580+
self.assertEqual(inspect.getmembers(bd), [
1581+
('existing', 1),
1582+
('method', bd.method),
1583+
])
1584+
self.assertEqual(inspect.getmembers(bd, inspect.ismethod), [
1585+
('method', bd.method),
1586+
])
16171587

16181588
def test_getmembers_VirtualAttribute(self):
16191589
class M(type):

0 commit comments

Comments
 (0)