Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Rewrite some docstrings
  • Loading branch information
pablogsal committed Nov 24, 2019
commit 96c9aade03c5f7bb9bfe02a277c603f2a2f73be8
39 changes: 20 additions & 19 deletions Lib/ast.py
Original file line number Diff line number Diff line change
Expand Up @@ -598,9 +598,10 @@ def buffer(self):
return value

@contextmanager
def enter(self):
"""A context manager for printing ':' and increasing the indentation,
after exiting from context it will decrease the indentation."""
def block(self):
"""A context manager for preparing the source for blocks. It adds
the character':', increases the indentation on enter and decreases
the indentation on exit."""
self.write(":")
self._indent += 1
yield
Expand All @@ -614,7 +615,7 @@ def traverse(self, node):
super().visit(node)

def visit(self, node):
"""Outputs a source code string that if converted back to an ast
"""Outputs a source code string that, if converted back to an ast
(using ast.parse) will generate an AST equivalent to *node*"""
self._source = []
self.traverse(node)
Expand Down Expand Up @@ -745,17 +746,17 @@ def visit_Raise(self, node):

def visit_Try(self, node):
self.fill("try")
with self.enter():
with self.block():
self.traverse(node.body)
for ex in node.handlers:
self.traverse(ex)
if node.orelse:
self.fill("else")
with self.enter():
with self.block():
self.traverse(node.orelse)
if node.finalbody:
self.fill("finally")
with self.enter():
with self.block():
self.traverse(node.finalbody)

def visit_ExceptHandler(self, node):
Expand All @@ -766,7 +767,7 @@ def visit_ExceptHandler(self, node):
if node.name:
self.write(" as ")
self.write(node.name)
with self.enter():
with self.block():
self.traverse(node.body)

def visit_ClassDef(self, node):
Expand All @@ -791,7 +792,7 @@ def visit_ClassDef(self, node):
self.traverse(e)
self.write(")")

with self.enter():
with self.block():
self.traverse(node.body)

def visit_FunctionDef(self, node):
Expand All @@ -812,7 +813,7 @@ def __FunctionDef_helper(self, node, fill_suffix):
if node.returns:
self.write(" -> ")
self.traverse(node.returns)
with self.enter():
with self.block():
self.traverse(node.body)

def visit_For(self, node):
Expand All @@ -826,51 +827,51 @@ def __For_helper(self, fill, node):
self.traverse(node.target)
self.write(" in ")
self.traverse(node.iter)
with self.enter():
with self.block():
self.traverse(node.body)
if node.orelse:
self.fill("else")
with self.enter():
with self.block():
self.traverse(node.orelse)

def visit_If(self, node):
self.fill("if ")
self.traverse(node.test)
with self.enter():
with self.block():
self.traverse(node.body)
# collapse nested ifs into equivalent elifs.
while node.orelse and len(node.orelse) == 1 and isinstance(node.orelse[0], If):
node = node.orelse[0]
self.fill("elif ")
self.traverse(node.test)
with self.enter():
with self.block():
self.traverse(node.body)
# final else
if node.orelse:
self.fill("else")
with self.enter():
with self.block():
self.traverse(node.orelse)

def visit_While(self, node):
self.fill("while ")
self.traverse(node.test)
with self.enter():
with self.block():
self.traverse(node.body)
if node.orelse:
self.fill("else")
with self.enter():
with self.block():
self.traverse(node.orelse)

def visit_With(self, node):
self.fill("with ")
self.interleave(lambda: self.write(", "), self.traverse, node.items)
with self.enter():
with self.block():
self.traverse(node.body)

def visit_AsyncWith(self, node):
self.fill("async with ")
self.interleave(lambda: self.write(", "), self.traverse, node.items)
with self.enter():
with self.block():
self.traverse(node.body)

def visit_JoinedStr(self, node):
Expand Down