unmonkeypatch the 2to3 preprocessor so we don't disturb subsequent runs

patch from mcdonc
fixes #2421
This commit is contained in:
Philip Jenvey 2012-03-02 00:21:18 -08:00
parent 0987f89516
commit 4d43079e34
1 changed files with 21 additions and 7 deletions

View File

@ -31,12 +31,6 @@ if sys.version_info < (2, 4):
raise Exception("SQLAlchemy requires Python 2.4 or higher.")
elif sys.version_info >= (3, 0):
py3k = True
# monkeypatch our preprocessor
# onto the 2to3 tool.
from sa2to3 import refactor_string
from lib2to3.refactor import RefactoringTool
RefactoringTool.refactor_string = refactor_string
if has_setuptools:
extra.update(
use_2to3=True,
@ -153,8 +147,28 @@ def run_setup(with_cext):
**kwargs
)
def monkeypatch2to3():
from sa2to3 import refactor_string
from lib2to3.refactor import RefactoringTool
RefactoringTool.old_refactor_string = RefactoringTool.refactor_string
RefactoringTool.refactor_string = refactor_string
def unmonkeypatch2to3():
from lib2to3.refactor import RefactoringTool
if hasattr(RefactoringTool, 'old_refactor_string'):
RefactoringTool.refactor_string = RefactoringTool.old_refactor_string
if pypy or jython or py3k:
run_setup(False)
if py3k:
# monkeypatch our preprocessor onto the 2to3 tool.
monkeypatch2to3()
try:
run_setup(False)
finally:
if py3k:
# unmonkeypatch to not stomp other setup.py's that are compiled
# and exec'd and which also require 2to3 fixing
unmonkeypatch2to3()
status_msgs(
"WARNING: C extensions are not supported on " +
"this Python platform, speedups are not enabled.",