summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-i18n/mozc/files/mozc-2.23.2815.102-python-3_3.patch')
-rw-r--r--app-i18n/mozc/files/mozc-2.23.2815.102-python-3_3.patch583
1 files changed, 583 insertions, 0 deletions
diff --git a/app-i18n/mozc/files/mozc-2.23.2815.102-python-3_3.patch b/app-i18n/mozc/files/mozc-2.23.2815.102-python-3_3.patch
new file mode 100644
index 000000000000..a5c5a2dc8038
--- /dev/null
+++ b/app-i18n/mozc/files/mozc-2.23.2815.102-python-3_3.patch
@@ -0,0 +1,583 @@
+https://github.com/google/mozc/issues/462
+
+--- /src/dictionary/gen_pos_map.py
++++ /src/dictionary/gen_pos_map.py
+@@ -39,7 +39,7 @@
+ from build_tools import code_generator_util
+
+
+-HEADER = """// Copyright 2009 Google Inc. All Rights Reserved.
++HEADER = b"""// Copyright 2009 Google Inc. All Rights Reserved.
+ // Author: keni
+
+ #ifndef MOZC_DICTIONARY_POS_MAP_H_
+@@ -48,13 +48,13 @@
+ // POS conversion rules
+ const POSMap kPOSMap[] = {
+ """
+-FOOTER = """};
++FOOTER = b"""};
+
+ #endif // MOZC_DICTIONARY_POS_MAP_H_
+ """
+
+ def ParseUserPos(user_pos_file):
+- with open(user_pos_file, 'r') as stream:
++ with open(user_pos_file, 'rb') as stream:
+ stream = code_generator_util.SkipLineComment(stream)
+ stream = code_generator_util.ParseColumnStream(stream, num_column=2)
+ return dict((key, enum_value) for key, enum_value in stream)
+@@ -64,7 +64,7 @@
+ user_pos_map = ParseUserPos(user_pos_file)
+
+ result = {}
+- with open(third_party_pos_map_file, 'r') as stream:
++ with open(third_party_pos_map_file, 'rb') as stream:
+ stream = code_generator_util.SkipLineComment(stream)
+ for columns in code_generator_util.ParseColumnStream(stream, num_column=2):
+ third_party_pos_name, mozc_pos = (columns + [None])[:2]
+@@ -78,7 +78,7 @@
+ result[third_party_pos_name] = mozc_pos
+
+ # Create mozc_pos to mozc_pos map.
+- for key, value in user_pos_map.iteritems():
++ for key, value in user_pos_map.items():
+ if key in result:
+ assert (result[key] == value)
+ continue
+@@ -94,10 +94,10 @@
+ if value is None:
+ # Invalid PosType.
+ value = (
+- 'static_cast< ::mozc::user_dictionary::UserDictionary::PosType>(-1)')
++ b'static_cast< ::mozc::user_dictionary::UserDictionary::PosType>(-1)')
+ else:
+- value = '::mozc::user_dictionary::UserDictionary::' + value
+- output.write(' { %s, %s },\n' % (key, value))
++ value = b'::mozc::user_dictionary::UserDictionary::' + value
++ output.write(b' { %s, %s },\n' % (key, value))
+ output.write(FOOTER)
+
+
+@@ -121,7 +121,7 @@
+ pos_map = GeneratePosMap(options.third_party_pos_map_file,
+ options.user_pos_file)
+
+- with open(options.output, 'w') as stream:
++ with open(options.output, 'wb') as stream:
+ OutputPosMap(pos_map, stream)
+
+
+--- /src/dictionary/gen_pos_rewrite_rule.py
++++ /src/dictionary/gen_pos_rewrite_rule.py
+@@ -46,29 +46,34 @@
+
+
+ def LoadRewriteMapRule(filename):
+- fh = open(filename)
++ fh = open(filename, 'rb')
+ rule = []
+ for line in fh:
+- line = line.rstrip('\n')
+- if not line or line.startswith('#'):
++ line = line.rstrip(b'\n')
++ if not line or line.startswith(b'#'):
+ continue
+ fields = line.split()
+ rule.append([fields[0], fields[1]])
++ fh.close()
+ return rule
+
+
+ def ReadPOSID(id_file, special_pos_file):
+ pos_list = []
+
+- for line in open(id_file, 'r'):
++ fh = open(id_file, 'rb')
++ for line in fh:
+ fields = line.split()
+ pos_list.append(fields[1])
++ fh.close()
+
+- for line in open(special_pos_file, 'r'):
+- if len(line) <= 1 or line[0] == '#':
++ fh = open(special_pos_file, 'rb')
++ for line in fh:
++ if len(line) <= 1 or line[0:1] == b'#':
+ continue
+ fields = line.split()
+ pos_list.append(fields[0])
++ fh.close()
+
+ return pos_list
+
+@@ -112,7 +117,7 @@
+ ids.append(id)
+
+ with open(opts.output, 'wb') as f:
+- f.write(''.join(chr(id) for id in ids))
++ f.write(''.join(chr(id) for id in ids).encode('utf-8'))
+
+
+ if __name__ == '__main__':
+--- /src/dictionary/gen_suffix_data.py
++++ /src/dictionary/gen_suffix_data.py
+@@ -52,10 +52,10 @@
+ opts = _ParseOptions()
+
+ result = []
+- with open(opts.input, 'r') as stream:
++ with open(opts.input, 'rb') as stream:
+ for line in stream:
+- line = line.rstrip('\r\n')
+- fields = line.split('\t')
++ line = line.rstrip(b'\r\n')
++ fields = line.split(b'\t')
+ key = fields[0]
+ lid = int(fields[1])
+ rid = int(fields[2])
+@@ -63,7 +63,7 @@
+ value = fields[4]
+
+ if key == value:
+- value = ''
++ value = b''
+
+ result.append((key, value, lid, rid, cost))
+
+--- /src/dictionary/gen_user_pos_data.py
++++ /src/dictionary/gen_user_pos_data.py
+@@ -64,7 +64,7 @@
+ f.write(struct.pack('<H', conjugation_id))
+
+ serialized_string_array_builder.SerializeToFile(
+- sorted(string_index.iterkeys()), output_string_array)
++ sorted(x.encode('utf-8') for x in string_index.keys()), output_string_array)
+
+
+ def ParseOptions():
+@@ -100,7 +100,7 @@
+
+ if options.output_pos_list:
+ serialized_string_array_builder.SerializeToFile(
+- [pos for (pos, _) in user_pos.data], options.output_pos_list)
++ [pos.encode('utf-8') for (pos, _) in user_pos.data], options.output_pos_list)
+
+
+ if __name__ == '__main__':
+--- /src/dictionary/gen_zip_code_seed.py
++++ /src/dictionary/gen_zip_code_seed.py
+@@ -83,7 +83,7 @@
+ address = unicodedata.normalize('NFKC', self.address)
+ line = '\t'.join([zip_code, '0', '0', str(ZIP_CODE_COST),
+ address, ZIP_CODE_LABEL])
+- print line.encode('utf-8')
++ print(line.encode('utf-8'))
+
+
+ def ProcessZipCodeCSV(file_name):
+@@ -105,26 +105,26 @@
+
+ def ReadZipCodeEntries(zip_code, level1, level2, level3):
+ """Read zip code entries."""
+- return [ZipEntry(zip_code, u''.join([level1, level2, town]))
++ return [ZipEntry(zip_code, ''.join([level1, level2, town]))
+ for town in ParseTownName(level3)]
+
+
+ def ReadJigyosyoEntry(zip_code, level1, level2, level3, name):
+ """Read jigyosyo entry."""
+ return ZipEntry(zip_code,
+- u''.join([level1, level2, level3, u' ', name]))
++ ''.join([level1, level2, level3, ' ', name]))
+
+
+ def ParseTownName(level3):
+ """Parse town name."""
+- if level3.find(u'以下に掲載がない場合') != -1:
++ if level3.find('以下に掲載がない場合') != -1:
+ return ['']
+
+ assert CanParseAddress(level3), ('failed to be merged %s'
+ % level3.encode('utf-8'))
+
+ # We ignore additional information here.
+- level3 = re.sub(u'(.*)', u'', level3, re.U)
++ level3 = re.sub('(.*)', '', level3, re.U)
+
+ # For 地割, we have these cases.
+ # XX1地割
+@@ -134,7 +134,7 @@
+ # XX第1地割、XX第2地割、
+ # XX第1地割〜XX第2地割、
+ # We simply use XX for them.
+- chiwari_match = re.match(u'(\D*?)第?\d+地割.*', level3, re.U)
++ chiwari_match = re.match('(\D*?)第?\d+地割.*', level3, re.U)
+ if chiwari_match:
+ town = chiwari_match.group(1)
+ return [town]
+@@ -144,21 +144,21 @@
+ # -> XX町YY and (XX町)ZZ
+ # YY、ZZ
+ # -> YY and ZZ
+- chou_match = re.match(u'(.*町)?(.*)', level3, re.U)
++ chou_match = re.match('(.*町)?(.*)', level3, re.U)
+ if chou_match:
+- chou = u''
++ chou = ''
+ if chou_match.group(1):
+ chou = chou_match.group(1)
+ rests = chou_match.group(2)
+- return [chou + rest for rest in rests.split(u'、')]
++ return [chou + rest for rest in rests.split('、')]
+
+ return [level3]
+
+
+ def CanParseAddress(address):
+ """Return true for valid address."""
+- return (address.find(u'(') == -1 or
+- address.find(u')') != -1)
++ return (address.find('(') == -1 or
++ address.find(')') != -1)
+
+
+ def ParseOptions():
+--- /src/dictionary/zip_code_util.py
++++ /src/dictionary/zip_code_util.py
+@@ -86,11 +86,11 @@
+
+
+ _SPECIAL_CASES = [
+- SpecialMergeZip(u'5900111', u'大阪府', u'堺市中区', [u'三原台']),
+- SpecialMergeZip(u'8710046', u'大分県', u'中津市',
+- [u'金谷', u'西堀端', u'東堀端', u'古金谷']),
+- SpecialMergeZip(u'9218046', u'石川県', u'金沢市',
+- [u'大桑町', u'三小牛町']),
++ SpecialMergeZip('5900111', '大阪府', '堺市中区', ['三原台']),
++ SpecialMergeZip('8710046', '大分県', '中津市',
++ ['金谷', '西堀端', '東堀端', '古金谷']),
++ SpecialMergeZip('9218046', '石川県', '金沢市',
++ ['大桑町', '三小牛町']),
+ ]
+
+
+--- /src/gui/character_pad/data/gen_cp932_map.py
++++ /src/gui/character_pad/data/gen_cp932_map.py
+@@ -32,7 +32,6 @@
+
+ import re
+ import sys
+-import string
+
+ kUnicodePat = re.compile(r'0x[0-9A-Fa-f]{2,4}')
+ def IsValidUnicode(n):
+@@ -42,28 +41,29 @@
+ fh = open(sys.argv[1])
+ result = {}
+ for line in fh.readlines():
+- if line[0] is '#':
++ if line[0] == '#':
+ continue
+- array = string.split(line)
++ array = line.split()
+ sjis = array[0]
+ ucs2 = array[1]
+ if eval(sjis) < 32 or not IsValidUnicode(ucs2):
+ continue
+ result.setdefault(ucs2, sjis)
++ fh.close()
+
+ keys = sorted(result.keys())
+
+- print "struct CP932MapData {"
+- print " unsigned int ucs4;"
+- print " unsigned short int sjis;"
+- print "};"
+- print ""
+- print "static const size_t kCP932MapDataSize = %d;" % (len(keys))
+- print "static const CP932MapData kCP932MapData[] = {"
++ print("struct CP932MapData {")
++ print(" unsigned int ucs4;")
++ print(" unsigned short int sjis;")
++ print("};")
++ print("")
++ print("static const size_t kCP932MapDataSize = %d;" % (len(keys)))
++ print("static const CP932MapData kCP932MapData[] = {")
+ for n in keys:
+- print " { %s, %s }," % (n ,result[n])
+- print " { 0, 0 }";
+- print "};"
++ print(" { %s, %s }," % (n ,result[n]))
++ print(" { 0, 0 }");
++ print("};")
+
+ if __name__ == "__main__":
+ main()
+--- /src/gui/character_pad/data/gen_local_character_map.py
++++ /src/gui/character_pad/data/gen_local_character_map.py
+@@ -30,7 +30,6 @@
+
+ __author__ = "taku"
+
+-import string
+ import re
+ import sys
+
+@@ -43,9 +42,9 @@
+ fh = open(filename)
+ result = []
+ for line in fh.readlines():
+- if line[0] is '#':
++ if line[0] == '#':
+ continue
+- array = string.split(line)
++ array = line.split()
+ jis = array[0].replace('0x', '')
+ ucs2 = array[1].replace('0x', '')
+ if len(jis) == 2:
+@@ -53,6 +52,7 @@
+
+ if IsValidUnicode(ucs2):
+ result.append([jis, ucs2])
++ fh.close()
+
+ return ["JISX0201", result]
+
+@@ -60,13 +60,14 @@
+ fh = open(filename)
+ result = []
+ for line in fh.readlines():
+- if line[0] is '#':
++ if line[0] == '#':
+ continue
+ array = line.split()
+ jis = array[1].replace('0x', '')
+ ucs2 = array[2].replace('0x', '')
+ if IsValidUnicode(ucs2):
+ result.append([jis, ucs2])
++ fh.close()
+
+ return ["JISX0208", result]
+
+@@ -74,13 +75,14 @@
+ fh = open(filename)
+ result = []
+ for line in fh.readlines():
+- if line[0] is '#':
++ if line[0] == '#':
+ continue
+ array = line.split()
+ jis = array[0].replace('0x', '')
+ ucs2 = array[1].replace('0x', '')
+ if IsValidUnicode(ucs2):
+ result.append([jis, ucs2])
++ fh.close()
+
+ return ["JISX0212", result]
+
+@@ -88,7 +90,7 @@
+ fh = open(filename)
+ result = []
+ for line in fh.readlines():
+- if line[0] is '#':
++ if line[0] == '#':
+ continue
+ array = line.split()
+ sjis = array[0].replace('0x', '')
+@@ -100,19 +102,20 @@
+
+ if IsValidUnicode(ucs2):
+ result.append([sjis, ucs2])
++ fh.close()
+
+ return ["CP932", result]
+
+ def Output(arg):
+ name = arg[0]
+ result = arg[1]
+- print "static const size_t k%sMapSize = %d;" % (name, len(result))
+- print "static const mozc::gui::CharacterPalette::LocalCharacterMap k%sMap[] = {" % (name)
++ print("static const size_t k%sMapSize = %d;" % (name, len(result)))
++ print("static const mozc::gui::CharacterPalette::LocalCharacterMap k%sMap[] = {" % (name))
+ for n in result:
+- print " { 0x%s, 0x%s }," % (n[0] ,n[1])
+- print " { 0, 0 }";
+- print "};"
+- print ""
++ print(" { 0x%s, 0x%s }," % (n[0] ,n[1]))
++ print(" { 0, 0 }");
++ print("};")
++ print("")
+
+ if __name__ == "__main__":
+ Output(LoadJISX0201(sys.argv[1]))
+--- /src/gui/character_pad/data/gen_unicode_blocks.py
++++ /src/gui/character_pad/data/gen_unicode_blocks.py
+@@ -33,13 +33,13 @@
+ import sys
+ import re
+
+-re = re.compile('^(.....?)\.\.(.....?); (.+)')
++re = re.compile(r'^(.....?)\.\.(.....?); (.+)')
+
+ def main():
+- print "static const mozc::gui::CharacterPalette::UnicodeBlock kUnicodeBlockTable[] = {"
++ print("static const mozc::gui::CharacterPalette::UnicodeBlock kUnicodeBlockTable[] = {")
+ fh = open(sys.argv[1])
+ for line in fh.readlines():
+- if line[0] is '#':
++ if line[0] == '#':
+ continue
+ m = re.match(line)
+ if m is not None:
+@@ -47,11 +47,12 @@
+ end = int(m.group(2), 16)
+ name = m.group(3)
+ if start <= 0x2FFFF and end <= 0x2FFFF:
+- print " { \"%s\", { %d, %d } }," % (name, start, end)
++ print(" { \"%s\", { %d, %d } }," % (name, start, end))
++ fh.close()
+
+- print " { NULL, { 0, 0 } }"
+- print "};"
+- print ""
++ print(" { NULL, { 0, 0 } }")
++ print("};")
++ print("")
+
+ if __name__ == "__main__":
+ main()
+--- /src/gui/character_pad/data/gen_unicode_data.py
++++ /src/gui/character_pad/data/gen_unicode_data.py
+@@ -46,18 +46,19 @@
+ code = int(code, 16)
+ if code < 0x2FFFF:
+ results.append(" { %d, \"%s\" }," % (code, desc))
++ fh.close()
+
+- print "struct UnicodeData {";
+- print " char32 ucs4;";
+- print " const char *description;";
+- print "};";
+- print ""
+- print "static const size_t kUnicodeDataSize = %d;" % (len(results))
+- print "static const UnicodeData kUnicodeData[] = {";
++ print("struct UnicodeData {");
++ print(" char32 ucs4;");
++ print(" const char *description;");
++ print("};");
++ print("")
++ print("static const size_t kUnicodeDataSize = %d;" % (len(results)))
++ print("static const UnicodeData kUnicodeData[] = {");
+ for line in results:
+- print line;
+- print " { 0, NULL }";
+- print "};";
++ print(line);
++ print(" { 0, NULL }");
++ print("};");
+
+ if __name__ == "__main__":
+ main()
+--- /src/gui/character_pad/data/gen_unihan_data.py
++++ /src/gui/character_pad/data/gen_unihan_data.py
+@@ -31,35 +31,34 @@
+ __author__ = "taku"
+
+ import re
+-import string
+ import sys
+ rs = {}
+
+ def Escape(n):
+- if n is not "NULL":
++ if n != "NULL":
+ return "\"%s\"" % (n)
+ else:
+ return "NULL"
+
+ def GetCode(n):
+- if n is not "NULL":
+- n = string.replace(n, '0-', 'JIS X 0208: 0x')
+- n = string.replace(n, '1-', 'JIS X 0212: 0x')
+- n = string.replace(n, '3-', 'JIS X 0213: 0x')
+- n = string.replace(n, '4-', 'JIS X 0213: 0x')
+- n = string.replace(n, 'A-', 'Vendors Ideographs: 0x')
+- n = string.replace(n, '3A', 'JIS X 0213 2000: 0x')
++ if n != "NULL":
++ n = n.replace('0-', 'JIS X 0208: 0x')
++ n = n.replace('1-', 'JIS X 0212: 0x')
++ n = n.replace('3-', 'JIS X 0213: 0x')
++ n = n.replace('4-', 'JIS X 0213: 0x')
++ n = n.replace('A-', 'Vendors Ideographs: 0x')
++ n = n.replace('3A', 'JIS X 0213 2000: 0x')
+ return "\"%s\"" % n
+ else:
+ return "NULL"
+
+ def GetRadical(n):
+ pat = re.compile(r'^(\d+)\.')
+- if n is not "NULL":
++ if n != "NULL":
+ m = pat.match(n)
+ if m:
+ result = rs[m.group(1)]
+- return "\"%s\"" % (result.encode('string_escape'))
++ return "\"%s\"" % result
+ else:
+ return "NULL"
+ else:
+@@ -73,6 +72,7 @@
+ id = array[1]
+ radical = array[2]
+ rs[id] = radical
++ fh.close()
+
+ dic = {}
+ pat = re.compile(r'^U\+(\S+)\s+(kTotalStrokes|kJapaneseKun|kJapaneseOn|kRSUnicode|kIRG_JSource)\t(.+)')
+@@ -86,23 +86,24 @@
+ n = int(m.group(1), 16)
+ if n <= 65536:
+ dic.setdefault(key, {}).setdefault(field, value)
++ fh.close()
+
+ keys = sorted(dic.keys())
+
+- print "struct UnihanData {";
+- print " unsigned int ucs4;";
++ print("struct UnihanData {");
++ print(" unsigned int ucs4;");
+ # Since the total strokes defined in Unihan data is Chinese-based
+ # number, we can't use it.
+ # print " unsigned char total_strokes;";
+- print " const char *japanese_kun;";
+- print " const char *japanese_on;";
++ print(" const char *japanese_kun;");
++ print(" const char *japanese_on;");
+ # Since the radical information defined in Unihan data is Chinese-based
+ # number, we can't use it.
+ # print " const char *radical;";
+- print " const char *IRG_jsource;";
+- print "};"
+- print "static const size_t kUnihanDataSize = %d;" % (len(keys))
+- print "static const UnihanData kUnihanData[] = {"
++ print(" const char *IRG_jsource;");
++ print("};")
++ print("static const size_t kUnihanDataSize = %d;" % (len(keys)))
++ print("static const UnihanData kUnihanData[] = {")
+
+ for key in keys:
+ total_strokes = dic[key].get("kTotalStrokes", "0")
+@@ -111,9 +112,9 @@
+ rad = GetRadical(dic[key].get("kRSUnicode", "NULL"))
+ code = GetCode(dic[key].get("kIRG_JSource", "NULL"))
+ # print " { 0x%s, %s, %s, %s, %s, %s }," % (key, total_strokes, kun, on, rad, code)
+- print " { 0x%s, %s, %s, %s }," % (key, kun, on, code)
++ print(" { 0x%s, %s, %s, %s }," % (key, kun, on, code))
+
+- print "};"
++ print("};")
+
+ if __name__ == "__main__":
+ main()