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 @@ -240,7 +240,7 @@ and classes for traversing abstract syntax trees:
240
240
class RewriteName(NodeTransformer):
241
241
242
242
def visit_Name(self, node):
243
- return copy_location( Subscript(
243
+ return Subscript(
244
244
value=Name(id='data', ctx=Load()),
245
245
slice=Index(value=Str(s=node.id)),
246
246
ctx=node.ctx
@@ -254,6 +254,14 @@ and classes for traversing abstract syntax trees:
254
254
statement nodes), the visitor may also return a list of nodes rather than
255
255
just a single node.
256
256
257
+ If :class: `NodeTransformer ` introduces new nodes (that weren't part of
258
+ original tree) without giving them location information (such as
259
+ :attr: `lineno `), :func: `fix_missing_locations ` should be called with
260
+ the new sub-tree to recalculate the location information::
261
+
262
+ tree = ast.parse('foo', mode='eval')
263
+ new_tree = fix_missing_locations(RewriteName().visit(tree))
264
+
257
265
Usually you use the transformer like this::
258
266
259
267
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