grit: use print_function everywhere
Migrate all print statements to functions, and have all modules import
the print_function future even if they aren't using print directly.
This will help keep bad print statements from slipping back in.
Bug: 983071
Test: `./grit/test_suite_all.py` passes
Change-Id: I818d2b69c1280ad0f0f7ef02acea8a68444920d3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1698162
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Andrew Grieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#676480}
diff --git a/tools/grit/grit.py b/tools/grit/grit.py
index d8074e4..98b99bb 100755
--- a/tools/grit/grit.py
+++ b/tools/grit/grit.py
@@ -6,6 +6,8 @@
'''Bootstrapping for GRIT.
'''
+from __future__ import print_function
+
import sys
import grit.grit_runner
diff --git a/tools/grit/grit/clique.py b/tools/grit/grit/clique.py
index f5549d8..cd5b44c 100644
--- a/tools/grit/grit/clique.py
+++ b/tools/grit/grit/clique.py
@@ -6,6 +6,8 @@
collections of cliques (uber-cliques).
'''
+from __future__ import print_function
+
import re
import types
@@ -206,10 +208,12 @@
'''
def Callback(id, structure):
if id not in self.cliques_:
- if debug: print "Ignoring translation #%s" % id
+ if debug:
+ print("Ignoring translation #%s" % id)
return
- if debug: print "Adding translation #%s" % id
+ if debug:
+ print("Adding translation #%s" % id)
# We fetch placeholder information from the original message (the XTB file
# only contains placeholder names).
@@ -468,8 +472,8 @@
original = self.MessageForLanguage(self.source_language, False)
if len(original.GetPlaceholders()) != len(translation.GetPlaceholders()):
- print ("ERROR: '%s' translation of message id %s does not match" %
- (language, translation.GetId()))
+ print("ERROR: '%s' translation of message id %s does not match" %
+ (language, translation.GetId()))
assert False
transl_msg = tclib.Translation(id=self.GetId(),
@@ -478,7 +482,7 @@
if (self.custom_type and
not self.custom_type.ValidateAndModify(language, transl_msg)):
- print "WARNING: %s translation failed validation: %s" % (
- language, transl_msg.GetId())
+ print("WARNING: %s translation failed validation: %s" %
+ (language, transl_msg.GetId()))
self.clique[language] = transl_msg
diff --git a/tools/grit/grit/clique_unittest.py b/tools/grit/grit/clique_unittest.py
index ff2c3a3..99f3f11 100755
--- a/tools/grit/grit/clique_unittest.py
+++ b/tools/grit/grit/clique_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for grit.clique'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/constants.py b/tools/grit/grit/constants.py
index 02f2928..3a05c11 100644
--- a/tools/grit/grit/constants.py
+++ b/tools/grit/grit/constants.py
@@ -5,6 +5,7 @@
'''Constant definitions for GRIT.
'''
+from __future__ import print_function
# This is the Icelandic noun meaning "grit" and is used to check that our
# input files are in the correct encoding. The middle character gets encoded
diff --git a/tools/grit/grit/exception.py b/tools/grit/grit/exception.py
index 1a1bed34..ad7f087 100644
--- a/tools/grit/grit/exception.py
+++ b/tools/grit/grit/exception.py
@@ -5,6 +5,8 @@
'''Exception types for GRIT.
'''
+from __future__ import print_function
+
class Base(Exception):
'''A base exception that uses the class's docstring in addition to any
user-provided message as the body of the Base.
diff --git a/tools/grit/grit/extern/BogoFP.py b/tools/grit/grit/extern/BogoFP.py
index 5af21fd..fc90145 100644
--- a/tools/grit/grit/extern/BogoFP.py
+++ b/tools/grit/grit/extern/BogoFP.py
@@ -9,6 +9,7 @@
grit.py -h grit.extern.BogoFP xmb /tmp/foo
"""
+from __future__ import print_function
import grit.extern.FP
diff --git a/tools/grit/grit/extern/FP.py b/tools/grit/grit/extern/FP.py
index 0932f75..f4ec4d9 100644
--- a/tools/grit/grit/extern/FP.py
+++ b/tools/grit/grit/extern/FP.py
@@ -2,6 +2,8 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+from __future__ import print_function
+
try:
import hashlib
_new_md5 = hashlib.md5
@@ -14,7 +16,7 @@
Usage:
from extern import FP
- print 'Fingerprint is %ld' % FP.FingerPrint('Hello world!')
+ print('Fingerprint is %ld' % FP.FingerPrint('Hello world!'))
"""
diff --git a/tools/grit/grit/extern/tclib.py b/tools/grit/grit/extern/tclib.py
index bbefd7f..9952a87 100644
--- a/tools/grit/grit/extern/tclib.py
+++ b/tools/grit/grit/extern/tclib.py
@@ -10,6 +10,8 @@
# for creating Windows .rc and .h files. These are the only parts needed by
# the Chrome build process.
+from __future__ import print_function
+
from grit.extern import FP
# This module assumes that within a bundle no two messages can have the
diff --git a/tools/grit/grit/format/android_xml.py b/tools/grit/grit/format/android_xml.py
index 2d878673..c969eae 100644
--- a/tools/grit/grit/format/android_xml.py
+++ b/tools/grit/grit/format/android_xml.py
@@ -59,6 +59,8 @@
</plurals>
"""
+from __future__ import print_function
+
import os
import re
import types
diff --git a/tools/grit/grit/format/android_xml_unittest.py b/tools/grit/grit/format/android_xml_unittest.py
index 6f496b61..1d1a7847 100755
--- a/tools/grit/grit/format/android_xml_unittest.py
+++ b/tools/grit/grit/format/android_xml_unittest.py
@@ -5,6 +5,8 @@
"""Unittest for android_xml.py."""
+from __future__ import print_function
+
import os
import StringIO
import sys
diff --git a/tools/grit/grit/format/c_format.py b/tools/grit/grit/format/c_format.py
index 6d5d9e6..e944b7f 100644
--- a/tools/grit/grit/format/c_format.py
+++ b/tools/grit/grit/format/c_format.py
@@ -5,6 +5,8 @@
"""Formats as a .C file for compilation.
"""
+from __future__ import print_function
+
import os
import re
import types
diff --git a/tools/grit/grit/format/c_format_unittest.py b/tools/grit/grit/format/c_format_unittest.py
index ba1c5c71..dd50788 100755
--- a/tools/grit/grit/format/c_format_unittest.py
+++ b/tools/grit/grit/format/c_format_unittest.py
@@ -6,6 +6,8 @@
"""Unittest for c_format.py.
"""
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/format/chrome_messages_json.py b/tools/grit/grit/format/chrome_messages_json.py
index 43853547..6af08b45 100644
--- a/tools/grit/grit/format/chrome_messages_json.py
+++ b/tools/grit/grit/format/chrome_messages_json.py
@@ -5,6 +5,8 @@
"""Formats as a .json file that can be used to localize Google Chrome
extensions."""
+from __future__ import print_function
+
from json import JSONEncoder
import re
import types
diff --git a/tools/grit/grit/format/chrome_messages_json_unittest.py b/tools/grit/grit/format/chrome_messages_json_unittest.py
index ae9c7a6..87b6588 100755
--- a/tools/grit/grit/format/chrome_messages_json_unittest.py
+++ b/tools/grit/grit/format/chrome_messages_json_unittest.py
@@ -6,6 +6,8 @@
"""Unittest for chrome_messages_json.py.
"""
+from __future__ import print_function
+
import json
import os
import sys
diff --git a/tools/grit/grit/format/data_pack.py b/tools/grit/grit/format/data_pack.py
index 80599b9..d54f4aa 100755
--- a/tools/grit/grit/format/data_pack.py
+++ b/tools/grit/grit/format/data_pack.py
@@ -7,6 +7,8 @@
files.
"""
+from __future__ import print_function
+
import collections
import exceptions
import os
@@ -276,7 +278,7 @@
if key not in whitelist]
if not suppress_removed_key_output:
for key in removed_keys:
- print 'RePackFromDataPackStrings Removed Key:', key
+ print('RePackFromDataPackStrings Removed Key:', key)
else:
resources.update(input_resources)
@@ -292,7 +294,7 @@
WriteDataPack(data, 'datapack1.pak', UTF8)
data2 = {1000: 'test', 5: 'five'}
WriteDataPack(data2, 'datapack2.pak', UTF8)
- print 'wrote datapack1 and datapack2 to current directory.'
+ print('wrote datapack1 and datapack2 to current directory.')
if __name__ == '__main__':
diff --git a/tools/grit/grit/format/data_pack_unittest.py b/tools/grit/grit/format/data_pack_unittest.py
index ba36590..4bb60a2 100755
--- a/tools/grit/grit/format/data_pack_unittest.py
+++ b/tools/grit/grit/format/data_pack_unittest.py
@@ -5,6 +5,7 @@
'''Unit tests for grit.format.data_pack'''
+from __future__ import print_function
import os
import sys
diff --git a/tools/grit/grit/format/gen_predetermined_ids.py b/tools/grit/grit/format/gen_predetermined_ids.py
index 57a6047..1b585f7 100755
--- a/tools/grit/grit/format/gen_predetermined_ids.py
+++ b/tools/grit/grit/format/gen_predetermined_ids.py
@@ -9,6 +9,8 @@
a while and its output checked in. See tools/gritsettings/README.md for details.
"""
+from __future__ import print_function
+
import fnmatch
import os
import re
@@ -128,7 +130,7 @@
output_resource_map = GenerateResourceMapping(original_resources,
ordered_resource_ids)
for res_id in sorted(output_resource_map.keys()):
- print "{} {}".format(output_resource_map[res_id], res_id)
+ print(output_resource_map[res_id], res_id)
def main(argv):
diff --git a/tools/grit/grit/format/gen_predetermined_ids_unittest.py b/tools/grit/grit/format/gen_predetermined_ids_unittest.py
index 0866147..86820efb 100755
--- a/tools/grit/grit/format/gen_predetermined_ids_unittest.py
+++ b/tools/grit/grit/format/gen_predetermined_ids_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for the gen_predetermined_ids module.'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/format/gzip_string.py b/tools/grit/grit/format/gzip_string.py
index 4f54aac1..4f8bc64 100644
--- a/tools/grit/grit/format/gzip_string.py
+++ b/tools/grit/grit/format/gzip_string.py
@@ -3,6 +3,9 @@
# found in the LICENSE file.
"""Provides gzip utilities for strings.
"""
+
+from __future__ import print_function
+
import cStringIO
import gzip
import subprocess
diff --git a/tools/grit/grit/format/gzip_string_unittest.py b/tools/grit/grit/format/gzip_string_unittest.py
index a920693..f7e53fd 100755
--- a/tools/grit/grit/format/gzip_string_unittest.py
+++ b/tools/grit/grit/format/gzip_string_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for grit.format.gzip_string'''
+from __future__ import print_function
+
import gzip
import io
import os
diff --git a/tools/grit/grit/format/html_inline.py b/tools/grit/grit/format/html_inline.py
index 88ad571..7e44da7 100755
--- a/tools/grit/grit/format/html_inline.py
+++ b/tools/grit/grit/format/html_inline.py
@@ -10,6 +10,8 @@
dependencies. It recursively inlines the included files.
"""
+from __future__ import print_function
+
import os
import re
import sys
@@ -587,8 +589,8 @@
def main():
if len(sys.argv) <= 2:
- print "Flattens a HTML file by inlining its external resources.\n"
- print "html_inline.py inputfile outputfile"
+ print("Flattens a HTML file by inlining its external resources.\n")
+ print("html_inline.py inputfile outputfile")
else:
InlineToFile(sys.argv[1], sys.argv[2], None)
diff --git a/tools/grit/grit/format/html_inline_unittest.py b/tools/grit/grit/format/html_inline_unittest.py
index 96f1e26..37c6339f 100755
--- a/tools/grit/grit/format/html_inline_unittest.py
+++ b/tools/grit/grit/format/html_inline_unittest.py
@@ -5,6 +5,7 @@
'''Unit tests for grit.format.html_inline'''
+from __future__ import print_function
import os
import re
diff --git a/tools/grit/grit/format/minifier.py b/tools/grit/grit/format/minifier.py
index a45b5545..011cbea 100644
--- a/tools/grit/grit/format/minifier.py
+++ b/tools/grit/grit/format/minifier.py
@@ -3,6 +3,8 @@
# found in the LICENSE file.
"""Framework for stripping whitespace and comments from resource files"""
+from __future__ import print_function
+
from os import path
import subprocess
import sys
@@ -26,7 +28,7 @@
stderr=subprocess.PIPE)
(stdout, stderr) = p.communicate(source)
if p.returncode != 0:
- print 'Minification failed for %s' % filename
- print stderr
+ print('Minification failed for %s' % filename)
+ print(stderr)
sys.exit(p.returncode)
return stdout
diff --git a/tools/grit/grit/format/policy_templates_json.py b/tools/grit/grit/format/policy_templates_json.py
index f4531f5..2f9330b 100644
--- a/tools/grit/grit/format/policy_templates_json.py
+++ b/tools/grit/grit/format/policy_templates_json.py
@@ -5,6 +5,8 @@
"""Translates policy_templates.json files.
"""
+from __future__ import print_function
+
from grit.node import structure
diff --git a/tools/grit/grit/format/policy_templates_json_unittest.py b/tools/grit/grit/format/policy_templates_json_unittest.py
index d3816ad30..64eae1b 100755
--- a/tools/grit/grit/format/policy_templates_json_unittest.py
+++ b/tools/grit/grit/format/policy_templates_json_unittest.py
@@ -7,6 +7,8 @@
"""Unittest for policy_templates_json.py.
"""
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/format/rc.py b/tools/grit/grit/format/rc.py
index e7d716d3..7037278 100644
--- a/tools/grit/grit/format/rc.py
+++ b/tools/grit/grit/format/rc.py
@@ -5,6 +5,8 @@
'''Support for formatting an RC file for compilation.
'''
+from __future__ import print_function
+
import os
import types
import re
@@ -260,7 +262,7 @@
if _LANGUAGE_CHARSET_PAIR.has_key(language):
return _LANGUAGE_CHARSET_PAIR[language]
if language != 'no-specific-language':
- print 'Warning:GetLangCharsetPair() found undefined language %s' % language
+ print('Warning:GetLangCharsetPair() found undefined language %s' % language)
return ''
def GetLangDirectivePair(language):
@@ -271,7 +273,7 @@
# function should only get called when output is being formatted,
# and at that point we would not want to get
# 'no-specific-language' passed as the language.
- print 'Warning:GetLangDirectivePair() found undefined language %s' % language
+ print('Warning:GetLangDirectivePair() found undefined language %s' % language)
return 'unknown language: see tools/grit/format/rc.py'
def GetLangIdHex(language):
@@ -280,7 +282,7 @@
lang_id = '0x' + langcharset[0:4]
return lang_id
if language != 'no-specific-language':
- print 'Warning:GetLangIdHex() found undefined language %s' % language
+ print('Warning:GetLangIdHex() found undefined language %s' % language)
return ''
@@ -290,7 +292,7 @@
charset_decimal = int(langcharset[4:], 16)
return str(charset_decimal)
if language != 'no-specific-language':
- print 'Warning:GetCharsetIdDecimal() found undefined language %s' % language
+ print('Warning:GetCharsetIdDecimal() found undefined language %s' % language)
return ''
diff --git a/tools/grit/grit/format/rc_header.py b/tools/grit/grit/format/rc_header.py
index da2f156..5a789fb 100644
--- a/tools/grit/grit/format/rc_header.py
+++ b/tools/grit/grit/format/rc_header.py
@@ -5,6 +5,8 @@
'''Item formatters for RC headers.
'''
+from __future__ import print_function
+
from grit.node import message
diff --git a/tools/grit/grit/format/rc_header_unittest.py b/tools/grit/grit/format/rc_header_unittest.py
index f709f934..ab2d16d 100755
--- a/tools/grit/grit/format/rc_header_unittest.py
+++ b/tools/grit/grit/format/rc_header_unittest.py
@@ -8,6 +8,8 @@
# GRD samples exceed the 80 character limit.
# pylint: disable-msg=C6310
+from __future__ import print_function
+
import os
import sys
import unittest
diff --git a/tools/grit/grit/format/rc_unittest.py b/tools/grit/grit/format/rc_unittest.py
index 497f315c..43714ad62 100755
--- a/tools/grit/grit/format/rc_unittest.py
+++ b/tools/grit/grit/format/rc_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for grit.format.rc'''
+from __future__ import print_function
+
import os
import re
import sys
diff --git a/tools/grit/grit/format/resource_map.py b/tools/grit/grit/format/resource_map.py
index c9a73c46..95a8b83 100644
--- a/tools/grit/grit/format/resource_map.py
+++ b/tools/grit/grit/format/resource_map.py
@@ -6,6 +6,8 @@
resource_map_source files. A resource map is a mapping between resource names
(string) and the internal resource ID.'''
+from __future__ import print_function
+
import os
from functools import partial
diff --git a/tools/grit/grit/format/resource_map_unittest.py b/tools/grit/grit/format/resource_map_unittest.py
index cd290a71..ec42319 100755
--- a/tools/grit/grit/format/resource_map_unittest.py
+++ b/tools/grit/grit/format/resource_map_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for grit.format.resource_map'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/gather/admin_template.py b/tools/grit/grit/gather/admin_template.py
index 1b8340a..15876b4 100644
--- a/tools/grit/grit/gather/admin_template.py
+++ b/tools/grit/grit/gather/admin_template.py
@@ -5,6 +5,8 @@
'''Gatherer for administrative template files.
'''
+from __future__ import print_function
+
import re
from grit.gather import regexp
diff --git a/tools/grit/grit/gather/admin_template_unittest.py b/tools/grit/grit/gather/admin_template_unittest.py
index c63c08f..ff065c3 100755
--- a/tools/grit/grit/gather/admin_template_unittest.py
+++ b/tools/grit/grit/gather/admin_template_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for the admin template gatherer.'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/gather/chrome_html.py b/tools/grit/grit/gather/chrome_html.py
index 5e90980..a0d6c47 100644
--- a/tools/grit/grit/gather/chrome_html.py
+++ b/tools/grit/grit/gather/chrome_html.py
@@ -14,6 +14,8 @@
referencing all available images.
"""
+from __future__ import print_function
+
import os
import re
diff --git a/tools/grit/grit/gather/chrome_html_unittest.py b/tools/grit/grit/gather/chrome_html_unittest.py
index f21caf3..5406a8c 100755
--- a/tools/grit/grit/gather/chrome_html_unittest.py
+++ b/tools/grit/grit/gather/chrome_html_unittest.py
@@ -5,6 +5,7 @@
'''Unit tests for grit.gather.chrome_html'''
+from __future__ import print_function
import os
import re
diff --git a/tools/grit/grit/gather/chrome_scaled_image.py b/tools/grit/grit/gather/chrome_scaled_image.py
index 91116ab..d077274 100644
--- a/tools/grit/grit/gather/chrome_scaled_image.py
+++ b/tools/grit/grit/gather/chrome_scaled_image.py
@@ -5,6 +5,8 @@
'''Gatherer for <structure type="chrome_scaled_image">.
'''
+from __future__ import print_function
+
import os
import struct
diff --git a/tools/grit/grit/gather/chrome_scaled_image_unittest.py b/tools/grit/grit/gather/chrome_scaled_image_unittest.py
index 6a6b3a4..cbc5b815 100755
--- a/tools/grit/grit/gather/chrome_scaled_image_unittest.py
+++ b/tools/grit/grit/gather/chrome_scaled_image_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for ChromeScaledImage.'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/gather/interface.py b/tools/grit/grit/gather/interface.py
index 5d3ef1d..6149167 100644
--- a/tools/grit/grit/gather/interface.py
+++ b/tools/grit/grit/gather/interface.py
@@ -5,6 +5,7 @@
'''Interface for all gatherers.
'''
+from __future__ import print_function
import os.path
import types
diff --git a/tools/grit/grit/gather/json_loader.py b/tools/grit/grit/gather/json_loader.py
index ca1f435..ee0d932b 100644
--- a/tools/grit/grit/gather/json_loader.py
+++ b/tools/grit/grit/gather/json_loader.py
@@ -2,6 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+from __future__ import print_function
from grit.gather import interface
diff --git a/tools/grit/grit/gather/policy_json.py b/tools/grit/grit/gather/policy_json.py
index 6e67212..0aee2c6d 100644
--- a/tools/grit/grit/gather/policy_json.py
+++ b/tools/grit/grit/gather/policy_json.py
@@ -5,6 +5,8 @@
'''Support for "policy_templates.json" format used by the policy template
generator as a source for generating ADM,ADMX,etc files.'''
+from __future__ import print_function
+
import json
import types
import sys
@@ -275,7 +277,7 @@
self.text_ = self._LoadInputFile()
if util.IsExtraVerbose():
- print self.text_
+ print(self.text_)
self.data = eval(self.text_)
diff --git a/tools/grit/grit/gather/policy_json_unittest.py b/tools/grit/grit/gather/policy_json_unittest.py
index 187dac1c..b48e7fc 100755
--- a/tools/grit/grit/gather/policy_json_unittest.py
+++ b/tools/grit/grit/gather/policy_json_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for grit.gather.policy_json'''
+from __future__ import print_function
+
import json
import os
import re
diff --git a/tools/grit/grit/gather/rc.py b/tools/grit/grit/gather/rc.py
index a332758..03135bdd 100644
--- a/tools/grit/grit/gather/rc.py
+++ b/tools/grit/grit/gather/rc.py
@@ -5,6 +5,7 @@
'''Support for gathering resources from RC files.
'''
+from __future__ import print_function
import re
diff --git a/tools/grit/grit/gather/rc_unittest.py b/tools/grit/grit/gather/rc_unittest.py
index c4be35e..949f109 100755
--- a/tools/grit/grit/gather/rc_unittest.py
+++ b/tools/grit/grit/gather/rc_unittest.py
@@ -5,6 +5,7 @@
'''Unit tests for grit.gather.rc'''
+from __future__ import print_function
import os
import sys
diff --git a/tools/grit/grit/gather/regexp.py b/tools/grit/grit/gather/regexp.py
index de64c17..d06bf9c 100644
--- a/tools/grit/grit/gather/regexp.py
+++ b/tools/grit/grit/gather/regexp.py
@@ -5,6 +5,8 @@
'''A baseclass for simple gatherers based on regular expressions.
'''
+from __future__ import print_function
+
import re
from grit.gather import skeleton_gatherer
diff --git a/tools/grit/grit/gather/skeleton_gatherer.py b/tools/grit/grit/gather/skeleton_gatherer.py
index 564ccce..c6127d11 100644
--- a/tools/grit/grit/gather/skeleton_gatherer.py
+++ b/tools/grit/grit/gather/skeleton_gatherer.py
@@ -6,6 +6,8 @@
list.
'''
+from __future__ import print_function
+
import types
from grit.gather import interface
diff --git a/tools/grit/grit/gather/tr_html.py b/tools/grit/grit/gather/tr_html.py
index f0bd132..ba59ff65 100644
--- a/tools/grit/grit/gather/tr_html.py
+++ b/tools/grit/grit/gather/tr_html.py
@@ -6,6 +6,7 @@
portions. We wanted to reuse extern.tclib.api.handlers.html.TCHTMLParser
but this proved impossible due to the fact that the TotalRecall HTML templates
are in general quite far from parseable HTML and the TCHTMLParser derives
+
from HTMLParser.HTMLParser which requires relatively well-formed HTML. Some
examples of "HTML" from the TotalRecall HTML templates that wouldn't be
parseable include things like:
@@ -48,6 +49,7 @@
extern.tclib.api.handlers.html.TCHTMLParser.
'''
+from __future__ import print_function
import re
import types
@@ -208,7 +210,7 @@
_DEBUG = 0
def _DebugPrint(text):
if _DEBUG:
- print text.encode('utf-8')
+ print(text.encode('utf-8'))
class HtmlChunks(object):
diff --git a/tools/grit/grit/gather/tr_html_unittest.py b/tools/grit/grit/gather/tr_html_unittest.py
index 3400ad6f..bc4cc61 100755
--- a/tools/grit/grit/gather/tr_html_unittest.py
+++ b/tools/grit/grit/gather/tr_html_unittest.py
@@ -5,6 +5,7 @@
'''Unit tests for grit.gather.tr_html'''
+from __future__ import print_function
import os
import sys
diff --git a/tools/grit/grit/gather/txt.py b/tools/grit/grit/gather/txt.py
index a2a6cfc..e5c10ab 100644
--- a/tools/grit/grit/gather/txt.py
+++ b/tools/grit/grit/gather/txt.py
@@ -5,6 +5,8 @@
'''Supports making amessage from a text file.
'''
+from __future__ import print_function
+
from grit.gather import interface
from grit import tclib
diff --git a/tools/grit/grit/gather/txt_unittest.py b/tools/grit/grit/gather/txt_unittest.py
index 80586526..35150939 100755
--- a/tools/grit/grit/gather/txt_unittest.py
+++ b/tools/grit/grit/gather/txt_unittest.py
@@ -5,6 +5,7 @@
'''Unit tests for TxtFile gatherer'''
+from __future__ import print_function
import os
import sys
diff --git a/tools/grit/grit/grd_reader.py b/tools/grit/grit/grd_reader.py
index e0ccdac..200b6d1 100755
--- a/tools/grit/grit/grd_reader.py
+++ b/tools/grit/grit/grd_reader.py
@@ -6,6 +6,8 @@
'''Class for reading GRD files into memory, without processing them.
'''
+from __future__ import print_function
+
import os.path
import types
import xml.sax
@@ -46,14 +48,14 @@
def startElement(self, name, attrs):
if self.ignore_depth or name in self.tags_to_ignore:
if self.debug and self.ignore_depth == 0:
- print "Ignoring element %s and its children" % name
+ print("Ignoring element %s and its children" % name)
self.ignore_depth += 1
return
if self.debug:
attr_list = ' '.join('%s="%s"' % kv for kv in attrs.items())
- print ("Starting parsing of element %s with attributes %r" %
- (name, attr_list or '(none)'))
+ print("Starting parsing of element %s with attributes %r" %
+ (name, attr_list or '(none)'))
typeattr = attrs.get('type')
node = mapping.ElementToClass(name, typeattr)()
@@ -98,7 +100,7 @@
self.source = oldsource
if self.debug:
- print "End parsing of element %s" % name
+ print("End parsing of element %s" % name)
self.stack.pop().EndParsing()
if name == self.stop_after:
@@ -202,7 +204,7 @@
pass
except:
if not debug:
- print "parse exception: run GRIT with the -x flag to debug .grd problems"
+ print("parse exception: run GRIT with the -x flag to debug .grd problems")
raise
if handler.root.name != 'grit':
@@ -232,4 +234,4 @@
if __name__ == '__main__':
util.ChangeStdoutEncoding()
- print unicode(Parse(sys.argv[1]))
+ print(unicode(Parse(sys.argv[1])))
diff --git a/tools/grit/grit/grd_reader_unittest.py b/tools/grit/grit/grd_reader_unittest.py
index 7e98f80..0095355 100755
--- a/tools/grit/grit/grd_reader_unittest.py
+++ b/tools/grit/grit/grd_reader_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for grd_reader package'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/grit_runner.py b/tools/grit/grit/grit_runner.py
index 09994da..8f9f175 100755
--- a/tools/grit/grit/grit_runner.py
+++ b/tools/grit/grit/grit_runner.py
@@ -7,6 +7,8 @@
GRIT tools.
"""
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
@@ -111,7 +113,7 @@
if not _HIDDEN in info.keys():
tool_list += ' %-12s %s\n' % (tool, info[_FACTORY]().ShortDescription())
- print """GRIT - the Google Resource and Internationalization Tool
+ print("""GRIT - the Google Resource and Internationalization Tool
Usage: grit [GLOBALOPTIONS] TOOL [args to tool]
@@ -139,7 +141,7 @@
%s
For more information on how to use a particular tool, and the specific
arguments you can send to that tool, execute 'grit help TOOL'
-""" % (tool_list)
+""" % (tool_list))
class Options(object):
@@ -203,11 +205,11 @@
try:
args = options.ReadOptions(args) # args may be shorter after this
except getopt.GetoptError as e:
- print "grit:", str(e)
- print "Try running 'grit help' for valid options."
+ print("grit:", str(e))
+ print("Try running 'grit help' for valid options.")
return 1
if not args:
- print "No tool provided. Try running 'grit help' for a list of tools."
+ print("No tool provided. Try running 'grit help' for a list of tools.")
return 2
tool = args[0]
@@ -218,29 +220,29 @@
else:
tool = args[1]
if not _GetToolInfo(tool):
- print "No such tool. Try running 'grit help' for a list of tools."
+ print("No such tool. Try running 'grit help' for a list of tools.")
return 2
- print ("Help for 'grit %s' (for general help, run 'grit help'):\n"
- % (tool))
+ print("Help for 'grit %s' (for general help, run 'grit help'):\n" %
+ (tool,))
_GetToolInfo(tool)[_FACTORY]().ShowUsage()
return 0
if not _GetToolInfo(tool):
- print "No such tool. Try running 'grit help' for a list of tools."
+ print("No such tool. Try running 'grit help' for a list of tools.")
return 2
try:
if _GetToolInfo(tool)[_REQUIRES_INPUT]:
os.stat(options.input)
except OSError:
- print ('Input file %s not found.\n'
- 'To specify a different input file:\n'
- ' 1. Use the GRIT_INPUT environment variable.\n'
- ' 2. Use the -i command-line option. This overrides '
- 'GRIT_INPUT.\n'
- ' 3. Specify neither GRIT_INPUT or -i and GRIT will try to load '
- "'resource.grd'\n"
- ' from the current directory.' % options.input)
+ print('Input file %s not found.\n'
+ 'To specify a different input file:\n'
+ ' 1. Use the GRIT_INPUT environment variable.\n'
+ ' 2. Use the -i command-line option. This overrides '
+ 'GRIT_INPUT.\n'
+ ' 3. Specify neither GRIT_INPUT or -i and GRIT will try to load '
+ "'resource.grd'\n"
+ ' from the current directory.' % options.input)
return 2
if options.hash:
@@ -255,8 +257,8 @@
else:
return toolobject.Run(options, args[1:])
except getopt.GetoptError as e:
- print "grit: %s: %s" % (tool, str(e))
- print "Try running 'grit help %s' for valid options." % (tool,)
+ print("grit: %s: %s" % (tool, str(e)))
+ print("Try running 'grit help %s' for valid options." % (tool,))
return 1
diff --git a/tools/grit/grit/grit_runner_unittest.py b/tools/grit/grit/grit_runner_unittest.py
index 591eeae..be2c64d 100755
--- a/tools/grit/grit/grit_runner_unittest.py
+++ b/tools/grit/grit/grit_runner_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for grit.py'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/lazy_re.py b/tools/grit/grit/lazy_re.py
index ae67d048..5c461e87 100644
--- a/tools/grit/grit/lazy_re.py
+++ b/tools/grit/grit/lazy_re.py
@@ -8,6 +8,8 @@
time in some cases.
'''
+from __future__ import print_function
+
import re
diff --git a/tools/grit/grit/lazy_re_unittest.py b/tools/grit/grit/lazy_re_unittest.py
index 99fe1ec..8488b454 100755
--- a/tools/grit/grit/lazy_re_unittest.py
+++ b/tools/grit/grit/lazy_re_unittest.py
@@ -6,6 +6,8 @@
'''Unit test for lazy_re.
'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/node/base.py b/tools/grit/grit/node/base.py
index bd6b207..ca92a91 100644
--- a/tools/grit/grit/node/base.py
+++ b/tools/grit/grit/node/base.py
@@ -5,6 +5,8 @@
'''Base types for nodes in a GRIT resource tree.
'''
+from __future__ import print_function
+
import ast
import os
import sys
@@ -54,7 +56,7 @@
def __exit__(self, exc_type, exc_value, traceback):
if exc_type is not None:
- print u'Error processing node %s' % unicode(self)
+ print(u'Error processing node %s' % unicode(self))
def __iter__(self):
'''A preorder iteration through the tree that this node is the root of.'''
diff --git a/tools/grit/grit/node/base_unittest.py b/tools/grit/grit/node/base_unittest.py
index 556c7456..d6dd3c3 100755
--- a/tools/grit/grit/node/base_unittest.py
+++ b/tools/grit/grit/node/base_unittest.py
@@ -5,6 +5,7 @@
'''Unit tests for base.Node functionality (as used in various subclasses)'''
+from __future__ import print_function
import os
import sys
diff --git a/tools/grit/grit/node/custom/filename.py b/tools/grit/grit/node/custom/filename.py
index 416eac5..cee18ec2 100644
--- a/tools/grit/grit/node/custom/filename.py
+++ b/tools/grit/grit/node/custom/filename.py
@@ -4,6 +4,8 @@
'''A CustomType for filenames.'''
+from __future__ import print_function
+
from grit import clique
from grit import lazy_re
diff --git a/tools/grit/grit/node/custom/filename_unittest.py b/tools/grit/grit/node/custom/filename_unittest.py
index 9ea8eb9..8e2a6dd 100755
--- a/tools/grit/grit/node/custom/filename_unittest.py
+++ b/tools/grit/grit/node/custom/filename_unittest.py
@@ -5,6 +5,7 @@
'''Unit tests for grit.node.custom.filename'''
+from __future__ import print_function
import os
import sys
diff --git a/tools/grit/grit/node/empty.py b/tools/grit/grit/node/empty.py
index b821752..e19d2c4 100644
--- a/tools/grit/grit/node/empty.py
+++ b/tools/grit/grit/node/empty.py
@@ -5,6 +5,7 @@
'''Container nodes that don't have any logic.
'''
+from __future__ import print_function
from grit.node import base
from grit.node import include
diff --git a/tools/grit/grit/node/include.py b/tools/grit/grit/node/include.py
index fd517bdd..fcb805b 100644
--- a/tools/grit/grit/node/include.py
+++ b/tools/grit/grit/node/include.py
@@ -5,6 +5,8 @@
"""Handling of the <include> element.
"""
+from __future__ import print_function
+
import os
from grit import exception
diff --git a/tools/grit/grit/node/include_unittest.py b/tools/grit/grit/node/include_unittest.py
index b4dcb8a79..5dc2059 100755
--- a/tools/grit/grit/node/include_unittest.py
+++ b/tools/grit/grit/node/include_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for include.IncludeNode'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/node/mapping.py b/tools/grit/grit/node/mapping.py
index 083f77b..6297f0b 100644
--- a/tools/grit/grit/node/mapping.py
+++ b/tools/grit/grit/node/mapping.py
@@ -6,6 +6,7 @@
When adding a new node type, you add to this mapping.
'''
+from __future__ import print_function
from grit import exception
diff --git a/tools/grit/grit/node/message.py b/tools/grit/grit/node/message.py
index ed065bb..a21c38c 100644
--- a/tools/grit/grit/node/message.py
+++ b/tools/grit/grit/node/message.py
@@ -5,6 +5,8 @@
'''Handling of the <message> element.
'''
+from __future__ import print_function
+
import re
import types
@@ -167,7 +169,7 @@
if isinstance(item, types.StringTypes):
# Not a <ph> element: fail if any <ph> formatters are detected.
if _FORMATTERS.search(item):
- print _BAD_PLACEHOLDER_MSG % (item, self.source)
+ print(_BAD_PLACEHOLDER_MSG % (item, self.source))
raise exception.PlaceholderNotInsidePhNode
text += item
else:
@@ -198,7 +200,7 @@
# Fail if <ph> special chars remain in cdata.
if re.search(r'[%\$]', cdata):
message_id = self.attrs['name'] + ' ' + original;
- print _INVALID_PH_CHAR_MSG % (message_id, self.source)
+ print(_INVALID_PH_CHAR_MSG % (message_id, self.source))
raise exception.InvalidCharactersInsidePhNode
# Otherwise, accept this <ph> placeholder.
diff --git a/tools/grit/grit/node/message_unittest.py b/tools/grit/grit/node/message_unittest.py
index 5cf78c12..19fd594c 100755
--- a/tools/grit/grit/node/message_unittest.py
+++ b/tools/grit/grit/node/message_unittest.py
@@ -5,6 +5,7 @@
'''Unit tests for grit.node.message'''
+from __future__ import print_function
import os
import sys
diff --git a/tools/grit/grit/node/misc.py b/tools/grit/grit/node/misc.py
index 5d983ee9..f01bf7bf 100644
--- a/tools/grit/grit/node/misc.py
+++ b/tools/grit/grit/node/misc.py
@@ -5,6 +5,8 @@
"""Miscellaneous node types.
"""
+from __future__ import print_function
+
import os.path
import re
import sys
@@ -191,8 +193,8 @@
% (id, id_reasons[id], reason))
if id < 101:
- print ('WARNING: Numeric resource IDs should be greater than 100 to\n'
- 'avoid conflicts with system-defined resource IDs.')
+ print('WARNING: Numeric resource IDs should be greater than 100 to\n'
+ 'avoid conflicts with system-defined resource IDs.')
if tid not in predetermined_tids and id in predetermined_ids:
raise exception.IdRangeOverlap('ID %d overlaps between %s and %s'
@@ -600,12 +602,12 @@
try:
id_list = first_ids[filename][node.name]
except KeyError, e:
- print '-' * 78
- print 'Resource id not set for %s (%s)!' % (filename, node.name)
- print ('Please update %s to include an entry for %s. See the '
- 'comments in resource_ids for information on why you need to '
- 'update that file.' % (first_ids_filename, filename))
- print '-' * 78
+ print('-' * 78)
+ print('Resource id not set for %s (%s)!' % (filename, node.name))
+ print('Please update %s to include an entry for %s. See the '
+ 'comments in resource_ids for information on why you need to '
+ 'update that file.' % (first_ids_filename, filename))
+ print('-' * 78)
raise e
try:
diff --git a/tools/grit/grit/node/misc_unittest.py b/tools/grit/grit/node/misc_unittest.py
index 30df9fe..6ed63a9 100755
--- a/tools/grit/grit/node/misc_unittest.py
+++ b/tools/grit/grit/node/misc_unittest.py
@@ -5,6 +5,7 @@
'''Unit tests for misc.GritNode'''
+from __future__ import print_function
import StringIO
import contextlib
diff --git a/tools/grit/grit/node/node_io.py b/tools/grit/grit/node/node_io.py
index 99423ad1..c67add8 100644
--- a/tools/grit/grit/node/node_io.py
+++ b/tools/grit/grit/node/node_io.py
@@ -5,6 +5,8 @@
'''The <output> and <file> elements.
'''
+from __future__ import print_function
+
import os
from grit import xtb_reader
@@ -47,7 +49,7 @@
defs=defs,
target_platform=target_platform)
except:
- print "Exception during parsing of %s" % self.GetInputPath()
+ print("Exception during parsing of %s" % self.GetInputPath())
raise
# Translation console uses non-standard language codes 'iw' and 'no' for
# Hebrew and Norwegian Bokmal instead of 'he' and 'nb' used in Chrome.
diff --git a/tools/grit/grit/node/node_io_unittest.py b/tools/grit/grit/node/node_io_unittest.py
index f82887e..3b2ae3b 100755
--- a/tools/grit/grit/node/node_io_unittest.py
+++ b/tools/grit/grit/node/node_io_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for node_io.FileNode'''
+from __future__ import print_function
+
import StringIO
import os
import sys
diff --git a/tools/grit/grit/node/structure.py b/tools/grit/grit/node/structure.py
index 6b795d0..69784f5 100644
--- a/tools/grit/grit/node/structure.py
+++ b/tools/grit/grit/node/structure.py
@@ -5,6 +5,8 @@
'''The <structure> element.
'''
+from __future__ import print_function
+
import os
import platform
import re
@@ -235,8 +237,8 @@
def RunPreSubstitutionGatherer(self, debug=False):
if debug:
- print 'Running gatherer %s for file %s' % (
- str(type(self.gatherer)), self.GetInputPath())
+ print('Running gatherer %s for file %s' %
+ (type(self.gatherer), self.GetInputPath()))
# Note: Parse() is idempotent, therefore this method is also.
self.gatherer.Parse()
diff --git a/tools/grit/grit/node/structure_unittest.py b/tools/grit/grit/node/structure_unittest.py
index 683a0626..9160edb 100755
--- a/tools/grit/grit/node/structure_unittest.py
+++ b/tools/grit/grit/node/structure_unittest.py
@@ -6,6 +6,8 @@
'''Unit tests for <structure> nodes.
'''
+from __future__ import print_function
+
import os
import os.path
import sys
diff --git a/tools/grit/grit/node/variant.py b/tools/grit/grit/node/variant.py
index 7d3a526..ab183f0 100644
--- a/tools/grit/grit/node/variant.py
+++ b/tools/grit/grit/node/variant.py
@@ -5,6 +5,7 @@
'''The <skeleton> element.
'''
+from __future__ import print_function
from grit.node import base
diff --git a/tools/grit/grit/pseudo.py b/tools/grit/grit/pseudo.py
index 23b784d..0434026 100644
--- a/tools/grit/grit/pseudo.py
+++ b/tools/grit/grit/pseudo.py
@@ -21,6 +21,8 @@
the latin-1 character set which will stress character encoding bugs.
'''
+from __future__ import print_function
+
from grit import lazy_re
from grit import tclib
diff --git a/tools/grit/grit/pseudo_rtl.py b/tools/grit/grit/pseudo_rtl.py
index f307ea049..2240b57 100644
--- a/tools/grit/grit/pseudo_rtl.py
+++ b/tools/grit/grit/pseudo_rtl.py
@@ -7,6 +7,8 @@
More info at https://sites.google.com/a/chromium.org/dev/Home/fake-bidi
'''
+from __future__ import print_function
+
import re
from grit import lazy_re
diff --git a/tools/grit/grit/pseudo_unittest.py b/tools/grit/grit/pseudo_unittest.py
index ecf34ff04..b1d53ff 100755
--- a/tools/grit/grit/pseudo_unittest.py
+++ b/tools/grit/grit/pseudo_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for grit.pseudo'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/shortcuts.py b/tools/grit/grit/shortcuts.py
index bae61cc..0db2ce4 100644
--- a/tools/grit/grit/shortcuts.py
+++ b/tools/grit/grit/shortcuts.py
@@ -5,6 +5,8 @@
'''Stuff to prevent conflicting shortcuts.
'''
+from __future__ import print_function
+
from grit import lazy_re
diff --git a/tools/grit/grit/shortcuts_unittest.py b/tools/grit/grit/shortcuts_unittest.py
index ed788e63..4580b2a 100644
--- a/tools/grit/grit/shortcuts_unittest.py
+++ b/tools/grit/grit/shortcuts_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for grit.shortcuts
'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/tclib.py b/tools/grit/grit/tclib.py
index da8ad32..c73664f 100644
--- a/tools/grit/grit/tclib.py
+++ b/tools/grit/grit/tclib.py
@@ -5,6 +5,7 @@
'''Adaptation of the extern.tclib classes for our needs.
'''
+from __future__ import print_function
import re
import types
diff --git a/tools/grit/grit/tclib_unittest.py b/tools/grit/grit/tclib_unittest.py
index 87849c5..94673a2 100755
--- a/tools/grit/grit/tclib_unittest.py
+++ b/tools/grit/grit/tclib_unittest.py
@@ -5,6 +5,7 @@
'''Unit tests for grit.tclib'''
+from __future__ import print_function
import sys
import os.path
diff --git a/tools/grit/grit/test_suite_all.py b/tools/grit/grit/test_suite_all.py
index 8d7f76b..6e7727cf 100755
--- a/tools/grit/grit/test_suite_all.py
+++ b/tools/grit/grit/test_suite_all.py
@@ -5,6 +5,8 @@
'''Unit test suite that collects all test cases for GRIT.'''
+from __future__ import print_function
+
import os
import sys
diff --git a/tools/grit/grit/tool/android2grd.py b/tools/grit/grit/tool/android2grd.py
index dd47fda..5ef9204 100644
--- a/tools/grit/grit/tool/android2grd.py
+++ b/tools/grit/grit/tool/android2grd.py
@@ -4,6 +4,7 @@
"""The 'grit android2grd' tool."""
+from __future__ import print_function
import getopt
import os.path
@@ -161,8 +162,8 @@
"""
args = self.ParseOptions(args)
if len(args) != 1:
- print ('Tool requires one argument, the path to the Android '
- 'strings.xml resource file to be converted.')
+ print('Tool requires one argument, the path to the Android '
+ 'strings.xml resource file to be converted.')
return 2
self.SetOptions(opts)
@@ -243,12 +244,12 @@
description = ' '.join(child.data.split())
elif child.nodeType == Node.ELEMENT_NODE:
if child.tagName != 'string':
- print 'Warning: ignoring unknown tag <%s>' % child.tagName
+ print('Warning: ignoring unknown tag <%s>' % child.tagName)
else:
translatable = self.IsTranslatable(child)
raw_name = child.getAttribute('name')
if not _STRING_NAME.match(raw_name):
- print 'Error: illegal string name: %s' % raw_name
+ print('Error: illegal string name: %s' % raw_name)
grd_name = 'IDS_' + raw_name.upper()
# Transform the <string> node contents into a tclib.Message, taking
# care to handle whitespace transformations and escaped characters,
@@ -291,14 +292,14 @@
placeholder_text = self.__FormatPlaceholderText(node)
placeholder_example = node.getAttribute('example')
if not placeholder_example:
- print ('Info: placeholder does not contain an example: %s' %
- node.toxml())
+ print('Info: placeholder does not contain an example: %s' %
+ node.toxml())
placeholder_example = placeholder_id.upper()
msg.AppendPlaceholder(tclib.Placeholder(placeholder_id,
placeholder_text, placeholder_example))
else:
- print ('Warning: removing tag <%s> which must be inside a '
- 'placeholder: %s' % (node.tagName, node.toxml()))
+ print('Warning: removing tag <%s> which must be inside a '
+ 'placeholder: %s' % (node.tagName, node.toxml()))
msg.AppendText(self.__FormatPlaceholderText(node))
# Handle other nodes.
@@ -348,17 +349,17 @@
output = ''.join(output)
if is_quoted_section:
- print 'Warning: unbalanced quotes in string: %s' % android_string
+ print('Warning: unbalanced quotes in string: %s' % android_string)
if is_backslash_sequence:
- print 'Warning: trailing backslash in string: %s' % android_string
+ print('Warning: trailing backslash in string: %s' % android_string)
# Check for format specifiers outside of placeholder tags.
if not inside_placeholder:
format_specifier = _FORMAT_SPECIFIER.search(output)
if format_specifier:
- print ('Warning: format specifiers are not inside a placeholder '
- '<xliff:g/> tag: %s' % output)
+ print('Warning: format specifiers are not inside a placeholder '
+ '<xliff:g/> tag: %s' % output)
return output
@@ -380,15 +381,15 @@
declare a string resource along with a programmatic id.
"""
if not description:
- print 'Warning: no description for %s' % grd_name
+ print('Warning: no description for %s' % grd_name)
# Check that we actually fit within the character limit we've specified.
match = _CHAR_LIMIT.search(description)
if match:
char_limit = int(match.group(1))
msg_content = msg.GetRealContent()
if len(msg_content) > char_limit:
- print ('Warning: char-limit for %s is %d, but length is %d: %s' %
- (grd_name, char_limit, len(msg_content), msg_content))
+ print('Warning: char-limit for %s is %d, but length is %d: %s' %
+ (grd_name, char_limit, len(msg_content), msg_content))
return message.MessageNode.Construct(parent=messages_node,
name=grd_name,
message=msg,
@@ -476,7 +477,7 @@
if android_string.hasAttribute('translatable'):
value = android_string.getAttribute('translatable').lower()
if value not in ('true', 'false'):
- print 'Warning: translatable attribute has invalid value: %s' % value
+ print('Warning: translatable attribute has invalid value: %s' % value)
return value == 'true'
else:
return True
diff --git a/tools/grit/grit/tool/android2grd_unittest.py b/tools/grit/grit/tool/android2grd_unittest.py
index 0c7ed54a..802d216 100755
--- a/tools/grit/grit/tool/android2grd_unittest.py
+++ b/tools/grit/grit/tool/android2grd_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for grit.tool.android2grd'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/tool/build.py b/tools/grit/grit/tool/build.py
index 89f94f1..fde614d 100644
--- a/tools/grit/grit/tool/build.py
+++ b/tools/grit/grit/tool/build.py
@@ -5,6 +5,8 @@
'''The 'grit build' tool.
'''
+from __future__ import print_function
+
import codecs
import filecmp
import getopt
@@ -210,7 +212,7 @@
sys.exit(0)
if len(args):
- print 'This tool takes no tool-specific arguments.'
+ print('This tool takes no tool-specific arguments.')
return 2
self.SetOptions(opts)
self.VerboseOut('Output directory: %s (absolute path: %s)\n' %
@@ -401,7 +403,7 @@
warnings = shortcuts.GenerateDuplicateShortcutsWarnings(
self.res.UberClique(), self.res.GetTcProject())
if warnings:
- print '\n'.join(warnings)
+ print('\n'.join(warnings))
# Print out any fallback warnings, and missing translation errors, and
# exit with an error code if there are missing translations in a non-pseudo
@@ -411,7 +413,7 @@
if warnings:
self.VerboseOut(warnings)
if self.res.UberClique().HasMissingTranslations():
- print self.res.UberClique().missing_translations_
+ print(self.res.UberClique().missing_translations_)
sys.exit(-1)
@@ -442,8 +444,8 @@
Extra output files:
%s
'''
- print error % ('\n'.join(asserted), '\n'.join(actual), '\n'.join(missing),
- '\n'.join(extra))
+ print(error % ('\n'.join(asserted), '\n'.join(actual), '\n'.join(missing),
+ ' \n'.join(extra)))
return False
return True
diff --git a/tools/grit/grit/tool/build_unittest.py b/tools/grit/grit/tool/build_unittest.py
index 985882c..a4be0876 100755
--- a/tools/grit/grit/tool/build_unittest.py
+++ b/tools/grit/grit/tool/build_unittest.py
@@ -6,6 +6,8 @@
'''Unit tests for the 'grit build' tool.
'''
+from __future__ import print_function
+
import codecs
import os
import sys
diff --git a/tools/grit/grit/tool/buildinfo.py b/tools/grit/grit/tool/buildinfo.py
index 5ef1a01..845aea9f 100644
--- a/tools/grit/grit/tool/buildinfo.py
+++ b/tools/grit/grit/tool/buildinfo.py
@@ -5,6 +5,8 @@
"""Output the list of files to be generated by GRIT from an input.
"""
+from __future__ import print_function
+
import getopt
import os
import sys
@@ -41,7 +43,7 @@
self.ShowUsage()
sys.exit(0)
if len(args) > 0:
- print 'This tool takes exactly one argument: the output directory via -o'
+ print('This tool takes exactly one argument: the output directory via -o')
return 2
self.SetOptions(opts)
@@ -64,13 +66,13 @@
if path:
path = os.path.join(self.output_directory, path)
path = os.path.normpath(path)
- print '%s|%s' % ('rc_all', path)
+ print('%s|%s' % ('rc_all', path))
res_tree.SetOutputLanguage(old_output_language)
for output in res_tree.GetOutputFiles():
path = os.path.join(self.output_directory, output.GetFilename())
path = os.path.normpath(path)
- print '%s|%s' % (output.GetType(), path)
+ print('%s|%s' % (output.GetType(), path))
for infile in res_tree.GetInputFiles():
- print 'input|%s' % os.path.normpath(infile)
+ print('input|%s' % os.path.normpath(infile))
diff --git a/tools/grit/grit/tool/buildinfo_unittest.py b/tools/grit/grit/tool/buildinfo_unittest.py
index b07bcd62..e7b086d9 100755
--- a/tools/grit/grit/tool/buildinfo_unittest.py
+++ b/tools/grit/grit/tool/buildinfo_unittest.py
@@ -6,6 +6,8 @@
"""Unit tests for the 'grit buildinfo' tool.
"""
+from __future__ import print_function
+
import os
import StringIO
import sys
diff --git a/tools/grit/grit/tool/count.py b/tools/grit/grit/tool/count.py
index 1a45d89..ab37f2d 100644
--- a/tools/grit/grit/tool/count.py
+++ b/tools/grit/grit/tool/count.py
@@ -4,6 +4,8 @@
'''Count number of occurrences of a given message ID.'''
+from __future__ import print_function
+
import getopt
import sys
@@ -32,8 +34,8 @@
def Run(self, opts, args):
args = self.ParseOptions(args)
if len(args) != 1:
- print ('This tool takes a single tool-specific argument, the message '
- 'ID to count.')
+ print('This tool takes a single tool-specific argument, the message '
+ 'ID to count.')
return 2
self.SetOptions(opts)
@@ -47,4 +49,4 @@
if c.GetId() == id:
count += 1
- print "There are %d occurrences of message %s." % (count, id)
+ print("There are %d occurrences of message %s." % (count, id))
diff --git a/tools/grit/grit/tool/diff_structures.py b/tools/grit/grit/tool/diff_structures.py
index 681d01ec..f007d01 100644
--- a/tools/grit/grit/tool/diff_structures.py
+++ b/tools/grit/grit/tool/diff_structures.py
@@ -5,6 +5,8 @@
'''The 'grit sdiff' tool.
'''
+from __future__ import print_function
+
import os
import getopt
import sys
@@ -67,11 +69,11 @@
sys.exit(0)
if len(args) != 2:
- print "Incorrect usage - 'grit help sdiff' for usage details."
+ print("Incorrect usage - 'grit help sdiff' for usage details.")
return 2
if 'P4DIFF' not in os.environ:
- print "Environment variable P4DIFF not set; defaulting to 'windiff'."
+ print("Environment variable P4DIFF not set; defaulting to 'windiff'.")
diff_program = 'windiff'
else:
diff_program = os.environ['P4DIFF']
diff --git a/tools/grit/grit/tool/interface.py b/tools/grit/grit/tool/interface.py
index 27fbbb7..e9232052 100644
--- a/tools/grit/grit/tool/interface.py
+++ b/tools/grit/grit/tool/interface.py
@@ -5,6 +5,7 @@
'''Base class and interface for tools.
'''
+from __future__ import print_function
class Tool(object):
'''Base class for all tools. Tools should use their docstring (i.e. the
@@ -40,7 +41,7 @@
def ShowUsage(self):
'''Show usage text for this tool.'''
- print self.__doc__
+ print(self.__doc__)
def SetOptions(self, opts):
self.o = opts
diff --git a/tools/grit/grit/tool/menu_from_parts.py b/tools/grit/grit/tool/menu_from_parts.py
index c8c3619c..b8371ab 100644
--- a/tools/grit/grit/tool/menu_from_parts.py
+++ b/tools/grit/grit/tool/menu_from_parts.py
@@ -4,6 +4,8 @@
'''The 'grit menufromparts' tool.'''
+from __future__ import print_function
+
import types
from grit import grd_reader
@@ -63,7 +65,8 @@
if isinstance(part, types.StringTypes):
id = grit.extern.tclib.GenerateMessageId(part)
if id not in xtb:
- print "WARNING didn't find all translations for menu %s" % node.attrs['name']
+ print("WARNING didn't find all translations for menu %s" %
+ (node.attrs['name'],))
translation = []
break
translation.append(xtb[id])
diff --git a/tools/grit/grit/tool/newgrd.py b/tools/grit/grit/tool/newgrd.py
index 385a806..18579596 100644
--- a/tools/grit/grit/tool/newgrd.py
+++ b/tools/grit/grit/tool/newgrd.py
@@ -5,6 +5,8 @@
'''Tool to create a new, empty .grd file with all the basic sections.
'''
+from __future__ import print_function
+
import getopt
import sys
@@ -74,9 +76,10 @@
def Run(self, opts, args):
args = self.ParseOptions(args)
if len(args) != 1:
- print 'This tool requires exactly one argument, the name of the output file.'
+ print('This tool requires exactly one argument, the name of the output '
+ 'file.')
return 2
filename = args[0]
with util.WrapOutputStream(open(filename, 'w'), 'utf-8') as out:
out.write(_FILE_CONTENTS)
- print "Wrote file %s" % filename
+ print("Wrote file %s" % filename)
diff --git a/tools/grit/grit/tool/postprocess_interface.py b/tools/grit/grit/tool/postprocess_interface.py
index 08566eb..4bb8c5871 100644
--- a/tools/grit/grit/tool/postprocess_interface.py
+++ b/tools/grit/grit/tool/postprocess_interface.py
@@ -5,6 +5,7 @@
''' Base class for postprocessing of RC files.
'''
+from __future__ import print_function
class PostProcessor(object):
''' Base class for postprocessing of the RC file data before being
diff --git a/tools/grit/grit/tool/postprocess_unittest.py b/tools/grit/grit/tool/postprocess_unittest.py
index 91f02d69..77fe228b 100755
--- a/tools/grit/grit/tool/postprocess_unittest.py
+++ b/tools/grit/grit/tool/postprocess_unittest.py
@@ -8,6 +8,8 @@
modify the grd data tree, changing the message name attributes.
'''
+from __future__ import print_function
+
import os
import re
import sys
diff --git a/tools/grit/grit/tool/preprocess_interface.py b/tools/grit/grit/tool/preprocess_interface.py
index 97404e9f..67974e7 100644
--- a/tools/grit/grit/tool/preprocess_interface.py
+++ b/tools/grit/grit/tool/preprocess_interface.py
@@ -5,6 +5,7 @@
''' Base class for preprocessing of RC files.
'''
+from __future__ import print_function
class PreProcessor(object):
''' Base class for preprocessing of the RC file data before being
diff --git a/tools/grit/grit/tool/preprocess_unittest.py b/tools/grit/grit/tool/preprocess_unittest.py
index da4242b..40b95cd 100755
--- a/tools/grit/grit/tool/preprocess_unittest.py
+++ b/tools/grit/grit/tool/preprocess_unittest.py
@@ -8,6 +8,8 @@
provide the actual rctext data.
'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/tool/rc2grd.py b/tools/grit/grit/tool/rc2grd.py
index 4850e824..f11560d5 100644
--- a/tools/grit/grit/tool/rc2grd.py
+++ b/tools/grit/grit/tool/rc2grd.py
@@ -4,6 +4,7 @@
'''The 'grit rc2grd' tool.'''
+from __future__ import print_function
import os.path
import getopt
@@ -189,8 +190,8 @@
def Run(self, opts, args):
args = self.ParseOptions(args)
if len(args) != 1:
- print ('This tool takes a single tool-specific argument, the path to the\n'
- '.rc file to process.')
+ print('This tool takes a single tool-specific argument, the path to the\n'
+ '.rc file to process.')
return 2
self.SetOptions(opts)
@@ -203,7 +204,8 @@
with util.WrapOutputStream(file(out_path, 'w'), 'utf-8') as outfile:
outfile.write(grd_text)
- print 'Wrote output file %s.\nPlease check for TODO items in the file.' % out_path
+ print('Wrote output file %s.\nPlease check for TODO items in the file.' %
+ (out_path,))
def Process(self, rctext, rc_path):
@@ -411,5 +413,5 @@
return msg
except:
- print 'Exception processing message with text "%s"' % text
+ print('Exception processing message with text "%s"' % text)
raise
diff --git a/tools/grit/grit/tool/rc2grd_unittest.py b/tools/grit/grit/tool/rc2grd_unittest.py
index 0e48f07f..9976df7 100755
--- a/tools/grit/grit/tool/rc2grd_unittest.py
+++ b/tools/grit/grit/tool/rc2grd_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for grit.tool.rc2grd'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/tool/resize.py b/tools/grit/grit/tool/resize.py
index 3891717..d44160d 100644
--- a/tools/grit/grit/tool/resize.py
+++ b/tools/grit/grit/tool/resize.py
@@ -5,6 +5,8 @@
'''The 'grit resize' tool.
'''
+from __future__ import print_function
+
import getopt
import os
import sys
@@ -253,7 +255,7 @@
).replace('[[DIALOG_NAME]]', project_name)
fname = os.path.join(dir_path, '%s.vcproj' % project_name)
self.WriteFile(fname, project_text)
- print "Wrote %s" % fname
+ print("Wrote %s" % fname)
# Create the .rc file
# Output all <include> nodes since the dialogs might depend on them (e.g.
@@ -277,14 +279,14 @@
fname = os.path.join(dir_path, '%s.rc' % project_name)
self.WriteFile(fname, rc_text, self.GetEncoding())
- print "Wrote %s" % fname
+ print("Wrote %s" % fname)
# Create the resource.h file
header_defines = ''.join(rc_header.FormatDefines(grd))
header_text = HEADER_TEMPLATE.replace('[[DEFINES]]', header_defines)
fname = os.path.join(dir_path, 'resource.h')
self.WriteFile(fname, header_text)
- print "Wrote %s" % fname
+ print("Wrote %s" % fname)
def WriteFile(self, filename, contents, encoding='cp1252'):
with open(filename, 'wb') as f:
diff --git a/tools/grit/grit/tool/test.py b/tools/grit/grit/tool/test.py
index 1fcf23c..241a976 100644
--- a/tools/grit/grit/tool/test.py
+++ b/tools/grit/grit/tool/test.py
@@ -2,6 +2,8 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+from __future__ import print_function
+
from grit.tool import interface
class TestTool(interface.Tool):
@@ -14,9 +16,9 @@
return 'A do-nothing tool for testing command-line parsing.'
def Run(self, global_options, my_arguments):
- print 'NOTE This tool is only for testing the parsing of global options and'
- print 'tool-specific arguments that it receives. You may have intended to'
- print 'run "grit unit" which is the unit-test suite for GRIT.'
- print 'Options: %s' % repr(global_options)
- print 'Arguments: %s' % repr(my_arguments)
+ print('NOTE This tool is only for testing the parsing of global options and')
+ print('tool-specific arguments that it receives. You may have intended to')
+ print('run "grit unit" which is the unit-test suite for GRIT.')
+ print('Options: %s' % repr(global_options))
+ print('Arguments: %s' % repr(my_arguments))
return 0
diff --git a/tools/grit/grit/tool/transl2tc.py b/tools/grit/grit/tool/transl2tc.py
index d75e2b5c..2302682d 100644
--- a/tools/grit/grit/tool/transl2tc.py
+++ b/tools/grit/grit/tool/transl2tc.py
@@ -5,6 +5,8 @@
'''The 'grit transl2tc' tool.
'''
+from __future__ import print_function
+
import sys
from grit import grd_reader
diff --git a/tools/grit/grit/tool/transl2tc_unittest.py b/tools/grit/grit/tool/transl2tc_unittest.py
index db64d10..61f1dad 100755
--- a/tools/grit/grit/tool/transl2tc_unittest.py
+++ b/tools/grit/grit/tool/transl2tc_unittest.py
@@ -5,6 +5,7 @@
'''Unit tests for the 'grit transl2tc' tool.'''
+from __future__ import print_function
import os
import sys
diff --git a/tools/grit/grit/tool/unit.py b/tools/grit/grit/tool/unit.py
index c78ae0b9..3b6f45d 100644
--- a/tools/grit/grit/tool/unit.py
+++ b/tools/grit/grit/tool/unit.py
@@ -4,6 +4,8 @@
'''GRIT tool that runs the unit test suite for GRIT.'''
+from __future__ import print_function
+
import getopt
import sys
import unittest
@@ -31,7 +33,7 @@
def Run(self, opts, args):
args = self.ParseOptions(args)
if args:
- print 'This tool takes no arguments.'
+ print('This tool takes no arguments.')
return 2
return unittest.TextTestRunner(verbosity=2).run(
diff --git a/tools/grit/grit/tool/xmb.py b/tools/grit/grit/tool/xmb.py
index 150652b..c2f5a87 100644
--- a/tools/grit/grit/tool/xmb.py
+++ b/tools/grit/grit/tool/xmb.py
@@ -5,6 +5,8 @@
"""The 'grit xmb' tool.
"""
+from __future__ import print_function
+
import getopt
import os
import sys
@@ -192,8 +194,8 @@
self.ShowUsage()
sys.exit(0)
if not len(args) == 1:
- print ('grit xmb takes exactly one argument, the path to the XMB file '
- 'to output.')
+ print('grit xmb takes exactly one argument, the path to the XMB file '
+ 'to output.')
return 2
xmb_path = args[0]
@@ -208,7 +210,7 @@
res_tree, output_file, limit_file, limit_is_grd, limit_file_dir)
if limit_file:
limit_file.close()
- print "Wrote %s" % xmb_path
+ print("Wrote %s" % xmb_path)
def Process(self, res_tree, output_file, limit_file=None, limit_is_grd=False,
dir=None):
diff --git a/tools/grit/grit/tool/xmb_unittest.py b/tools/grit/grit/tool/xmb_unittest.py
index 200ecd9a..2df5951b 100755
--- a/tools/grit/grit/tool/xmb_unittest.py
+++ b/tools/grit/grit/tool/xmb_unittest.py
@@ -5,6 +5,8 @@
'''Unit tests for 'grit xmb' tool.'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
diff --git a/tools/grit/grit/util.py b/tools/grit/grit/util.py
index d98a0bf..3b8a3db 100644
--- a/tools/grit/grit/util.py
+++ b/tools/grit/grit/util.py
@@ -5,6 +5,8 @@
'''Utilities used by GRIT.
'''
+from __future__ import print_function
+
import codecs
import htmlentitydefs
import os
@@ -434,7 +436,7 @@
if lang in _LANG_TO_CODEPAGE:
return _LANG_TO_CODEPAGE[lang]
else:
- print "Not sure which codepage to use for %s, assuming cp1252" % lang
+ print("Not sure which codepage to use for %s, assuming cp1252" % lang)
return 1252
def NewClassInstance(class_name, class_type):
diff --git a/tools/grit/grit/util_unittest.py b/tools/grit/grit/util_unittest.py
index ecadfa3c..a88a032 100755
--- a/tools/grit/grit/util_unittest.py
+++ b/tools/grit/grit/util_unittest.py
@@ -6,6 +6,8 @@
'''Unit test that checks some of util functions.
'''
+from __future__ import print_function
+
import os
import sys
if __name__ == '__main__':
@@ -82,7 +84,7 @@
with open('testfile', 'wb') as f:
f.write(data)
if util.ReadFile('testfile', encoding) != expected_result:
- print (util.ReadFile('testfile', encoding), expected_result)
+ print(util.ReadFile('testfile', encoding), expected_result)
self.failUnless(util.ReadFile('testfile', encoding) == expected_result)
test_std_newline = '\xEF\xBB\xBFabc\ndef' # EF BB BF is UTF-8 BOM
diff --git a/tools/grit/grit/xtb_reader.py b/tools/grit/grit/xtb_reader.py
index 8d5f58f..ac2f1eae 100644
--- a/tools/grit/grit/xtb_reader.py
+++ b/tools/grit/grit/xtb_reader.py
@@ -5,6 +5,7 @@
'''Fast and efficient parser for XTB files.
'''
+from __future__ import print_function
import sys
import xml.sax
diff --git a/tools/grit/grit/xtb_reader_unittest.py b/tools/grit/grit/xtb_reader_unittest.py
index bab019c..a6d6ad61 100755
--- a/tools/grit/grit/xtb_reader_unittest.py
+++ b/tools/grit/grit/xtb_reader_unittest.py
@@ -5,6 +5,7 @@
'''Unit tests for grit.xtb_reader'''
+from __future__ import print_function
import os
import sys
diff --git a/tools/grit/grit_info.py b/tools/grit/grit_info.py
index 7c57aff..4e08c3b 100755
--- a/tools/grit/grit_info.py
+++ b/tools/grit/grit_info.py
@@ -6,6 +6,8 @@
'''Tool to determine inputs and outputs of a grit file.
'''
+from __future__ import print_function
+
import optparse
import os
import posixpath
@@ -104,9 +106,9 @@
def PrintUsage():
- print 'USAGE: ./grit_info.py --inputs [-D foo] [-f resource_ids] <grd-file>'
- print (' ./grit_info.py --outputs [-D foo] [-f resource_ids] ' +
- '<out-prefix> <grd-file>')
+ print('USAGE: ./grit_info.py --inputs [-D foo] [-f resource_ids] <grd-file>')
+ print(' ./grit_info.py --outputs [-D foo] [-f resource_ids] ' +
+ '<out-prefix> <grd-file>')
def DoMain(argv):
@@ -175,9 +177,9 @@
result = DoMain(argv[1:])
except WrongNumberOfArguments, e:
PrintUsage()
- print e
+ print(e)
return 1
- print result
+ print(result)
return 0
diff --git a/tools/grit/pak_util.py b/tools/grit/pak_util.py
index b71a20d..bd38dce1 100755
--- a/tools/grit/pak_util.py
+++ b/tools/grit/pak_util.py
@@ -9,6 +9,8 @@
https://dev.chromium.org/developers/design-documents/linuxresourcesandlocalizedstrings
"""
+from __future__ import print_function
+
import argparse
import hashlib
import os
diff --git a/tools/grit/stamp_grit_sources.py b/tools/grit/stamp_grit_sources.py
index d43d4b8..bc7265c6 100644
--- a/tools/grit/stamp_grit_sources.py
+++ b/tools/grit/stamp_grit_sources.py
@@ -12,6 +12,8 @@
# Usage:
# stamp_grit_sources.py <directory> <stamp-file> <.d-file>
+from __future__ import print_function
+
import os
import sys
@@ -39,7 +41,7 @@
def main(argv):
if len(argv) != 4:
- print "Error: expecting 3 args."
+ print("Error: expecting 3 args.")
return 1
grit_root_dir = sys.argv[1]