You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-i18n/mozc/files/mozc-2.23.2815.102-python-3...

622 lines
20 KiB

https://github.com/google/mozc/issues/462
--- /src/base/gen_character_set.py
+++ /src/base/gen_character_set.py
@@ -33,7 +33,6 @@
import itertools
import optparse
import re
-import string
import sys
@@ -89,7 +88,8 @@
@staticmethod
def _LoadTable(filename, column_index, pattern, validater):
result = set()
- for line in open(filename):
+ fh = open(filename)
+ for line in fh:
if line.startswith('#'):
# Skip a comment line.
continue
@@ -100,6 +100,7 @@
ucs = int(match.group(1), 16)
if validater(ucs):
result.add(ucs)
+ fh.close()
return result
@@ -250,7 +251,7 @@
# (at most) four code points.
bit_list = []
for _, group in itertools.groupby(enumerate(category_list),
- lambda (codepoint, _): codepoint / 4):
+ lambda x: x[0] // 4):
# Fill bits from LSB to MSB for each group.
bits = 0
for index, (_, category) in enumerate(group):
@@ -263,7 +264,7 @@
# Output the content. Each line would have (at most) 16 bytes.
for _, group in itertools.groupby(enumerate(bit_list),
- lambda (index, _): index / 16):
+ lambda x: x[0] // 16):
line = [' \"']
for _, bits in group:
line.append('\\x%02X' % bits)
@@ -386,7 +387,7 @@
# Bitmap lookup.
# TODO(hidehiko): the bitmap has two huge 0-bits ranges. Reduce them.
category_map = [
- (bits, category) for category, bits in CATEGORY_BITMAP.iteritems()]
+ (bits, category) for category, bits in CATEGORY_BITMAP.items()]
category_map.sort()
lines.extend([
@@ -451,7 +452,7 @@
options.jisx0213file)
category_list = [
categorizer.GetCategory(codepoint)
- for codepoint in xrange(categorizer.MaxCodePoint() + 1)]
+ for codepoint in range(categorizer.MaxCodePoint() + 1)]
generated_character_set_header = GenerateCharacterSetHeader(category_list)
# Write the result.
--- /src/base/gen_config_file_stream_data.py
+++ /src/base/gen_config_file_stream_data.py
@@ -58,7 +58,7 @@
result = []
result.append(' { "%s", "' % os.path.basename(path))
with open(path, 'rb') as stream:
- result.extend(r'\x%02X' % ord(byte) for byte in stream.read())
+ result.extend(r'\x%02X' % byte for byte in stream.read())
result.append('", %d }' % os.path.getsize(path))
return ''.join(result)
@@ -93,8 +93,8 @@
def main():
(options, args) = ParseOptions()
if not options.output:
- print >>sys.stderr, (
- 'usage: gen_config_file_stream_data.py --output=filepath input ...')
+ print('usage: gen_config_file_stream_data.py --output=filepath input ...',
+ file=sys.stderr)
sys.exit(2)
with open(options.output, 'w') as output:
--- /src/build_mozc.py
+++ /src/build_mozc.py
@@ -943,7 +943,7 @@
logging.info('running %s...', binary)
try:
test_function(binary, gtest_report_dir, options)
- except RunOrDieError, e:
+ except RunOrDieError as e:
logging.error(e)
failed_tests.append(binary)
else:
@@ -1082,7 +1082,7 @@
# and '-c' and 'Release' are build options.
targets = []
build_options = []
- for i in xrange(len(args)):
+ for i in range(len(args)):
if args[i].startswith('-'):
# starting with build options
build_options = args[i:]
@@ -1190,14 +1190,14 @@
def ShowHelpAndExit():
"""Shows the help message."""
- print 'Usage: build_mozc.py COMMAND [ARGS]'
- print 'Commands: '
- print ' gyp Generate project files.'
- print ' build Build the specified target.'
- print ' runtests Build all tests and run them.'
- print ' clean Clean all the build files and directories.'
- print ''
- print 'See also the comment in the script for typical usage.'
+ print('Usage: build_mozc.py COMMAND [ARGS]')
+ print('Commands: ')
+ print(' gyp Generate project files.')
+ print(' build Build the specified target.')
+ print(' runtests Build all tests and run them.')
+ print(' clean Clean all the build files and directories.')
+ print('')
+ print('See also the comment in the script for typical usage.')
sys.exit(1)
--- /src/build_tools/android_util.py
+++ /src/build_tools/android_util.py
@@ -548,7 +548,7 @@
(devices_result, _) = process.communicate()
used_ports = set(int(port) for port
in re.findall(r'emulator-(\d+)', devices_result))
- return [port for port in xrange(5554, 5586, 2) if port not in used_ports]
+ return [port for port in range(5554, 5586, 2) if port not in used_ports]
def SetUpTestingSdkHomeDirectory(dest_android_sdk_home,
@@ -575,7 +575,7 @@
'create', 'avd',
'--force',
'--sdcard', '512M',]
- for key, value in options.iteritems():
+ for key, value in options.items():
args.extend([key, value])
env = {'ANDROID_SDK_HOME': os.path.abspath(dest_android_sdk_home)}
logging.info('Creating AVD: %s', args)
@@ -615,7 +615,7 @@
def main():
for arg in sys.argv[1:]:
for item in sorted(GetApkProperties(arg).items()):
- print '%s: %s' % item
+ print('%s: %s' % item)
if __name__ == '__main__':
--- /src/build_tools/binary_size_checker.py
+++ /src/build_tools/binary_size_checker.py
@@ -70,12 +70,12 @@
actual_size = os.stat(filename).st_size
expected_size = EXPECTED_MAXIMUM_SIZES[basename]
if actual_size < expected_size * 1024 * 1024:
- print 'Pass: %s (size: %d) is smaller than expected (%d MB)' % (
- filename, actual_size, expected_size)
+ print('Pass: %s (size: %d) is smaller than expected (%d MB)' % (
+ filename, actual_size, expected_size))
return True
else:
- print 'WARNING: %s (size: %d) is larger than expected (%d MB)' % (
- filename, actual_size, expected_size)
+ print('WARNING: %s (size: %d) is larger than expected (%d MB)' % (
+ filename, actual_size, expected_size))
return False
--- /src/build_tools/build_and_sign_pkg_mac.py
+++ /src/build_tools/build_and_sign_pkg_mac.py
@@ -44,8 +44,8 @@
import shutil
import sys
-from util import PrintErrorAndExit
-from util import RunOrDie
+from .util import PrintErrorAndExit
+from .util import RunOrDie
def ParseOption():
--- /src/build_tools/build_breakpad.py
+++ /src/build_tools/build_breakpad.py
@@ -54,9 +54,9 @@
try:
subprocess.check_output(command)
except subprocess.CalledProcessError as e:
- print e.output
+ print(e.output)
sys.exit(e.returncode)
- print 'Done: %s' % ' '.join(command)
+ print('Done: %s' % ' '.join(command))
def Xcodebuild(projdir, target, arch, sdk, outdir):
--- /src/build_tools/build_diskimage_mac.py
+++ /src/build_tools/build_diskimage_mac.py
@@ -90,7 +90,7 @@
# setup volume directory
temp_dir = tempfile.mkdtemp()
CopyFile(path.join(build_dir, ".keystone_install"), temp_dir)
- os.chmod(path.join(temp_dir, ".keystone_install"), 0755) # rwxr-xr-x
+ os.chmod(path.join(temp_dir, ".keystone_install"), 0o755) # rwxr-xr-x
for a in args:
CopyFile(path.join(build_dir, a), temp_dir)
--- /src/build_tools/change_reference_mac.py
+++ /src/build_tools/change_reference_mac.py
@@ -41,8 +41,8 @@
import optparse
import os
-from util import PrintErrorAndExit
-from util import RunOrDie
+from .util import PrintErrorAndExit
+from .util import RunOrDie
def ParseOption():
--- /src/build_tools/code_generator_util.py
+++ /src/build_tools/code_generator_util.py
@@ -33,27 +33,26 @@
__author__ = "hidehiko"
import struct
-import types
def ToCppStringLiteral(s):
"""Returns C-style string literal, or NULL if given s is None."""
if s is None:
- return 'NULL'
+ return b'NULL'
- if all(0x20 <= ord(c) <= 0x7E for c in s):
+ if all(0x20 <= c <= 0x7E for c in s):
# All characters are in ascii code.
- return '"%s"' % s.replace('\\', r'\\').replace('"', r'\"')
+ return b'"%b"' % s.replace(b'\\', br'\\').replace(b'"', br'\"')
else:
# One or more characters are non-ascii.
- return '"%s"' % ''.join(r'\x%02X' % ord(c) for c in s)
+ return b'"%b"' % b''.join(br'\x%02X' % c for c in s)
def FormatWithCppEscape(format_text, *args):
"""Returns a string filling format with args."""
literal_list = []
for arg in args:
- if isinstance(arg, (types.StringType, types.NoneType)):
+ if isinstance(arg, (bytes, type(None))):
arg = ToCppStringLiteral(arg)
literal_list.append(arg)
@@ -95,7 +94,7 @@
if target_compiler and target_compiler.startswith('msvs'):
stream.write('const uint64 k%s_data_wordtype[] = {\n' % variable_name)
- for word_index in xrange(0, len(data), 8):
+ for word_index in range(0, len(data), 8):
word_chunk = data[word_index:word_index + 8].ljust(8, '\x00')
stream.write('0x%016X, ' % struct.unpack('<Q', word_chunk))
if (word_index / 8) % 4 == 3:
@@ -111,7 +110,7 @@
stream.write('const char k%s_data[] =\n' % variable_name)
# Output 16bytes per line.
chunk_size = 16
- for index in xrange(0, len(data), chunk_size):
+ for index in range(0, len(data), chunk_size):
chunk = data[index:index + chunk_size]
stream.write('"')
stream.writelines(r'\x%02X' % ord(c) for c in chunk)
@@ -126,36 +125,50 @@
if type(codepoint_list) is int:
codepoint_list = (codepoint_list,)
if codepoint_list is None or len(codepoint_list) == 0:
- return 'null'
- result = r'"'
+ return b'null'
+ result = b'"'
for codepoint in codepoint_list:
- utf16_string = unichr(codepoint).encode('utf-16be')
+ utf16_string = chr(codepoint).encode('utf-16be')
if len(utf16_string) == 2:
(u0, l0) = utf16_string
- result += r'\u%02X%02X' % (ord(u0), ord(l0))
+ result += br'\u%02X%02X' % (u0, l0)
else:
(u0, l0, u1, l1) = utf16_string
- result += r'\u%02X%02X\u%02X%02X' % (ord(u0), ord(l0), ord(u1), ord(l1))
- result += r'"'
+ result += br'\u%02X%02X\u%02X%02X' % (u0, l0, u1, l1)
+ result += b'"'
return result
def SkipLineComment(stream, comment_prefix='#'):
"""Skips line comments from stream."""
for line in stream:
+ if isinstance(line, bytes):
+ if isinstance(comment_prefix, str):
+ comment_prefix = comment_prefix.encode('utf-8')
+ line_ending = b'\n'
+ else:
+ line_ending = '\n'
stripped_line = line.strip()
if stripped_line and not stripped_line.startswith(comment_prefix):
- yield line.rstrip('\n')
+ yield line.rstrip(line_ending)
def ParseColumnStream(stream, num_column=None, delimiter=None):
"""Returns parsed columns read from stream."""
if num_column is None:
for line in stream:
- yield line.rstrip('\n').split(delimiter)
+ if isinstance(line, bytes):
+ line_ending = b'\n'
+ else:
+ line_ending = '\n'
+ yield line.rstrip(line_ending).split(delimiter)
else:
for line in stream:
- yield line.rstrip('\n').split(delimiter)[:num_column]
+ if isinstance(line, bytes):
+ line_ending = b'\n'
+ else:
+ line_ending = '\n'
+ yield line.rstrip(line_ending).split(delimiter)[:num_column]
def SelectColumn(stream, column_index):
@@ -172,5 +185,5 @@
grouper extends the last chunk to make it an n-element chunk by adding
appropriate value, but this returns truncated chunk.
"""
- for index in xrange(0, len(iterable), n):
+ for index in range(0, len(iterable), n):
yield iterable[index:index + n]
--- /src/build_tools/codesign_mac.py
+++ /src/build_tools/codesign_mac.py
@@ -46,17 +46,17 @@
def RunOrDie(command):
"""Run the command, or die if it failed."""
- print "Running: " + command
+ print("Running: " + command)
try:
output = subprocess.check_output(command, shell=True)
- print >> sys.stderr, "=========="
- print >> sys.stderr, "COMMAND: " + command
- print >> sys.stderr, output
+ print("==========", file=sys.stderr)
+ print("COMMAND: " + command, file=sys.stderr)
+ print(output, file=sys.stderr)
except subprocess.CalledProcessError as e:
- print >> sys.stderr, "=========="
- print >> sys.stderr, "ERROR: " + command
- print >> sys.stderr, e.output
- print >> sys.stderr, "=========="
+ print("==========", file=sys.stderr)
+ print("ERROR: " + command, file=sys.stderr)
+ print(e.output, file=sys.stderr)
+ print("==========", file=sys.stderr)
sys.exit(1)
@@ -119,18 +119,18 @@
(options, unused_args) = parser.parse_args()
if not options.target:
- print "Error: --target should be specified."
- print parser.print_help()
+ print("Error: --target should be specified.")
+ print(parser.print_help())
sys.exit(1)
return options
def DumpEnviron():
- print "=== os.environ ==="
+ print("=== os.environ ===")
for key in sorted(os.environ):
- print "%s = %s" % (key, os.getenv(key))
- print "=================="
+ print("%s = %s" % (key, os.getenv(key)))
+ print("==================")
def main():
--- /src/build_tools/copy_dll_and_symbol.py
+++ /src/build_tools/copy_dll_and_symbol.py
@@ -38,7 +38,7 @@
import os
import shutil
-from util import PrintErrorAndExit
+from .util import PrintErrorAndExit
def ParseOption():
"""Parse command line options."""
@@ -98,7 +98,7 @@
if _GetLastModifiedTime(src) <= target_file_mtime:
# Older file found. Ignore.
continue
- print 'Copying %s to %s' % (src, target_file_abspath)
+ print('Copying %s to %s' % (src, target_file_abspath))
shutil.copy2(src, target_file_abspath)
break
--- /src/build_tools/copy_file.py
+++ /src/build_tools/copy_file.py
@@ -52,7 +52,7 @@
Args:
message: The error message to be printed to stderr.
"""
- print >>sys.stderr, message
+ print(message, file=sys.stderr)
sys.exit(1)
--- /src/build_tools/copy_qt_frameworks_mac.py
+++ /src/build_tools/copy_qt_frameworks_mac.py
@@ -41,9 +41,9 @@
import optparse
import os
-from copy_file import CopyFiles
-from util import PrintErrorAndExit
-from util import RunOrDie
+from .copy_file import CopyFiles
+from .util import PrintErrorAndExit
+from .util import RunOrDie
def ParseOption():
--- /src/build_tools/embed_file.py
+++ /src/build_tools/embed_file.py
@@ -46,10 +46,10 @@
def _FormatAsUint64LittleEndian(s):
"""Formats a string as uint64 value in little endian order."""
- for _ in xrange(len(s), 8):
- s += '\0'
+ for _ in range(len(s), 8):
+ s += b'\0'
s = s[::-1] # Reverse the string
- return '0x%s' % binascii.b2a_hex(s)
+ return b'0x%b' % binascii.b2a_hex(s)
def main():
@@ -57,30 +57,30 @@
with open(opts.input, 'rb') as infile:
with open(opts.output, 'wb') as outfile:
outfile.write(
- '#ifdef MOZC_EMBEDDED_FILE_%(name)s\n'
- '#error "%(name)s was already included or defined elsewhere"\n'
- '#else\n'
- '#define MOZC_EMBEDDED_FILE_%(name)s\n'
- 'const uint64 %(name)s_data[] = {\n'
- % {'name': opts.name})
+ b'#ifdef MOZC_EMBEDDED_FILE_%(name)b\n'
+ b'#error "%(name)b was already included or defined elsewhere"\n'
+ b'#else\n'
+ b'#define MOZC_EMBEDDED_FILE_%(name)b\n'
+ b'const uint64 %(name)b_data[] = {\n'
+ % {b'name': opts.name.encode('utf-8')})
while True:
chunk = infile.read(8)
if not chunk:
break
- outfile.write(' ')
+ outfile.write(b' ')
outfile.write(_FormatAsUint64LittleEndian(chunk))
- outfile.write(',\n')
+ outfile.write(b',\n')
outfile.write(
- '};\n'
- 'const EmbeddedFile %(name)s = {\n'
- ' %(name)s_data,\n'
- ' %(size)d,\n'
- '};\n'
- '#endif // MOZC_EMBEDDED_FILE_%(name)s\n'
- % {'name': opts.name,
- 'size': os.stat(opts.input).st_size})
+ b'};\n'
+ b'const EmbeddedFile %(name)b = {\n'
+ b' %(name)b_data,\n'
+ b' %(size)d,\n'
+ b'};\n'
+ b'#endif // MOZC_EMBEDDED_FILE_%(name)b\n'
+ % {b'name': opts.name.encode('utf-8'),
+ b'size': os.stat(opts.input).st_size})
if __name__ == '__main__':
--- /src/build_tools/embed_pathname.py
+++ /src/build_tools/embed_pathname.py
@@ -28,7 +28,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""A script to embed the given (relative) path name to C/C++ characters array.
+r"""A script to embed the given (relative) path name to C/C++ characters array.
Example:
./embed_pathname.py --path_to_be_embedded=d:\data\mozc
@@ -53,7 +53,7 @@
(options, unused_args) = parser.parse_args()
if not all(vars(options).values()):
- print parser.print_help()
+ print(parser.print_help())
sys.exit(1)
return options
@@ -63,7 +63,7 @@
opt = ParseOption()
path = os.path.abspath(opt.path_to_be_embedded)
# TODO(yukawa): Consider the case of non-ASCII characters.
- escaped_path = path.encode('string-escape')
+ escaped_path = path.replace('\\', '\\\\')
with open(opt.output, 'w') as output_file:
output_file.write(
'const char %s[] = "%s";\n' % (opt.constant_name, escaped_path))
--- /src/build_tools/ensure_gyp_module_path.py
+++ /src/build_tools/ensure_gyp_module_path.py
@@ -48,7 +48,7 @@
(options, _) = parser.parse_args()
if not options.expected:
- print parser.print_help()
+ print(parser.print_help())
sys.exit(1)
return options
@@ -59,20 +59,20 @@
opt = ParseOption()
expected_path = os.path.abspath(opt.expected)
if not os.path.exists(expected_path):
- print '%s does not exist.' % expected_path
+ print('%s does not exist.' % expected_path)
sys.exit(1)
try:
import gyp # NOLINT
except ImportError as e:
- print 'import gyp failed: %s' % e
+ print('import gyp failed: %s' % e)
sys.exit(1)
actual_path = os.path.abspath(gyp.__path__[0])
if expected_path != actual_path:
- print 'Unexpected gyp module is loaded on this environment.'
- print ' expected: %s' % expected_path
- print ' actual : %s' % actual_path
+ print('Unexpected gyp module is loaded on this environment.')
+ print(' expected: %s' % expected_path)
+ print(' actual : %s' % actual_path)
sys.exit(1)
if __name__ == '__main__':
--- /src/build_tools/gen_win32_resource_header.py
+++ /src/build_tools/gen_win32_resource_header.py
@@ -39,7 +39,7 @@
__author__ = "yukawa"
import logging
-import mozc_version
+from . import mozc_version
import optparse
import os
import sys
--- /src/build_tools/mozc_version.py
+++ /src/build_tools/mozc_version.py
@@ -94,7 +94,7 @@
last_digit = TARGET_PLATFORM_TO_DIGIT.get(target_platform, None)
if last_digit is None:
logging.critical('target_platform %s is invalid. Accetable ones are %s',
- target_platform, TARGET_PLATFORM_TO_DIGIT.keys())
+ target_platform, list(TARGET_PLATFORM_TO_DIGIT.keys()))
sys.exit(1)
if not revision:
@@ -314,13 +314,14 @@
self._properties = {}
if not os.path.isfile(path):
return
- for line in open(path):
- matchobj = re.match(r'(\w+)=(.*)', line.strip())
- if matchobj:
- var = matchobj.group(1)
- val = matchobj.group(2)
- if var not in self._properties:
- self._properties[var] = val
+ with open(path) as file:
+ for line in file:
+ matchobj = re.match(r'(\w+)=(.*)', line.strip())
+ if matchobj:
+ var = matchobj.group(1)
+ val = matchobj.group(2)
+ if var not in self._properties:
+ self._properties[var] = val
# Check mandatory properties.
for key in VERSION_PROPERTIES: