mirror of https://github.com/python/cpython
bpo-38870: Remove dependency on contextlib to avoid performance regression on import (GH-17376)
https://bugs.python.org/issue38870 Automerge-Triggered-By: @pablogsal
This commit is contained in:
parent
e11f25dbd8
commit
ded8888fbc
20
Lib/ast.py
20
Lib/ast.py
|
@ -26,7 +26,6 @@
|
|||
"""
|
||||
import sys
|
||||
from _ast import *
|
||||
from contextlib import contextmanager
|
||||
|
||||
|
||||
def parse(source, filename='<unknown>', mode='exec', *,
|
||||
|
@ -597,15 +596,22 @@ class _Unparser(NodeVisitor):
|
|||
self._buffer.clear()
|
||||
return value
|
||||
|
||||
@contextmanager
|
||||
def block(self):
|
||||
class _Block:
|
||||
"""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
|
||||
self._indent -= 1
|
||||
def __init__(self, unparser):
|
||||
self.unparser = unparser
|
||||
|
||||
def __enter__(self):
|
||||
self.unparser.write(":")
|
||||
self.unparser._indent += 1
|
||||
|
||||
def __exit__(self, exc_type, exc_value, traceback):
|
||||
self.unparser._indent -= 1
|
||||
|
||||
def block(self):
|
||||
return self._Block(self)
|
||||
|
||||
def traverse(self, node):
|
||||
if isinstance(node, list):
|
||||
|
|
Loading…
Reference in New Issue