diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2008-03-22 00:35:10 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2008-03-22 00:35:10 (GMT) |
commit | 73a22f0500ce713d46fce864e95402c34a45afd9 (patch) | |
tree | ef47a88b0116333b8941143b09607b84e7f233f5 | |
parent | 3faa84f18e2a340c2a805a343f3b10a05dfe5fdd (diff) | |
download | cpython-73a22f0500ce713d46fce864e95402c34a45afd9.zip cpython-73a22f0500ce713d46fce864e95402c34a45afd9.tar.gz cpython-73a22f0500ce713d46fce864e95402c34a45afd9.tar.bz2 |
Add build_py_2to3.
-rw-r--r-- | Doc/distutils/apiref.rst | 20 | ||||
-rw-r--r-- | Lib/distutils/command/build_py.py | 24 | ||||
-rw-r--r-- | Misc/NEWS | 4 |
3 files changed, 47 insertions, 1 deletions
diff --git a/Doc/distutils/apiref.rst b/Doc/distutils/apiref.rst index 36684e2..6616f83 100644 --- a/Doc/distutils/apiref.rst +++ b/Doc/distutils/apiref.rst @@ -1820,7 +1820,25 @@ This module supplies the abstract base class :class:`Command`. :synopsis: Build the .py/.pyc files of a package -.. % todo +.. class:: build_py(Command) + +.. class:: build_py_2to3(build_py) + + Alternative implementation of build_py which also runs the + 2to3 conversion library on each .py file that is going to be + installed. To use this in a setup.py file for a distribution + that is designed to run with both Python 2.x and 3.x, add:: + + try: + from distutils.command.build_py import build_py_2to3 as build_py + except ImportError: + from distutils.command.build_py import build_py + + to your setup.py, and later:: + + cmdclass = {'build_py':build_py} + + to the invocation of setup(). :mod:`distutils.command.build_scripts` --- Build the scripts of a package diff --git a/Lib/distutils/command/build_py.py b/Lib/distutils/command/build_py.py index 63ced4b..f39ffb8 100644 --- a/Lib/distutils/command/build_py.py +++ b/Lib/distutils/command/build_py.py @@ -383,3 +383,27 @@ class build_py (Command): if self.optimize > 0: byte_compile(files, optimize=self.optimize, force=self.force, prefix=prefix, dry_run=self.dry_run) + +class build_py_2to3(build_py): + def run(self): + from lib2to3.refactor import RefactoringTool + self.updated_files = [] + build_py.run(self) + 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) + + def build_module(self, module, module_file, package): + res = build_py.build_module(self, module, module_file, package) + if res[1]: + # file was copied + self.updated_files.append(res[0]) + return res @@ -23,6 +23,10 @@ Extension Modules Library ------- +- The class distutils.commands.build_py.build_py_2to3 can be used + as a build_py replacement to automatically run 2to3 on modules + that are going to be installed. + - A new pickle protocol (protocol 3) is added with explicit support for bytes. This is the default protocol. It intentionally cannot be unpickled by Python 2.x. |