diff options
Diffstat (limited to 'setuptools/command/sdist3.py')
-rw-r--r-- | setuptools/command/sdist3.py | 34 |
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) |