From 4d43079e34a66c3718127266bc5eaa3041c69447 Mon Sep 17 00:00:00 2001 From: Philip Jenvey Date: Fri, 2 Mar 2012 00:21:18 -0800 Subject: [PATCH] unmonkeypatch the 2to3 preprocessor so we don't disturb subsequent runs patch from mcdonc fixes #2421 --- setup.py | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/setup.py b/setup.py index 94ab90278f..53e9b7cfc5 100644 --- a/setup.py +++ b/setup.py @@ -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.", -- 2.47.2