Skip to content

Commit

Permalink
Run 2to3 conversions in parallel on multicore machines.
Browse files Browse the repository at this point in the history
  • Loading branch information
mdboom committed Mar 16, 2011
1 parent fe94aff commit 17fafc0
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions setup.py
Expand Up @@ -252,13 +252,26 @@ def add_dateutil():
mod.extra_compile_args.append('-DVERBOSE')

if sys.version_info[0] >= 3:
# We need to skip certain files that have already been
# converted to Python 3.x
import multiprocessing
from distutils import util
def parallel_refactor(x):
from lib2to3.refactor import RefactoringTool, get_fixers_from_package
class DistutilsRefactoringTool(RefactoringTool):
def ignore(self, msg, *args, **kw):
pass
log_error = log_message = log_debug = ignore
fixer_names = get_fixers_from_package('lib2to3.fixes')
r = DistutilsRefactoringTool(fixer_names, options=None)
r.refactor([x], write=True)

original_build_py = build_py
class build_py(original_build_py):
def run_2to3(self, files):
# We need to skip certain files that have already been
# converted to Python 3.x
filtered = [x for x in files if 'py3' not in x]
original_build_py.run_2to3(self, filtered)
p = multiprocessing.Pool()
p.map(parallel_refactor, filtered)

print_raw("pymods %s" % py_modules)
print_raw("packages %s" % packages)
Expand Down

0 comments on commit 17fafc0

Please sign in to comment.