Skip to content

Commit ded8888

Browse files
pablogsalmiss-islington
authored andcommitted
bpo-38870: Remove dependency on contextlib to avoid performance regression on import (GH-17376)
https://bugs.python.org/issue38870 Automerge-Triggered-By: @pablogsal
1 parent e11f25d commit ded8888

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

Lib/ast.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
"""
2727
import sys
2828
from _ast import *
29-
from contextlib import contextmanager
3029

3130

3231
def parse(source, filename='<unknown>', mode='exec', *,
@@ -597,15 +596,22 @@ def buffer(self):
597596
self._buffer.clear()
598597
return value
599598

600-
@contextmanager
601-
def block(self):
599+
class _Block:
602600
"""A context manager for preparing the source for blocks. It adds
603601
the character':', increases the indentation on enter and decreases
604602
the indentation on exit."""
605-
self.write(":")
606-
self._indent += 1
607-
yield
608-
self._indent -= 1
603+
def __init__(self, unparser):
604+
self.unparser = unparser
605+
606+
def __enter__(self):
607+
self.unparser.write(":")
608+
self.unparser._indent += 1
609+
610+
def __exit__(self, exc_type, exc_value, traceback):
611+
self.unparser._indent -= 1
612+
613+
def block(self):
614+
return self._Block(self)
609615

610616
def traverse(self, node):
611617
if isinstance(node, list):

0 commit comments

Comments
 (0)