diff options
author | 2017-12-19 13:32:24 -0800 | |
---|---|---|
committer | 2017-12-19 13:34:27 -0800 | |
commit | 09894d1001aa2e0140beb21cd36615895e204e73 (patch) | |
tree | 53e1f9683f127b6318a37bcd1c8682e68c0a4e24 | |
parent | 43f45b58acf10beadbb1221b71dfa06fa1341510 (diff) |
Python 3 fixes for tools/build_defs, jdk, objc
RELNOTES: None
PiperOrigin-RevId: 179596587
-rw-r--r-- | tools/build_defs/docker/create_image_config.py | 8 | ||||
-rw-r--r-- | tools/build_defs/docker/join_layers.py | 4 | ||||
-rw-r--r-- | tools/build_defs/docker/rewrite_json.py | 8 | ||||
-rw-r--r-- | tools/build_defs/pkg/archive.py | 18 | ||||
-rw-r--r-- | tools/build_defs/pkg/archive_test.py | 27 | ||||
-rw-r--r-- | tools/build_defs/pkg/make_deb.py | 2 | ||||
-rw-r--r-- | tools/build_defs/pkg/make_rpm.py | 4 | ||||
-rw-r--r-- | tools/build_defs/pkg/make_rpm_test.py | 18 | ||||
-rw-r--r-- | tools/jdk/proguard_whitelister_test.py | 2 | ||||
-rwxr-xr-x | tools/objc/j2objc_dead_code_pruner.py | 2 |
10 files changed, 51 insertions, 42 deletions
diff --git a/tools/build_defs/docker/create_image_config.py b/tools/build_defs/docker/create_image_config.py index 05ce4a684b..30eef39c4a 100644 --- a/tools/build_defs/docker/create_image_config.py +++ b/tools/build_defs/docker/create_image_config.py @@ -100,7 +100,7 @@ def DeepCopySkipNull(data): """Do a deep copy, skipping null entry.""" if isinstance(data, dict): return dict((DeepCopySkipNull(k), DeepCopySkipNull(v)) - for k, v in data.iteritems() if v is not None) + for k, v in data.items() if v is not None) return copy.deepcopy(data) @@ -149,7 +149,7 @@ def CreateImageConfig(data, options): # Build a dictionary of existing environment variables (used by Resolve). environ_dict = KeyValueToDict(output['config'].get('Env', [])) # Merge in new environment variables, resolving references. - for k, v in options.env.iteritems(): + for k, v in options.env.items(): # Resolve handles scenarios like "PATH=$PATH:...". environ_dict[k] = Resolve(v, environ_dict) output['config']['Env'] = Dict2ConfigValue(environ_dict) @@ -157,7 +157,7 @@ def CreateImageConfig(data, options): # TODO(babel-team) Label is currently docker specific if options.labels: label_dict = KeyValueToDict(output['config'].get('Label', [])) - for k, v in options.labels.iteritems(): + for k, v in options.labels.items(): label_dict[k] = v output['config']['Label'] = Dict2ConfigValue(label_dict) @@ -216,7 +216,7 @@ def main(unused_argv): layers.append(utils.ExtractValue(layer)) labels = KeyValueToDict(FLAGS.labels) - for label, value in labels.iteritems(): + for label, value in labels.items(): if value.startswith('@'): with open(value[1:], 'r') as f: labels[label] = f.read() diff --git a/tools/build_defs/docker/join_layers.py b/tools/build_defs/docker/join_layers.py index 97e47931ab..0928aef70d 100644 --- a/tools/build_defs/docker/join_layers.py +++ b/tools/build_defs/docker/join_layers.py @@ -53,10 +53,10 @@ def _add_top(tar, repositories): # Walk the single-item dictionary, and if there is a single tag # for the single repository, then emit a 'top' file pointing to # the single image in this bundle. - for (unused_x, tags) in repositories.iteritems(): + for (unused_x, tags) in repositories.items(): if len(tags) != 1: continue - for (unused_y, layer_id) in tags.iteritems(): + for (unused_y, layer_id) in tags.items(): tar.add_file('top', content=layer_id) diff --git a/tools/build_defs/docker/rewrite_json.py b/tools/build_defs/docker/rewrite_json.py index 38fd01def0..c06bf459b7 100644 --- a/tools/build_defs/docker/rewrite_json.py +++ b/tools/build_defs/docker/rewrite_json.py @@ -122,7 +122,7 @@ def DeepCopySkipNull(data): """Do a deep copy, skipping null entry.""" if type(data) == type(dict()): return dict((DeepCopySkipNull(k), DeepCopySkipNull(v)) - for k, v in data.iteritems() if v is not None) + for k, v in data.items() if v is not None) return copy.deepcopy(data) @@ -187,14 +187,14 @@ def RewriteMetadata(data, options): # Build a dictionary of existing environment variables (used by Resolve). environ_dict = KeyValueToDict(output['config'].get('Env', [])) # Merge in new environment variables, resolving references. - for k, v in options.env.iteritems(): + for k, v in options.env.items(): # Resolve handles scenarios like "PATH=$PATH:...". environ_dict[k] = Resolve(v, environ_dict) output['config']['Env'] = Dict2ConfigValue(environ_dict) if options.labels: label_dict = KeyValueToDict(output['config'].get('Label', [])) - for k, v in options.labels.iteritems(): + for k, v in options.labels.items(): label_dict[k] = v output['config']['Label'] = Dict2ConfigValue(label_dict) @@ -279,7 +279,7 @@ def main(unused_argv): name = f.read() labels = KeyValueToDict(FLAGS.labels) - for label, value in labels.iteritems(): + for label, value in labels.items(): if value.startswith('@'): with open(value[1:], 'r') as f: labels[label] = f.read() diff --git a/tools/build_defs/pkg/archive.py b/tools/build_defs/pkg/archive.py index 59728e0655..16695232a4 100644 --- a/tools/build_defs/pkg/archive.py +++ b/tools/build_defs/pkg/archive.py @@ -15,11 +15,8 @@ # pylint: disable=g-import-not-at-top import gzip +import io import os -try: - from StringIO import StringIO -except ImportError: - from io import StringIO import subprocess import tarfile @@ -60,7 +57,7 @@ class SimpleArFile(object): """ def __init__(self, f): - self.filename = f.read(16).strip() + self.filename = f.read(16).decode('utf-8').strip() if self.filename.endswith('/'): # SysV variant self.filename = self.filename[:-1] self.timestamp = int(f.read(12).strip()) @@ -69,11 +66,11 @@ class SimpleArFile(object): self.mode = int(f.read(8).strip(), 8) self.size = int(f.read(10).strip()) pad = f.read(2) - if pad != '\x60\x0a': + if pad != b'\x60\x0a': raise SimpleArFile.ArError('Invalid AR file header') self.data = f.read(self.size) - MAGIC_STRING = '!<arch>\n' + MAGIC_STRING = b'!<arch>\n' def __init__(self, filename): self.filename = filename @@ -273,8 +270,9 @@ class TarFileWriter(object): if link: tarinfo.linkname = link if content: - tarinfo.size = len(content) - self._addfile(tarinfo, StringIO(content)) + content_bytes = content.encode('utf-8') + tarinfo.size = len(content_bytes) + self._addfile(tarinfo, io.BytesIO(content_bytes)) elif file_content: with open(file_content, 'rb') as f: tarinfo.size = os.fstat(f.fileno()).st_size @@ -334,7 +332,7 @@ class TarFileWriter(object): p = subprocess.Popen('cat %s | xzcat' % tar, shell=True, stdout=subprocess.PIPE) - f = StringIO(p.stdout.read()) + f = io.BytesIO(p.stdout.read()) p.wait() intar = tarfile.open(fileobj=f, mode='r:') else: diff --git a/tools/build_defs/pkg/archive_test.py b/tools/build_defs/pkg/archive_test.py index 729e533a2c..5aa64079c3 100644 --- a/tools/build_defs/pkg/archive_test.py +++ b/tools/build_defs/pkg/archive_test.py @@ -64,7 +64,10 @@ class SimpleArFileTest(unittest.TestCase): def assertSimpleFileContent(self, names): datafile = os.path.join(testenv.TESTDATA_PATH, "_".join(names) + ".ar") - content = [{"filename": n, "size": len(n), "data": n} for n in names] + content = [{"filename": n, + "size": len(n.encode("utf-8")), + "data": n.encode("utf-8")} + for n in names] self.assertArFileContent(datafile, content) def testAFile(self): @@ -140,9 +143,11 @@ class TarFileWriterTest(unittest.TestCase): with archive.TarFileWriter(self.tempfile) as f: for n in names: f.add_file(n, content=n) - content = ([{"name": "."}] + [{"name": n, - "size": len(n), - "data": n} for n in names]) + content = ([{"name": "."}] + + [{"name": n, + "size": len(n.encode("utf-8")), + "data": n.encode("utf-8")} + for n in names]) self.assertTarFileContent(self.tempfile, content) def testAddFile(self): @@ -172,9 +177,9 @@ class TarFileWriterTest(unittest.TestCase): content = [ {"name": ".", "mode": 0o755}, {"name": "./a", "mode": 0o755}, - {"name": "./a/b", "data": "ab", "mode": 0o644}, + {"name": "./a/b", "data": b"ab", "mode": 0o644}, {"name": "./a/c", "mode": 0o755}, - {"name": "./a/c/d", "data": "acd", "mode": 0o644}, + {"name": "./a/c/d", "data": b"acd", "mode": 0o644}, ] tempdir = os.path.join(os.environ["TEST_TMPDIR"], "test_dir") # Iterate over the `content` array to create the directory @@ -183,7 +188,7 @@ class TarFileWriterTest(unittest.TestCase): if "data" in c: p = os.path.join(tempdir, c["name"][2:]) os.makedirs(os.path.dirname(p)) - with open(p, "w") as f: + with open(p, "wb") as f: f.write(c["data"]) with archive.TarFileWriter(self.tempfile) as f: f.add_dir("./", tempdir, mode=0o644) @@ -191,8 +196,8 @@ class TarFileWriterTest(unittest.TestCase): def testMergeTar(self): content = [ - {"name": "./a", "data": "a"}, - {"name": "./ab", "data": "ab"}, + {"name": "./a", "data": b"a"}, + {"name": "./ab", "data": b"ab"}, ] for ext in ["", ".gz", ".bz2", ".xz"]: with archive.TarFileWriter(self.tempfile) as f: @@ -204,8 +209,8 @@ class TarFileWriterTest(unittest.TestCase): content = [ {"name": ".", "mode": 0o755}, {"name": "./foo", "mode": 0o755}, - {"name": "./foo/a", "data": "a"}, - {"name": "./foo/ab", "data": "ab"}, + {"name": "./foo/a", "data": b"a"}, + {"name": "./foo/ab", "data": b"ab"}, ] with archive.TarFileWriter(self.tempfile) as f: f.add_tar(os.path.join(testenv.TESTDATA_PATH, "tar_test.tar"), diff --git a/tools/build_defs/pkg/make_deb.py b/tools/build_defs/pkg/make_deb.py index 8e81a6f9d1..c734536a3c 100644 --- a/tools/build_defs/pkg/make_deb.py +++ b/tools/build_defs/pkg/make_deb.py @@ -137,7 +137,7 @@ def CreateDebControl(extrafiles=None, **kwargs): tarinfo.size = len(controlfile) f.addfile(tarinfo, fileobj=StringIO(controlfile)) if extrafiles: - for name, (data, mode) in extrafiles.iteritems(): + for name, (data, mode) in extrafiles.items(): tarinfo = tarfile.TarInfo(name) tarinfo.size = len(data) tarinfo.mode = mode diff --git a/tools/build_defs/pkg/make_rpm.py b/tools/build_defs/pkg/make_rpm.py index 9f0f40a23b..108bd9d972 100644 --- a/tools/build_defs/pkg/make_rpm.py +++ b/tools/build_defs/pkg/make_rpm.py @@ -119,7 +119,7 @@ def CopyAndRewrite(input_file, output_file, replacements=None): with open(output_file, 'w') as output: for line in fileinput.input(input_file): if replacements: - for prefix, text in replacements.iteritems(): + for prefix, text in replacements.items(): if line.startswith(prefix): line = prefix + ' ' + text + '\n' break @@ -151,7 +151,7 @@ class RpmBuilder(object): # Create directory structure. for name in RpmBuilder.DIRS: if not os.path.exists(name): - os.makedirs(name, 0777) + os.makedirs(name, 0o777) shutil.copy(os.path.join(original_dir, spec_file), os.getcwd()) diff --git a/tools/build_defs/pkg/make_rpm_test.py b/tools/build_defs/pkg/make_rpm_test.py index f8f771038a..8c871725c0 100644 --- a/tools/build_defs/pkg/make_rpm_test.py +++ b/tools/build_defs/pkg/make_rpm_test.py @@ -43,6 +43,12 @@ def FileContents(filename): class MakeRpmTest(unittest.TestCase): + # Python 2 alias + if not hasattr(unittest.TestCase, 'assertCountEqual'): + + def assertCountEqual(self, *args): + return self.assertItemsEqual(*args) + def testFindOutputFile(self): log = """ Lots of data. @@ -51,7 +57,7 @@ class MakeRpmTest(unittest.TestCase): """ result = make_rpm.FindOutputFile(log) - self.assertEquals('/path/to/file/here.rpm', result) + self.assertEqual('/path/to/file/here.rpm', result) def testFindOutputFile_missing(self): log = """ @@ -60,7 +66,7 @@ class MakeRpmTest(unittest.TestCase): """ result = make_rpm.FindOutputFile(log) - self.assertEquals(None, result) + self.assertEqual(None, result) def testCopyAndRewrite(self): with make_rpm.Tempdir(): @@ -71,7 +77,7 @@ class MakeRpmTest(unittest.TestCase): }) self.assertTrue(FileExists('out.txt')) - self.assertItemsEqual(['Some: data1a', 'Other: data2', 'More: data3a'], + self.assertCountEqual(['Some: data1a', 'Other: data2', 'More: data3a'], FileContents('out.txt')) def testSetupWorkdir(self): @@ -92,13 +98,13 @@ class MakeRpmTest(unittest.TestCase): self.assertTrue(DirExists('BUILD')) self.assertTrue(DirExists('TMP')) self.assertTrue(FileExists('test.spec')) - self.assertItemsEqual( + self.assertCountEqual( ['Name: test', 'Version: 1.0', 'Summary: test data'], FileContents('test.spec')) self.assertTrue(FileExists('BUILD/file1.txt')) - self.assertItemsEqual(['Hello'], FileContents('BUILD/file1.txt')) + self.assertCountEqual(['Hello'], FileContents('BUILD/file1.txt')) self.assertTrue(FileExists('BUILD/file2.txt')) - self.assertItemsEqual(['Goodbye'], FileContents('BUILD/file2.txt')) + self.assertCountEqual(['Goodbye'], FileContents('BUILD/file2.txt')) if __name__ == '__main__': diff --git a/tools/jdk/proguard_whitelister_test.py b/tools/jdk/proguard_whitelister_test.py index 6a24501fbe..a7754c70c0 100644 --- a/tools/jdk/proguard_whitelister_test.py +++ b/tools/jdk/proguard_whitelister_test.py @@ -30,7 +30,7 @@ class ProguardConfigValidatorTest(unittest.TestCase): output_path = os.path.join(tmpdir, "proguard_whitelister_test_output.cfg") # This will raise an exception if the config is invalid. self._CreateValidator(input_path, output_path).ValidateAndWriteOutput() - with file(output_path) as output: + with open(output_path) as output: self.assertTrue(("# Merged from %s" % input_path) in output.read()) def _TestInvalidConfig(self, invalid_args, config): diff --git a/tools/objc/j2objc_dead_code_pruner.py b/tools/objc/j2objc_dead_code_pruner.py index 3377fc9553..218a8d4a94 100755 --- a/tools/objc/j2objc_dead_code_pruner.py +++ b/tools/objc/j2objc_dead_code_pruner.py @@ -219,7 +219,7 @@ def _DuplicatedFiles(archive_source_file_mapping): duplicated_files = [] dict_with_duplicates = dict() - for archive, source_files in archive_source_file_mapping.iteritems(): + for source_files in archive_source_file_mapping.values(): for source_file in source_files: file_basename = os.path.basename(source_file) file_without_ext = os.path.splitext(source_file)[0] |