Update the mac python helper scripts to python3.

macOS 12.3 dropped shipping python2.

Update things for python3 (mostly via 2to3).
diff --git a/objectivec/DevTools/pddm_tests.py b/objectivec/DevTools/pddm_tests.py
index 8184209..a6571f6 100755
--- a/objectivec/DevTools/pddm_tests.py
+++ b/objectivec/DevTools/pddm_tests.py
@@ -1,4 +1,4 @@
-#! /usr/bin/python
+#! /usr/bin/python3
 #
 # Protocol Buffers - Google's data interchange format
 # Copyright 2015 Google Inc.  All rights reserved.
@@ -41,24 +41,24 @@
 class TestParsingMacros(unittest.TestCase):
 
   def testParseEmpty(self):
-    f = io.StringIO(u'')
+    f = io.StringIO('')
     result = pddm.MacroCollection(f)
     self.assertEqual(len(result._macros), 0)
 
   def testParseOne(self):
-    f = io.StringIO(u"""PDDM-DEFINE foo( )
+    f = io.StringIO("""PDDM-DEFINE foo( )
 body""")
     result = pddm.MacroCollection(f)
     self.assertEqual(len(result._macros), 1)
     macro = result._macros.get('foo')
     self.assertIsNotNone(macro)
-    self.assertEquals(macro.name, 'foo')
-    self.assertEquals(macro.args, tuple())
-    self.assertEquals(macro.body, 'body')
+    self.assertEqual(macro.name, 'foo')
+    self.assertEqual(macro.args, tuple())
+    self.assertEqual(macro.body, 'body')
 
   def testParseGeneral(self):
     # Tests multiple defines, spaces in all places, etc.
-    f = io.StringIO(u"""
+    f = io.StringIO("""
 PDDM-DEFINE noArgs( )
 body1
 body2
@@ -74,21 +74,21 @@
     self.assertEqual(len(result._macros), 3)
     macro = result._macros.get('noArgs')
     self.assertIsNotNone(macro)
-    self.assertEquals(macro.name, 'noArgs')
-    self.assertEquals(macro.args, tuple())
-    self.assertEquals(macro.body, 'body1\nbody2\n')
+    self.assertEqual(macro.name, 'noArgs')
+    self.assertEqual(macro.args, tuple())
+    self.assertEqual(macro.body, 'body1\nbody2\n')
     macro = result._macros.get('oneArg')
     self.assertIsNotNone(macro)
-    self.assertEquals(macro.name, 'oneArg')
-    self.assertEquals(macro.args, ('foo',))
-    self.assertEquals(macro.body, 'body3')
+    self.assertEqual(macro.name, 'oneArg')
+    self.assertEqual(macro.args, ('foo',))
+    self.assertEqual(macro.body, 'body3')
     macro = result._macros.get('twoArgs')
     self.assertIsNotNone(macro)
-    self.assertEquals(macro.name, 'twoArgs')
-    self.assertEquals(macro.args, ('bar_', 'baz'))
-    self.assertEquals(macro.body, 'body4\nbody5')
+    self.assertEqual(macro.name, 'twoArgs')
+    self.assertEqual(macro.args, ('bar_', 'baz'))
+    self.assertEqual(macro.body, 'body4\nbody5')
     # Add into existing collection
-    f = io.StringIO(u"""
+    f = io.StringIO("""
 PDDM-DEFINE another(a,b,c)
 body1
 body2""")
@@ -96,23 +96,23 @@
     self.assertEqual(len(result._macros), 4)
     macro = result._macros.get('another')
     self.assertIsNotNone(macro)
-    self.assertEquals(macro.name, 'another')
-    self.assertEquals(macro.args, ('a', 'b', 'c'))
-    self.assertEquals(macro.body, 'body1\nbody2')
+    self.assertEqual(macro.name, 'another')
+    self.assertEqual(macro.args, ('a', 'b', 'c'))
+    self.assertEqual(macro.body, 'body1\nbody2')
 
   def testParseDirectiveIssues(self):
     test_list = [
       # Unknown directive
-      (u'PDDM-DEFINE foo()\nbody\nPDDM-DEFINED foo\nbaz',
+      ('PDDM-DEFINE foo()\nbody\nPDDM-DEFINED foo\nbaz',
        'Hit a line with an unknown directive: '),
       # End without begin
-      (u'PDDM-DEFINE foo()\nbody\nPDDM-DEFINE-END\nPDDM-DEFINE-END\n',
+      ('PDDM-DEFINE foo()\nbody\nPDDM-DEFINE-END\nPDDM-DEFINE-END\n',
        'Got DEFINE-END directive without an active macro: '),
       # Line not in macro block
-      (u'PDDM-DEFINE foo()\nbody\nPDDM-DEFINE-END\nmumble\n',
+      ('PDDM-DEFINE foo()\nbody\nPDDM-DEFINE-END\nmumble\n',
        'Hit a line that wasn\'t a directive and no open macro definition: '),
       # Redefine macro
-      (u'PDDM-DEFINE foo()\nbody\nPDDM-DEFINE foo(a)\nmumble\n',
+      ('PDDM-DEFINE foo()\nbody\nPDDM-DEFINE foo(a)\nmumble\n',
        'Attempt to redefine macro: '),
     ]
     for idx, (input_str, expected_prefix) in enumerate(test_list, 1):
@@ -127,47 +127,47 @@
   def testParseBeginIssues(self):
     test_list = [
       # 1. No name
-      (u'PDDM-DEFINE\nmumble',
+      ('PDDM-DEFINE\nmumble',
        'Failed to parse macro definition: '),
       # 2. No name (with spaces)
-      (u'PDDM-DEFINE  \nmumble',
+      ('PDDM-DEFINE  \nmumble',
        'Failed to parse macro definition: '),
       # 3. No open paren
-      (u'PDDM-DEFINE  foo\nmumble',
+      ('PDDM-DEFINE  foo\nmumble',
        'Failed to parse macro definition: '),
       # 4. No close paren
-      (u'PDDM-DEFINE foo(\nmumble',
+      ('PDDM-DEFINE foo(\nmumble',
        'Failed to parse macro definition: '),
       # 5. No close paren (with args)
-      (u'PDDM-DEFINE foo(a, b\nmumble',
+      ('PDDM-DEFINE foo(a, b\nmumble',
        'Failed to parse macro definition: '),
       # 6. No name before args
-      (u'PDDM-DEFINE  (a, b)\nmumble',
+      ('PDDM-DEFINE  (a, b)\nmumble',
        'Failed to parse macro definition: '),
       # 7. No name before args
-      (u'PDDM-DEFINE foo bar(a, b)\nmumble',
+      ('PDDM-DEFINE foo bar(a, b)\nmumble',
        'Failed to parse macro definition: '),
       # 8. Empty arg name
-      (u'PDDM-DEFINE foo(a, ,b)\nmumble',
+      ('PDDM-DEFINE foo(a, ,b)\nmumble',
        'Empty arg name in macro definition: '),
-      (u'PDDM-DEFINE foo(a,,b)\nmumble',
+      ('PDDM-DEFINE foo(a,,b)\nmumble',
        'Empty arg name in macro definition: '),
       # 10. Duplicate name
-      (u'PDDM-DEFINE foo(a,b,a,c)\nmumble',
+      ('PDDM-DEFINE foo(a,b,a,c)\nmumble',
        'Arg name "a" used more than once in macro definition: '),
       # 11. Invalid arg name
-      (u'PDDM-DEFINE foo(a b,c)\nmumble',
+      ('PDDM-DEFINE foo(a b,c)\nmumble',
        'Invalid arg name "a b" in macro definition: '),
-      (u'PDDM-DEFINE foo(a.b,c)\nmumble',
+      ('PDDM-DEFINE foo(a.b,c)\nmumble',
        'Invalid arg name "a.b" in macro definition: '),
-      (u'PDDM-DEFINE foo(a-b,c)\nmumble',
+      ('PDDM-DEFINE foo(a-b,c)\nmumble',
        'Invalid arg name "a-b" in macro definition: '),
-      (u'PDDM-DEFINE foo(a,b,c.)\nmumble',
+      ('PDDM-DEFINE foo(a,b,c.)\nmumble',
        'Invalid arg name "c." in macro definition: '),
       # 15. Extra stuff after the name
-      (u'PDDM-DEFINE foo(a,c) foo\nmumble',
+      ('PDDM-DEFINE foo(a,c) foo\nmumble',
        'Failed to parse macro definition: '),
-      (u'PDDM-DEFINE foo(a,c) foo)\nmumble',
+      ('PDDM-DEFINE foo(a,c) foo)\nmumble',
        'Failed to parse macro definition: '),
     ]
     for idx, (input_str, expected_prefix) in enumerate(test_list, 1):
@@ -183,7 +183,7 @@
 class TestExpandingMacros(unittest.TestCase):
 
   def testExpandBasics(self):
-    f = io.StringIO(u"""
+    f = io.StringIO("""
 PDDM-DEFINE noArgs( )
 body1
 body2
@@ -203,21 +203,21 @@
 """)
     mc = pddm.MacroCollection(f)
     test_list = [
-      (u'noArgs()',
+      ('noArgs()',
        'body1\nbody2\n'),
-      (u'oneArg(wee)',
+      ('oneArg(wee)',
        'body3 wee\n'),
-      (u'twoArgs(having some, fun)',
+      ('twoArgs(having some, fun)',
        'body4 having some fun\nbody5'),
       # One arg, pass empty.
-      (u'oneArg()',
+      ('oneArg()',
        'body3 \n'),
       # Two args, gets empty in each slot.
-      (u'twoArgs(, empty)',
+      ('twoArgs(, empty)',
        'body4  empty\nbody5'),
-      (u'twoArgs(empty, )',
+      ('twoArgs(empty, )',
        'body4 empty \nbody5'),
-      (u'twoArgs(, )',
+      ('twoArgs(, )',
        'body4  \nbody5'),
     ]
     for idx, (input_str, expected) in enumerate(test_list, 1):
@@ -227,7 +227,7 @@
                        (idx, result, expected))
 
   def testExpandArgOptions(self):
-    f = io.StringIO(u"""
+    f = io.StringIO("""
 PDDM-DEFINE bar(a)
 a-a$S-a$l-a$L-a$u-a$U
 PDDM-DEFINE-END
@@ -240,7 +240,7 @@
     self.assertEqual(mc.Expand('bar()'), '-----')
 
   def testExpandSimpleMacroErrors(self):
-    f = io.StringIO(u"""
+    f = io.StringIO("""
 PDDM-DEFINE foo(a, b)
 <a-z>
 PDDM-DEFINE baz(a)
@@ -249,19 +249,19 @@
     mc = pddm.MacroCollection(f)
     test_list = [
       # 1. Unknown macro
-      (u'bar()',
+      ('bar()',
        'No macro named "bar".'),
-      (u'bar(a)',
+      ('bar(a)',
        'No macro named "bar".'),
       # 3. Arg mismatch
-      (u'foo()',
+      ('foo()',
        'Expected 2 args, got: "foo()".'),
-      (u'foo(a b)',
+      ('foo(a b)',
        'Expected 2 args, got: "foo(a b)".'),
-      (u'foo(a,b,c)',
+      ('foo(a,b,c)',
        'Expected 2 args, got: "foo(a,b,c)".'),
       # 6. Unknown option in expansion
-      (u'baz(mumble)',
+      ('baz(mumble)',
        'Unknown arg option "a$z" while expanding "baz(mumble)".'),
     ]
     for idx, (input_str, expected_err) in enumerate(test_list, 1):
@@ -273,7 +273,7 @@
                         'Entry %d failed: %r' % (idx, e))
 
   def testExpandReferences(self):
-    f = io.StringIO(u"""
+    f = io.StringIO("""
 PDDM-DEFINE StartIt()
 foo(abc, def)
 foo(ghi, jkl)
@@ -301,7 +301,7 @@
     self.assertEqual(mc.Expand('StartIt()'), expected)
 
   def testCatchRecursion(self):
-    f = io.StringIO(u"""
+    f = io.StringIO("""
 PDDM-DEFINE foo(a, b)
 bar(1, a)
 bar(2, b)
@@ -322,29 +322,29 @@
   def testBasicParse(self):
     test_list = [
       # 1. no directives
-      (u'a\nb\nc',
+      ('a\nb\nc',
        (3,) ),
       # 2. One define
-      (u'a\n//%PDDM-DEFINE foo()\n//%body\nc',
+      ('a\n//%PDDM-DEFINE foo()\n//%body\nc',
        (1, 2, 1) ),
       # 3. Two defines
-      (u'a\n//%PDDM-DEFINE foo()\n//%body\n//%PDDM-DEFINE bar()\n//%body2\nc',
+      ('a\n//%PDDM-DEFINE foo()\n//%body\n//%PDDM-DEFINE bar()\n//%body2\nc',
        (1, 4, 1) ),
       # 4. Two defines with ends
-      (u'a\n//%PDDM-DEFINE foo()\n//%body\n//%PDDM-DEFINE-END\n'
-       u'//%PDDM-DEFINE bar()\n//%body2\n//%PDDM-DEFINE-END\nc',
+      ('a\n//%PDDM-DEFINE foo()\n//%body\n//%PDDM-DEFINE-END\n'
+       '//%PDDM-DEFINE bar()\n//%body2\n//%PDDM-DEFINE-END\nc',
        (1, 6, 1) ),
       # 5. One expand, one define (that runs to end of file)
-      (u'a\n//%PDDM-EXPAND foo()\nbody\n//%PDDM-EXPAND-END\n'
-       u'//%PDDM-DEFINE bar()\n//%body2\n',
+      ('a\n//%PDDM-EXPAND foo()\nbody\n//%PDDM-EXPAND-END\n'
+       '//%PDDM-DEFINE bar()\n//%body2\n',
        (1, 1, 2) ),
       # 6. One define ended with an expand.
-      (u'a\nb\n//%PDDM-DEFINE bar()\n//%body2\n'
-       u'//%PDDM-EXPAND bar()\nbody2\n//%PDDM-EXPAND-END\n',
+      ('a\nb\n//%PDDM-DEFINE bar()\n//%body2\n'
+       '//%PDDM-EXPAND bar()\nbody2\n//%PDDM-EXPAND-END\n',
        (2, 2, 1) ),
       # 7. Two expands (one end), one define.
-      (u'a\n//%PDDM-EXPAND foo(1)\nbody\n//%PDDM-EXPAND foo(2)\nbody2\n//%PDDM-EXPAND-END\n'
-       u'//%PDDM-DEFINE foo()\n//%body2\n',
+      ('a\n//%PDDM-EXPAND foo(1)\nbody\n//%PDDM-EXPAND foo(2)\nbody2\n//%PDDM-EXPAND-END\n'
+       '//%PDDM-DEFINE foo()\n//%body2\n',
        (1, 2, 2) ),
     ]
     for idx, (input_str, line_counts) in enumerate(test_list, 1):
@@ -362,24 +362,24 @@
   def testErrors(self):
     test_list = [
       # 1. Directive within expansion
-      (u'//%PDDM-EXPAND a()\n//%PDDM-BOGUS',
+      ('//%PDDM-EXPAND a()\n//%PDDM-BOGUS',
        'Ran into directive ("//%PDDM-BOGUS", line 2) while in "//%PDDM-EXPAND a()".'),
-      (u'//%PDDM-EXPAND a()\n//%PDDM-DEFINE a()\n//%body\n',
+      ('//%PDDM-EXPAND a()\n//%PDDM-DEFINE a()\n//%body\n',
        'Ran into directive ("//%PDDM-DEFINE", line 2) while in "//%PDDM-EXPAND a()".'),
       # 3. Expansion ran off end of file
-      (u'//%PDDM-EXPAND a()\na\nb\n',
+      ('//%PDDM-EXPAND a()\na\nb\n',
        'Hit the end of the file while in "//%PDDM-EXPAND a()".'),
       # 4. Directive within define
-      (u'//%PDDM-DEFINE a()\n//%body\n//%PDDM-BOGUS',
+      ('//%PDDM-DEFINE a()\n//%body\n//%PDDM-BOGUS',
        'Ran into directive ("//%PDDM-BOGUS", line 3) while in "//%PDDM-DEFINE a()".'),
-      (u'//%PDDM-DEFINE a()\n//%body\n//%PDDM-EXPAND-END a()',
+      ('//%PDDM-DEFINE a()\n//%body\n//%PDDM-EXPAND-END a()',
        'Ran into directive ("//%PDDM-EXPAND-END", line 3) while in "//%PDDM-DEFINE a()".'),
       # 6. Directives that shouldn't start sections
-      (u'a\n//%PDDM-DEFINE-END a()\n//a\n',
+      ('a\n//%PDDM-DEFINE-END a()\n//a\n',
        'Unexpected line 2: "//%PDDM-DEFINE-END a()".'),
-      (u'a\n//%PDDM-EXPAND-END a()\n//a\n',
+      ('a\n//%PDDM-EXPAND-END a()\n//a\n',
        'Unexpected line 2: "//%PDDM-EXPAND-END a()".'),
-      (u'//%PDDM-BOGUS\n//a\n',
+      ('//%PDDM-BOGUS\n//a\n',
        'Unexpected line 1: "//%PDDM-BOGUS".'),
     ]
     for idx, (input_str, expected_err) in enumerate(test_list, 1):
@@ -395,7 +395,7 @@
 
   def testBasics(self):
     self.maxDiff = None
-    input_str = u"""
+    input_str = """
 //%PDDM-IMPORT-DEFINES ImportFile
 foo
 //%PDDM-EXPAND mumble(abc)
@@ -408,12 +408,12 @@
 //%PDDM-DEFINE mumble(a_)
 //%a_: getName(a_)
 """
-    input_str2 = u"""
+    input_str2 = """
 //%PDDM-DEFINE getName(x_)
 //%do##x_$u##(int x_);
 
 """
-    expected = u"""
+    expected = """
 //%PDDM-IMPORT-DEFINES ImportFile
 foo
 //%PDDM-EXPAND mumble(abc)
@@ -441,7 +441,7 @@
 //%PDDM-DEFINE mumble(a_)
 //%a_: getName(a_)
 """
-    expected_stripped = u"""
+    expected_stripped = """
 //%PDDM-IMPORT-DEFINES ImportFile
 foo
 //%PDDM-EXPAND mumble(abc)
@@ -478,7 +478,7 @@
     self.assertEqual(sf2.processed_content, expected_stripped)
 
   def testProcessFileWithMacroParseError(self):
-    input_str = u"""
+    input_str = """
 foo
 //%PDDM-DEFINE mumble(a_)
 //%body
@@ -498,7 +498,7 @@
                        '  Line 3: //%PDDM-DEFINE mumble(a_)')
 
   def testProcessFileWithExpandError(self):
-    input_str = u"""
+    input_str = """
 foo
 //%PDDM-DEFINE mumble(a_)
 //%body