diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2009-09-13 00:17:03 +0200 |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2009-09-13 00:17:03 +0200 |
commit | 5b568886e649fad8811f81484dc88fa5111faa94 (patch) | |
tree | b5ed7bf09152982cbc3bbf19c9e2c83977c46fb8 /setuptools/command/build_py.py | |
parent | 5bf298f0e8b30f236b76997c66eee38de798f710 (diff) | |
download | external_python_setuptools-5b568886e649fad8811f81484dc88fa5111faa94.tar.gz external_python_setuptools-5b568886e649fad8811f81484dc88fa5111faa94.tar.bz2 external_python_setuptools-5b568886e649fad8811f81484dc88fa5111faa94.zip |
Support running 2to3 on build_py.
--HG--
branch : distribute
extra : rebase_source : 7b3f06bc7b7745a7292e729c04053821340b6f49
Diffstat (limited to 'setuptools/command/build_py.py')
-rw-r--r-- | setuptools/command/build_py.py | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/setuptools/command/build_py.py b/setuptools/command/build_py.py index 3fce7693..b27574a4 100644 --- a/setuptools/command/build_py.py +++ b/setuptools/command/build_py.py @@ -3,7 +3,41 @@ from distutils.command.build_py import build_py as _build_py from distutils.util import convert_path from glob import glob -class build_py(_build_py): +try: + from distutils.util import Mixin2to3 as _Mixin2to3 + # add support for converting doctests that is missing in 3.1 distutils + from lib2to3.refactor import RefactoringTool, get_fixers_from_package + import setuptools + class DistutilsRefactoringTool(RefactoringTool): + def log_error(self, msg, *args, **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 Mixin2to3(_Mixin2to3): + def run_2to3(self, files): + if not setuptools.run_2to3: + return files + files = _Mixin2to3.run_2to3(files) + if setuptools.run_2to3_on_doctests: + fixer_names = self.fixer_names + if fixer_names is None: + fixer_names = get_fixers_from_package('lib2to3.fixes') + r = DistutilsRefactoringTool(fixer_names) + r.refactor(files, write=True, doctests_only=True) + return files + +except ImportError: + class Mixin2to3: + def run_2to3(self, files): + # Nothing done in 2.x + pass + +class build_py(_build_py, Mixin2to3): """Enhanced 'build_py' command that includes data files with packages The data files are specified via a 'package_data' argument to 'setup()'. @@ -23,6 +57,7 @@ class build_py(_build_py): if not self.py_modules and not self.packages: return + self.__updated_files = [] if self.py_modules: self.build_modules() @@ -30,6 +65,8 @@ class build_py(_build_py): self.build_packages() self.build_package_data() + self.run_2to3(self.__updated_files) + # Only compile actual .py files, using our base class' idea of what our # output files are. self.byte_compile(_build_py.get_outputs(self, include_bytecode=0)) @@ -39,6 +76,12 @@ class build_py(_build_py): self.data_files = files = self._get_data_files(); return files return _build_py.__getattr__(self,attr) + def build_module(self, module, module_file, package): + outfile, copied = _build_py.build_module(self, module, module_file, package) + if copied: + self.__updated_files.append(outfile) + return outfile, copied + def _get_data_files(self): """Generate list of '(package,src_dir,build_dir,filenames)' tuples""" self.analyze_manifest() |