diff options
| author | Zubin Mithra <zubin.mithra@gmail.com> | 2010-08-13 06:51:55 +0530 |
|---|---|---|
| committer | Zubin Mithra <zubin.mithra@gmail.com> | 2010-08-13 06:51:55 +0530 |
| commit | f5596987fc9216ecc5df9bfd5bf6e12b299219c7 (patch) | |
| tree | 672df525e3409398d88d82ff4c7ce947da525c9a /src/distutils2/command | |
| parent | 01bfc565a33b3b2462103bcb00dce7643f54a800 (diff) | |
| download | disutils2-f5596987fc9216ecc5df9bfd5bf6e12b299219c7.tar.gz | |
reverted to revision 532
Diffstat (limited to 'src/distutils2/command')
| -rw-r--r-- | src/distutils2/command/build.py | 6 | ||||
| -rw-r--r-- | src/distutils2/command/build_py.py | 67 | ||||
| -rw-r--r-- | src/distutils2/command/build_scripts.py | 20 |
3 files changed, 64 insertions, 29 deletions
diff --git a/src/distutils2/command/build.py b/src/distutils2/command/build.py index 39a319d..bdd2818 100644 --- a/src/distutils2/command/build.py +++ b/src/distutils2/command/build.py @@ -43,12 +43,6 @@ class build(Command): "forcibly build everything (ignore file timestamps)"), ('executable=', 'e', "specify final destination interpreter path (build.py)"), - ('use-2to3', None, - "use 2to3 to make source python 3.x compatible"), - ('convert-2to3-doctests', None, - "use 2to3 to convert doctests in seperate text files"), - ('use-2to3-fixers', None, - "list additional fixers opted for during 2to3 conversion"), ] boolean_options = ['debug', 'force'] diff --git a/src/distutils2/command/build_py.py b/src/distutils2/command/build_py.py index 14e7c83..d0fbd3c 100644 --- a/src/distutils2/command/build_py.py +++ b/src/distutils2/command/build_py.py @@ -13,10 +13,61 @@ import distutils2 from distutils2.core import Command from distutils2.errors import DistutilsOptionError, DistutilsFileError from distutils2.util import convert_path -from distutils2._compat import Mixin2to3 +from distutils2.converter.refactor import DistutilsRefactoringTool # marking public APIs -__all__ = ['build_py'] +__all__ = ['Mixin2to3', 'build_py'] + +try: + from distutils2.util import Mixin2to3 as _Mixin2to3 + from distutils2 import run_2to3_on_doctests + from lib2to3.refactor import get_fixers_from_package + _CONVERT = True + _KLASS = _Mixin2to3 +except ImportError: + _CONVERT = False + _KLASS = object + +class Mixin2to3(_KLASS): + """ The base class which can be used for refactoring. When run under + Python 3.0, the run_2to3 method provided by Mixin2to3 is overridden. + When run on Python 2.x, it merely creates a class which overrides run_2to3, + yet does nothing in particular with it. + """ + if _CONVERT: + def _run_2to3(self, files, doctests=[], fixers=[]): + """ Takes a list of files and doctests, and performs conversion + on those. + - First, the files which contain the code(`files`) are converted. + - Second, the doctests in `files` are converted. + - Thirdly, the doctests in `doctests` are converted. + """ + # if additional fixers are present, use them + if fixers: + self.fixer_names = fixers + + # Convert the ".py" files. + logging.info("Converting Python code") + _KLASS.run_2to3(self, files) + + # Convert the doctests in the ".py" files. + logging.info("Converting doctests with '.py' files") + _KLASS.run_2to3(self, files, doctests_only=True) + + # If the following conditions are met, then convert:- + # 1. User has specified the 'convert_2to3_doctests' option. So, we + # can expect that the list 'doctests' is not empty. + # 2. The default is allow distutils2 to allow conversion of text files + # containing doctests. It is set as + # distutils2.run_2to3_on_doctests + + if doctests != [] and run_2to3_on_doctests: + logging.info("Converting text files which contain doctests") + _KLASS.run_2to3(self, doctests, doctests_only=True) + else: + # If run on Python 2.x, there is nothing to do. + def _run_2to3(self, files, doctests=[], fixers=[]): + pass class build_py(Command, Mixin2to3): @@ -30,6 +81,12 @@ class build_py(Command, Mixin2to3): "also compile with optimization: -O1 for \"python -O\", " "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"), ('force', 'f', "forcibly build everything (ignore file timestamps)"), + ('use-2to3', None, + "use 2to3 to make source python 3.x compatible"), + ('convert-2to3-doctests', None, + "use 2to3 to convert doctests in seperate text files"), + ('use-2to3-fixers', None, + "list additional fixers opted for during 2to3 conversion"), ] boolean_options = ['compile', 'force'] @@ -51,11 +108,7 @@ class build_py(Command, Mixin2to3): self.use_2to3_fixers = [] def finalize_options(self): - self.set_undefined_options('build', - ('build_py', 'use_2to3'), - ('build_py', 'convert_2to3_doctests') - ('build_py', 'use_2to3_fixers') - 'build_py', 'force') + self.set_undefined_options('build', 'build_lib', 'force') # Get the distribution options that are aliases for build_py # options -- list of packages and list of modules. diff --git a/src/distutils2/command/build_scripts.py b/src/distutils2/command/build_scripts.py index 975c5c2..b62ade7 100644 --- a/src/distutils2/command/build_scripts.py +++ b/src/distutils2/command/build_scripts.py @@ -13,11 +13,11 @@ try: import sysconfig except ImportError: from distutils2._backport import sysconfig -from distutils2._compat import Mixin2to3 + # check if Python is called on the first line with this expression first_line_re = re.compile('^#!.*python[0-9.]*([ \t].*)?$') -class build_scripts (Command, Mixin2to3): +class build_scripts (Command): description = "\"build\" scripts (copy and fixup #! line)" @@ -36,16 +36,10 @@ class build_scripts (Command, Mixin2to3): self.force = None self.executable = None self.outfiles = None - self.use_2to3 = False - self.convert_2to3_doctests = [] - self.use_2to3_fixers = [] def finalize_options (self): self.set_undefined_options('build', ('build_scripts', 'build_dir'), - ('build_scripts', 'use_2to3'), - ('build_scripts', 'convert_2to3_doctests') - ('build_scripts', 'use_2to3_fixers') 'force', 'executable') self.scripts = self.distribution.scripts @@ -55,12 +49,8 @@ class build_scripts (Command, Mixin2to3): def run (self): if not self.scripts: return - _copied_files = [] - _copied_files = self.copy_scripts() + self.copy_scripts() - if self.use_2to3 and _copied_files: - self.run_2to3(self._copied_files, None, - self.use_2to3_fixers) def copy_scripts (self): """Copy each script listed in 'self.scripts'; if it's marked as a @@ -70,7 +60,6 @@ class build_scripts (Command, Mixin2to3): """ self.mkpath(self.build_dir) outfiles = [] - copied_files = [] for script in self.scripts: adjust = 0 script = convert_path(script) @@ -125,7 +114,6 @@ class build_scripts (Command, Mixin2to3): if f: f.close() self.copy_file(script, outfile) - copied_files.append(outfile) if os.name == 'posix': for file in outfiles: @@ -138,7 +126,7 @@ class build_scripts (Command, Mixin2to3): log.info("changing mode of %s from %o to %o", file, oldmode, newmode) os.chmod(file, newmode) - return copied_files + # copy_scripts () # class build_scripts |
