aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/command/sdist3.py
diff options
context:
space:
mode:
Diffstat (limited to 'setuptools/command/sdist3.py')
-rw-r--r--setuptools/command/sdist3.py34
1 files changed, 34 insertions, 0 deletions
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)