aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/command/sdist3.py
blob: fc7ebb9788583eb1e22ba98387994b3cb61a533a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import os
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([os.path.join(base_dir, f) for f in files if f.endswith(".py")], write=True)