Skip to content

Commit 1359246

Browse files
committed
put _nest_function, _nest_class inside pyclbr again, for tests
1 parent bf12f16 commit 1359246

4 files changed

Lines changed: 36 additions & 43 deletions

File tree

Doc/library/pyclbr.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ statements. They have the following attributes:
9494
.. versionadded:: 3.7
9595

9696

97-
.. attribute:: Function.parent
97+
.. attribute:: Function.is_async
9898

9999
``True`` for functions that are defined with the ``async`` prefix, ``False`` otherwise.
100100

Lib/idlelib/idle_test/test_browser.py

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -60,28 +60,16 @@ def test_close(self):
6060

6161
# Nested tree same as in test_pyclbr.py except for supers on C0. C1.
6262
mb = pyclbr
63-
def _nest_function(ob, func_name, lineno):
64-
newfunc = mb.Function(ob.module, func_name, ob.file, lineno, ob)
65-
ob._addchild(func_name, newfunc)
66-
if isinstance(ob, mb.Class):
67-
ob._addmethod(func_name, lineno)
68-
return newfunc
69-
70-
def _nest_class(ob, class_name, lineno, super=None):
71-
newclass = mb.Class(ob.module, class_name, super, ob.file, lineno, ob)
72-
ob._addchild(class_name, newclass)
73-
return newclass
74-
7563
module, fname = 'test', 'test.py'
7664
C0 = mb.Class(module, 'C0', ['base'], fname, 1)
77-
F1 = _nest_function(C0, 'F1', 3)
78-
C1 = _nest_class(C0, 'C1', 6, [''])
79-
C2 = _nest_class(C1, 'C2', 7)
80-
F3 = _nest_function(C2, 'F3', 9)
65+
F1 = mb._nest_function(C0, 'F1', 3)
66+
C1 = mb._nest_class(C0, 'C1', 6, [''])
67+
C2 = mb._nest_class(C1, 'C2', 7)
68+
F3 = mb._nest_function(C2, 'F3', 9)
8169
f0 = mb.Function(module, 'f0', fname, 11)
82-
f1 = _nest_function(f0, 'f1', 12)
83-
f2 = _nest_function(f1, 'f2', 13)
84-
c1 = _nest_class(f0, 'c1', 15)
70+
f1 = mb._nest_function(f0, 'f1', 12)
71+
f2 = mb._nest_function(f1, 'f2', 13)
72+
c1 = mb._nest_class(f0, 'c1', 15)
8573
mock_pyclbr_tree = {'C0': C0, 'f0': f0}
8674

8775
# Adjust C0.name, C1.name so tests do not depend on order.

Lib/pyclbr.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,22 @@ def __init__(self, module, name, super_, file, lineno, parent=None):
8484
def _addmethod(self, name, lineno):
8585
self.methods[name] = lineno
8686

87+
# This 2 functions are used in these tests
88+
# Lib/test/test_pyclbr, Lib/idlelib/idle_test/test_browser.py
89+
def _nest_function(ob, func_name, lineno, is_async=False):
90+
"Return a Function after nesting within ob."
91+
newfunc = Function(ob.module, func_name, ob.file, lineno, ob, is_async)
92+
ob._addchild(func_name, newfunc)
93+
if isinstance(ob, Class):
94+
ob._addmethod(func_name, lineno)
95+
return newfunc
96+
97+
def _nest_class(ob, class_name, lineno, super=None):
98+
"Return a Class after nesting within ob."
99+
newclass = Class(ob.module, class_name, super, ob.file, lineno, ob)
100+
ob._addchild(class_name, newclass)
101+
return newclass
102+
87103
def readmodule(module, path=None):
88104
"""Return Class objects for the top-level classes in module.
89105
@@ -169,7 +185,7 @@ def _readmodule(module, path, inpackage=None):
169185
return _create_tree(fullmodule, path, fname, source, tree, inpackage)
170186

171187

172-
class _ClassBrowser(ast.NodeVisitor):
188+
class _ModuleBrowser(ast.NodeVisitor):
173189
def __init__(self, module, path, file, tree, inpackage):
174190
self.path = path
175191
self.tree = tree
@@ -281,9 +297,9 @@ def visit_ImportFrom(self, node):
281297

282298

283299
def _create_tree(fullmodule, path, fname, source, tree, inpackage):
284-
cbrowser = _ClassBrowser(fullmodule, path, fname, tree, inpackage)
285-
cbrowser.visit(ast.parse(source))
286-
return cbrowser.tree
300+
mbrowser = _ModuleBrowser(fullmodule, path, fname, tree, inpackage)
301+
mbrowser.visit(ast.parse(source))
302+
return mbrowser.tree
287303

288304

289305
def _main():

Lib/test/test_pyclbr.py

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -175,27 +175,16 @@ def F3(): return 1+1
175175
""")
176176
actual = mb._create_tree(m, p, f, source, t, i)
177177

178-
def _nest_function(ob, func_name, lineno):
179-
newfunc = mb.Function(ob.module, func_name, ob.file, lineno, ob)
180-
ob._addchild(func_name, newfunc)
181-
if isinstance(ob, mb.Class):
182-
ob._addmethod(func_name, lineno)
183-
return newfunc
184-
185-
def _nest_class(ob, class_name, lineno, super=None):
186-
newclass = mb.Class(ob.module, class_name, super, ob.file, lineno, ob)
187-
ob._addchild(class_name, newclass)
188-
return newclass
189-
178+
# Create descriptors, linked together, and expected dict.
190179
f0 = mb.Function(m, 'f0', f, 1)
191-
f1 = _nest_function(f0, 'f1', 2)
192-
f2 = _nest_function(f1, 'f2', 3)
193-
c1 = _nest_class(f0, 'c1', 5)
180+
f1 = mb._nest_function(f0, 'f1', 2)
181+
f2 = mb._nest_function(f1, 'f2', 3)
182+
c1 = mb._nest_class(f0, 'c1', 5)
194183
C0 = mb.Class(m, 'C0', None, f, 6)
195-
F1 = _nest_function(C0, 'F1', 8)
196-
C1 = _nest_class(C0, 'C1', 11)
197-
C2 = _nest_class(C1, 'C2', 12)
198-
F3 = _nest_function(C2, 'F3', 14)
184+
F1 = mb._nest_function(C0, 'F1', 8)
185+
C1 = mb._nest_class(C0, 'C1', 11)
186+
C2 = mb._nest_class(C1, 'C2', 12)
187+
F3 = mb._nest_function(C2, 'F3', 14)
199188
expected = {'f0':f0, 'C0':C0}
200189

201190
def compare(parent1, children1, parent2, children2):

0 commit comments

Comments
 (0)