summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Demo/distutils/test2to3/README3
-rw-r--r--Demo/distutils/test2to3/setup.py18
-rw-r--r--Demo/distutils/test2to3/test2to3/__init__.py1
-rw-r--r--Demo/distutils/test2to3/test2to3/hello.py5
-rw-r--r--Lib/distutils/command/build_py.py30
-rw-r--r--Misc/NEWS7
6 files changed, 52 insertions, 12 deletions
diff --git a/Demo/distutils/test2to3/README b/Demo/distutils/test2to3/README
new file mode 100644
index 0000000..9365593
--- /dev/null
+++ b/Demo/distutils/test2to3/README
@@ -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
index 0000000..3abb5ff
--- /dev/null
+++ b/Demo/distutils/test2to3/setup.py
@@ -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
index 0000000..1bb8bf6
--- /dev/null
+++ b/Demo/distutils/test2to3/test2to3/__init__.py
@@ -0,0 +1 @@
+# empty
diff --git a/Demo/distutils/test2to3/test2to3/hello.py b/Demo/distutils/test2to3/test2to3/hello.py
new file mode 100644
index 0000000..f52926b
--- /dev/null
+++ b/Demo/distutils/test2to3/test2to3/hello.py
@@ -0,0 +1,5 @@
+def hello():
+ try:
+ print "Hello, world"
+ except IOError, e:
+ print e.errno
diff --git a/Lib/distutils/command/build_py.py b/Lib/distutils/command/build_py.py
index 09f6d23..7728489 100644
--- a/Lib/distutils/command/build_py.py
+++ b/Lib/distutils/command/build_py.py
@@ -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))
diff --git a/Misc/NEWS b/Misc/NEWS
index 139fc57..c1ad97d 100644
--- 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
============================================