summaryrefslogtreecommitdiff
path: root/setuptools
diff options
context:
space:
mode:
Diffstat (limited to 'setuptools')
-rw-r--r--setuptools/command/__init__.py2
-rw-r--r--setuptools/command/sdist3.py34
2 files changed, 35 insertions, 1 deletions
diff --git a/setuptools/command/__init__.py b/setuptools/command/__init__.py
index f898822b..8f5ba21c 100644
--- a/setuptools/command/__init__.py
+++ b/setuptools/command/__init__.py
@@ -1,7 +1,7 @@
__all__ = [
'alias', 'bdist_egg', 'bdist_rpm', 'build_ext', 'build_py', 'develop',
'easy_install', 'egg_info', 'install', 'install_lib', 'rotate', 'saveopts',
- 'sdist', 'setopt', 'test', 'upload', 'install_egg_info', 'install_scripts',
+ 'sdist', 'sdist3', 'setopt', 'test', 'upload', 'install_egg_info', 'install_scripts',
'register', 'bdist_wininst',
]
diff --git a/setuptools/command/sdist3.py b/setuptools/command/sdist3.py
new file mode 100644
index 00000000..4fbfa8db
--- /dev/null
+++ b/setuptools/command/sdist3.py
@@ -0,0 +1,34 @@
+from distutils import log
+from sdist import sdist
+from lib2to3.refactor import RefactoringTool, get_fixers_from_package
+
+
+class _RefactoringTool(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 sdist3(sdist):
+ description = "sdist version that runs 2to3 on all sources before packaging"
+ fixer_names = None
+
+ def copy_file(self, file, dest, link=None):
+ # We ignore the link parameter, always demanding a copy, so that
+ # 2to3 won't overwrite the original file.
+ sdist.copy_file(self, file, dest)
+
+ def make_release_tree(self, base_dir, files):
+ sdist.make_release_tree(self, base_dir, files)
+
+ # run 2to3 on all files
+ fixer_names = self.fixer_names
+ if fixer_names is None:
+ fixer_names = get_fixers_from_package('lib2to3.fixes')
+ r = _RefactoringTool(fixer_names)
+ r.refactor([f for f in files if f.endswith(".py")], write=True)