]> granicus.if.org Git - python/commitdiff
Issue #4072: Restore build_py_2to3. Add a distutils demo for
authorMartin v. Löwis <martin@v.loewis.de>
Wed, 15 Oct 2008 05:58:17 +0000 (05:58 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Wed, 15 Oct 2008 05:58:17 +0000 (05:58 +0000)
build_py_2to3.

Demo/distutils/test2to3/README [new file with mode: 0644]
Demo/distutils/test2to3/setup.py [new file with mode: 0644]
Demo/distutils/test2to3/test2to3/__init__.py [new file with mode: 0644]
Demo/distutils/test2to3/test2to3/hello.py [new file with mode: 0644]
Lib/distutils/command/build_py.py
Misc/NEWS

diff --git a/Demo/distutils/test2to3/README b/Demo/distutils/test2to3/README
new file mode 100644 (file)
index 0000000..9365593
--- /dev/null
@@ -0,0 +1,3 @@
+This project demonstrates how a distutils package
+can support Python 2.x and Python 3.x from a single
+source, using lib2to3.
\ No newline at end of file
diff --git a/Demo/distutils/test2to3/setup.py b/Demo/distutils/test2to3/setup.py
new file mode 100644 (file)
index 0000000..3abb5ff
--- /dev/null
@@ -0,0 +1,18 @@
+# -*- coding: iso-8859-1 -*-
+from distutils.core import setup
+
+try:
+    from distutils.command.build_py import build_py_2to3 as build_py
+except ImportError:
+    from distutils.command.build_py import build_py
+
+setup(
+    name = "test2to3",
+    version = "1.0",
+    description = "2to3 distutils test package",
+    author = "Martin v. Löwis",
+    author_email = "python-dev@python.org",
+    license = "PSF license",
+    packages = ["test2to3"],
+    cmdclass = {'build_py':build_py}
+)
diff --git a/Demo/distutils/test2to3/test2to3/__init__.py b/Demo/distutils/test2to3/test2to3/__init__.py
new file mode 100644 (file)
index 0000000..1bb8bf6
--- /dev/null
@@ -0,0 +1 @@
+# empty
diff --git a/Demo/distutils/test2to3/test2to3/hello.py b/Demo/distutils/test2to3/test2to3/hello.py
new file mode 100644 (file)
index 0000000..f52926b
--- /dev/null
@@ -0,0 +1,5 @@
+def hello():
+    try:
+        print "Hello, world"
+    except IOError, e:
+        print e.errno
index 09f6d2331e7018b2d8016fc2b28ec232063902ca..77284894ec38d79bb8f115c54e3fc0ac5155a647 100644 (file)
@@ -384,6 +384,18 @@ class build_py (Command):
             byte_compile(files, optimize=self.optimize,
                          force=self.force, prefix=prefix, dry_run=self.dry_run)
 
+from lib2to3.refactor import RefactoringTool, get_fixers_from_package
+class DistutilsRefactoringTool(RefactoringTool):
+    def log_error(self, msg, *args, **kw):
+        # XXX ignores kw
+        log.error(msg, *args)
+
+    def log_message(self, msg, *args):
+        log.info(msg, *args)
+
+    def log_debug(self, msg, *args):
+        log.debug(msg, *args)
+
 class build_py_2to3(build_py):
     def run(self):
         self.updated_files = []
@@ -396,18 +408,12 @@ class build_py_2to3(build_py):
             self.build_package_data()
 
         # 2to3
-        from lib2to3.refactor import RefactoringTool
-        class Options:
-            pass
-        o = Options()
-        o.doctests_only = False
-        o.fix = []
-        o.list_fixes = []
-        o.print_function = False
-        o.verbose = False
-        o.write = True
-        r = RefactoringTool(o)
-        r.refactor_args(self.updated_files)
+        fixers = get_fixers_from_package('lib2to3.fixes')
+        options = dict(fix=[], list_fixes=[],
+                       print_function=False, verbose=False,
+                       write=True)
+        r = DistutilsRefactoringTool(fixers, options)
+        r.refactor(self.updated_files, write=True)
 
         # Remaining base class code
         self.byte_compile(self.get_outputs(include_bytecode=0))
index 139fc570820e9658ee72f954cb95e8c3ae2766e4..c1ad97dca8cdcfced2b779ba6a426b0289ca9f9a 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -31,6 +31,8 @@ Core and Builtins
 Library
 -------
 
+- Issue #4072: Restore build_py_2to3.
+
 - Issue #4014: Don't claim that Python has an Alpha release status, in addition
   to claiming it is Mature.
 
@@ -63,6 +65,11 @@ Build
 
 - Issue #4018: Disable "for me" installations on Vista.
 
+Tools/Demos
+-----------
+
+- Issue #4072: Add a distutils demo for build_py_2to3.
+
 
 What's New in Python 3.0 release candidate 1
 ============================================