diff options
author | David Robillard <d@drobilla.net> | 2018-09-11 20:54:08 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-09-11 20:54:08 +0200 |
commit | b6e9de2de9725e2f5a3170b8171ad1a1e95e8339 (patch) | |
tree | aa8d80d8ca0d943e729e9f239229c741c5228924 /fixpy2.py | |
download | pugl-b6e9de2de9725e2f5a3170b8171ad1a1e95e8339.tar.gz pugl-b6e9de2de9725e2f5a3170b8171ad1a1e95e8339.tar.bz2 pugl-b6e9de2de9725e2f5a3170b8171ad1a1e95e8339.zip |
Squashed 'waflib/' content from commit 391d285
git-subtree-dir: waflib
git-subtree-split: 391d2853c6c97efc90e466f187675e8155c866d6
Diffstat (limited to 'fixpy2.py')
-rw-r--r-- | fixpy2.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/fixpy2.py b/fixpy2.py new file mode 100644 index 0000000..24176e0 --- /dev/null +++ b/fixpy2.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python +# encoding: utf-8 +# Thomas Nagy, 2010-2018 (ita) + +from __future__ import with_statement + +import os + +all_modifs = {} + +def fixdir(dir): + """Call all substitution functions on Waf folders""" + for k in all_modifs: + for v in all_modifs[k]: + modif(os.path.join(dir, 'waflib'), k, v) + +def modif(dir, name, fun): + """Call a substitution function""" + if name == '*': + lst = [] + for y in '. Tools extras'.split(): + for x in os.listdir(os.path.join(dir, y)): + if x.endswith('.py'): + lst.append(y + os.sep + x) + for x in lst: + modif(dir, x, fun) + return + + filename = os.path.join(dir, name) + with open(filename, 'r') as f: + txt = f.read() + + txt = fun(txt) + + with open(filename, 'w') as f: + f.write(txt) + +def subst(*k): + """register a substitution function""" + def do_subst(fun): + for x in k: + try: + all_modifs[x].append(fun) + except KeyError: + all_modifs[x] = [fun] + return fun + return do_subst + +@subst('*') +def r1(code): + "utf-8 fixes for python < 2.6" + code = code.replace('as e:', ',e:') + code = code.replace(".decode(sys.stdout.encoding or'latin-1',errors='replace')", '') + return code.replace('.encode()', '') + +@subst('Runner.py') +def r4(code): + "generator syntax" + return code.replace('next(self.biter)', 'self.biter.next()') + +@subst('Context.py') +def r5(code): + return code.replace("('Execution failure: %s'%str(e),ex=e)", "('Execution failure: %s'%str(e),ex=e),None,sys.exc_info()[2]") + |