summaryrefslogtreecommitdiff
path: root/src/distutils2/command
diff options
context:
space:
mode:
authorZubin Mithra <zubin.mithra@gmail.com>2010-08-13 06:51:55 +0530
committerZubin Mithra <zubin.mithra@gmail.com>2010-08-13 06:51:55 +0530
commitf5596987fc9216ecc5df9bfd5bf6e12b299219c7 (patch)
tree672df525e3409398d88d82ff4c7ce947da525c9a /src/distutils2/command
parent01bfc565a33b3b2462103bcb00dce7643f54a800 (diff)
downloaddisutils2-f5596987fc9216ecc5df9bfd5bf6e12b299219c7.tar.gz
reverted to revision 532
Diffstat (limited to 'src/distutils2/command')
-rw-r--r--src/distutils2/command/build.py6
-rw-r--r--src/distutils2/command/build_py.py67
-rw-r--r--src/distutils2/command/build_scripts.py20
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