Attempt #2: Update `gyb` to latest version and use python3
This commit is contained in:
parent
d68d4228f9
commit
477062c756
|
@ -8,14 +8,14 @@ def chunks(seq, size):
|
||||||
return (seq[i:(i + size)] for i in range(0, len(seq), size))
|
return (seq[i:(i + size)] for i in range(0, len(seq), size))
|
||||||
|
|
||||||
def encode(string, salt):
|
def encode(string, salt):
|
||||||
bytes = string.encode("UTF-8")
|
bytes_ = string.encode("UTF-8")
|
||||||
return [ord(bytes[i]) ^ salt[i % len(salt)] for i in range(0, len(bytes))]
|
return [bytes_[i] ^ salt[i % len(salt)] for i in range(0, len(bytes_))]
|
||||||
|
|
||||||
def snake_to_camel(snake_str):
|
def snake_to_camel(snake_str):
|
||||||
components = snake_str.split('_')
|
components = snake_str.split('_')
|
||||||
return components[0].lower() + ''.join(x.title() for x in components[1:])
|
return components[0].lower() + ''.join(x.title() for x in components[1:])
|
||||||
|
|
||||||
salt = [ord(byte) for byte in os.urandom(64)]
|
salt = [byte for byte in os.urandom(64)]
|
||||||
}%
|
}%
|
||||||
import Secrets
|
import Secrets
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
#!/usr/bin/env python2.7
|
#!/usr/bin/env python3
|
||||||
import gyb
|
import gyb
|
||||||
gyb.main()
|
gyb.main()
|
||||||
|
|
|
@ -4,17 +4,21 @@
|
||||||
|
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
|
import io
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
try:
|
|
||||||
from cStringIO import StringIO
|
|
||||||
except ImportError:
|
|
||||||
from io import StringIO
|
|
||||||
import textwrap
|
import textwrap
|
||||||
import tokenize
|
import tokenize
|
||||||
from bisect import bisect
|
from bisect import bisect
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
from StringIO import StringIO
|
||||||
|
except ImportError:
|
||||||
|
from io import StringIO
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
basestring
|
basestring
|
||||||
except NameError:
|
except NameError:
|
||||||
|
@ -48,7 +52,7 @@ def split_lines(s):
|
||||||
If the lines are later concatenated, the result is s, possibly
|
If the lines are later concatenated, the result is s, possibly
|
||||||
with a single appended newline.
|
with a single appended newline.
|
||||||
"""
|
"""
|
||||||
return [l + '\n' for l in s.split('\n')]
|
return [line + '\n' for line in s.split('\n')]
|
||||||
|
|
||||||
|
|
||||||
# text on a line up to the first '$$', '${', or '%%'
|
# text on a line up to the first '$$', '${', or '%%'
|
||||||
|
@ -396,9 +400,9 @@ class ParseContext(object):
|
||||||
def __init__(self, filename, template=None):
|
def __init__(self, filename, template=None):
|
||||||
self.filename = os.path.abspath(filename)
|
self.filename = os.path.abspath(filename)
|
||||||
if sys.platform == 'win32':
|
if sys.platform == 'win32':
|
||||||
self.filename = self.filename.replace('\\', '/')
|
self.filename = '/'.join(self.filename.split(os.sep))
|
||||||
if template is None:
|
if template is None:
|
||||||
with open(filename) as f:
|
with io.open(os.path.normpath(filename), encoding='utf-8') as f:
|
||||||
self.template = f.read()
|
self.template = f.read()
|
||||||
else:
|
else:
|
||||||
self.template = template
|
self.template = template
|
||||||
|
@ -733,8 +737,10 @@ class Code(ASTNode):
|
||||||
result_string = None
|
result_string = None
|
||||||
if isinstance(result, Number) and not isinstance(result, Integral):
|
if isinstance(result, Number) and not isinstance(result, Integral):
|
||||||
result_string = repr(result)
|
result_string = repr(result)
|
||||||
else:
|
elif isinstance(result, Integral) or isinstance(result, list):
|
||||||
result_string = str(result)
|
result_string = str(result)
|
||||||
|
else:
|
||||||
|
result_string = StringIO(result).read()
|
||||||
context.append_text(
|
context.append_text(
|
||||||
result_string, self.filename, self.start_line_number)
|
result_string, self.filename, self.start_line_number)
|
||||||
|
|
||||||
|
@ -745,7 +751,7 @@ class Code(ASTNode):
|
||||||
s = indent + 'Code: {' + source_lines[0] + '}'
|
s = indent + 'Code: {' + source_lines[0] + '}'
|
||||||
else:
|
else:
|
||||||
s = indent + 'Code:\n' + indent + '{\n' + '\n'.join(
|
s = indent + 'Code:\n' + indent + '{\n' + '\n'.join(
|
||||||
indent + 4 * ' ' + l for l in source_lines
|
indent + 4 * ' ' + line for line in source_lines
|
||||||
) + '\n' + indent + '}'
|
) + '\n' + indent + '}'
|
||||||
return s + self.format_children(indent)
|
return s + self.format_children(indent)
|
||||||
|
|
||||||
|
@ -760,8 +766,8 @@ def expand(filename, line_directive=_default_line_directive, **local_bindings):
|
||||||
>>> # manually handle closing and deleting this file to allow us to open
|
>>> # manually handle closing and deleting this file to allow us to open
|
||||||
>>> # the file by its name across all platforms.
|
>>> # the file by its name across all platforms.
|
||||||
>>> f = NamedTemporaryFile(delete=False)
|
>>> f = NamedTemporaryFile(delete=False)
|
||||||
>>> f.write(
|
>>> _ = f.write(
|
||||||
... r'''---
|
... br'''---
|
||||||
... % for i in range(int(x)):
|
... % for i in range(int(x)):
|
||||||
... a pox on ${i} for epoxy
|
... a pox on ${i} for epoxy
|
||||||
... % end
|
... % end
|
||||||
|
@ -800,7 +806,7 @@ def expand(filename, line_directive=_default_line_directive, **local_bindings):
|
||||||
>>> f.close()
|
>>> f.close()
|
||||||
>>> os.remove(f.name)
|
>>> os.remove(f.name)
|
||||||
"""
|
"""
|
||||||
with open(filename) as f:
|
with io.open(filename, encoding='utf-8') as f:
|
||||||
t = parse_template(filename, f.read())
|
t = parse_template(filename, f.read())
|
||||||
d = os.getcwd()
|
d = os.getcwd()
|
||||||
os.chdir(os.path.dirname(os.path.abspath(filename)))
|
os.chdir(os.path.dirname(os.path.abspath(filename)))
|
||||||
|
@ -1133,16 +1139,6 @@ def execute_template(
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
"""
|
|
||||||
Lint this file.
|
|
||||||
>>> import sys
|
|
||||||
>>> gyb_path = os.path.realpath(__file__).replace('.pyc', '.py')
|
|
||||||
>>> sys.path.append(os.path.dirname(gyb_path))
|
|
||||||
>>> import python_lint
|
|
||||||
>>> python_lint.lint([gyb_path], verbose=False)
|
|
||||||
0
|
|
||||||
"""
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
@ -1215,12 +1211,12 @@ def main():
|
||||||
help='''Bindings to be set in the template's execution context''')
|
help='''Bindings to be set in the template's execution context''')
|
||||||
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'file', type=argparse.FileType(),
|
'file', type=str,
|
||||||
help='Path to GYB template file (defaults to stdin)', nargs='?',
|
help='Path to GYB template file (defaults to stdin)', nargs='?',
|
||||||
default=sys.stdin)
|
default='-')
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-o', dest='target', type=argparse.FileType('w'),
|
'-o', dest='target', type=str,
|
||||||
help='Output file (defaults to stdout)', default=sys.stdout)
|
help='Output file (defaults to stdout)', default='-')
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--test', action='store_true',
|
'--test', action='store_true',
|
||||||
default=False, help='Run a self-test')
|
default=False, help='Run a self-test')
|
||||||
|
@ -1252,15 +1248,23 @@ def main():
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
bindings = dict(x.split('=', 1) for x in args.defines)
|
bindings = dict(x.split('=', 1) for x in args.defines)
|
||||||
ast = parse_template(args.file.name, args.file.read())
|
if args.file == '-':
|
||||||
|
ast = parse_template('stdin', sys.stdin.read())
|
||||||
|
else:
|
||||||
|
with io.open(os.path.normpath(args.file), 'r', encoding='utf-8') as f:
|
||||||
|
ast = parse_template(args.file, f.read())
|
||||||
if args.dump:
|
if args.dump:
|
||||||
print(ast)
|
print(ast)
|
||||||
# Allow the template to open files and import .py files relative to its own
|
# Allow the template to open files and import .py files relative to its own
|
||||||
# directory
|
# directory
|
||||||
os.chdir(os.path.dirname(os.path.abspath(args.file.name)))
|
os.chdir(os.path.dirname(os.path.abspath(args.file)))
|
||||||
sys.path = ['.'] + sys.path
|
sys.path = ['.'] + sys.path
|
||||||
|
|
||||||
args.target.write(execute_template(ast, args.line_directive, **bindings))
|
if args.target == '-':
|
||||||
|
sys.stdout.write(execute_template(ast, args.line_directive, **bindings))
|
||||||
|
else:
|
||||||
|
with io.open(args.target, 'w', encoding='utf-8', newline='\n') as f:
|
||||||
|
f.write(execute_template(ast, args.line_directive, **bindings))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
Loading…
Reference in New Issue