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 | 62dcd3f33c7f8ba0f5694cc88b36f685463dac5b (patch) | |
tree | 5bb277b47d04635c5a38fb4da83e69c2242afef6 /waflib/fixpy2.py | |
parent | c4dcd9609a4e0a968c58830301cfb49e2beffd4b (diff) | |
parent | b6e9de2de9725e2f5a3170b8171ad1a1e95e8339 (diff) | |
download | pugl-62dcd3f33c7f8ba0f5694cc88b36f685463dac5b.tar.gz pugl-62dcd3f33c7f8ba0f5694cc88b36f685463dac5b.tar.bz2 pugl-62dcd3f33c7f8ba0f5694cc88b36f685463dac5b.zip |
Merge commit 'b6e9de2de9725e2f5a3170b8171ad1a1e95e8339' as 'waflib'
Diffstat (limited to 'waflib/fixpy2.py')
-rw-r--r-- | waflib/fixpy2.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/waflib/fixpy2.py b/waflib/fixpy2.py new file mode 100644 index 0000000..24176e0 --- /dev/null +++ b/waflib/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]") + |