File tree Expand file tree Collapse file tree 2 files changed +11
-1
lines changed
Misc/NEWS.d/next/Documentation Expand file tree Collapse file tree 2 files changed +11
-1
lines changed Original file line number Diff line number Diff line change @@ -300,7 +300,7 @@ and classes for traversing abstract syntax trees:
300
300
class RewriteName(NodeTransformer):
301
301
302
302
def visit_Name(self, node):
303
- return copy_location( Subscript(
303
+ return Subscript(
304
304
value=Name(id='data', ctx=Load()),
305
305
slice=Index(value=Constant(value=node.id)),
306
306
ctx=node.ctx
@@ -314,6 +314,14 @@ and classes for traversing abstract syntax trees:
314
314
statement nodes), the visitor may also return a list of nodes rather than
315
315
just a single node.
316
316
317
+ If :class: `NodeTransformer ` introduces new nodes (that weren't part of
318
+ original tree) without giving them location information (such as
319
+ :attr: `lineno `), :func: `fix_missing_locations ` should be called with
320
+ the new sub-tree to recalculate the location information::
321
+
322
+ tree = ast.parse('foo', mode='eval')
323
+ new_tree = fix_missing_locations(RewriteName().visit(tree))
324
+
317
325
Usually you use the transformer like this::
318
326
319
327
node = YourTransformer().visit(node)
Original file line number Diff line number Diff line change
1
+ In the :mod: `ast ` module documentation, fix a misleading ``NodeTransformer `` example and add
2
+ advice on when to use the ``fix_missing_locations `` function.
You can’t perform that action at this time.
0 commit comments