bpo-3530: Add advice on when to correctly use fix_missing_locations in the AST docs (GH-17172)

Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
(cherry picked from commit 6680f4a9f5)

Co-authored-by: Batuhan Taşkaya <47358913+isidentical@users.noreply.github.com>
This commit is contained in:
Miss Islington (bot) 2020-01-12 12:44:33 -08:00 committed by GitHub
parent 3043ec7d6a
commit ef0af30e50
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 1 deletions

View File

@ -300,7 +300,7 @@ and classes for traversing abstract syntax trees:
class RewriteName(NodeTransformer):
def visit_Name(self, node):
return copy_location(Subscript(
return Subscript(
value=Name(id='data', ctx=Load()),
slice=Index(value=Constant(value=node.id)),
ctx=node.ctx
@ -314,6 +314,14 @@ and classes for traversing abstract syntax trees:
statement nodes), the visitor may also return a list of nodes rather than
just a single node.
If :class:`NodeTransformer` introduces new nodes (that weren't part of
original tree) without giving them location information (such as
:attr:`lineno`), :func:`fix_missing_locations` should be called with
the new sub-tree to recalculate the location information::
tree = ast.parse('foo', mode='eval')
new_tree = fix_missing_locations(RewriteName().visit(tree))
Usually you use the transformer like this::
node = YourTransformer().visit(node)

View File

@ -0,0 +1,2 @@
In the :mod:`ast` module documentation, fix a misleading ``NodeTransformer`` example and add
advice on when to use the ``fix_missing_locations`` function.