Blob Blame History Raw
# HG changeset patch
# User Emilio Cobos Álvarez <emilio@crisal.io>
# Date 1625585189 0
# Node ID 2418633d529c6df00a83e973295eed0e891990a6
# Parent  0b5bfe85b344b34894f72176099da78c3849b5cc
Bug 1719144 - Fix various imports for Python 3.10. r=firefox-build-system-reviewers,mhentges

These are enough for me to run bootstrap+configure+build.

Some touch third-party code (gyp), but per discussion in the earlier
versions of this revision that seems fine.

Differential Revision: https://phabricator.services.mozilla.com/D119080

diff --git a/python/mach/mach/config.py b/python/mach/mach/config.py
--- a/python/mach/mach/config.py
+++ b/python/mach/mach/config.py
@@ -17,6 +17,7 @@
 from __future__ import absolute_import, unicode_literals
 
 import collections
+import collections.abc
 import os
 import sys
 import six
@@ -144,7 +145,7 @@
     return _
 
 
-class ConfigSettings(collections.Mapping):
+class ConfigSettings(collections.abc.Mapping):
     """Interface for configuration settings.
 
     This is the main interface to the configuration.
@@ -190,7 +191,7 @@
     will result in exceptions being raised.
     """
 
-    class ConfigSection(collections.MutableMapping, object):
+    class ConfigSection(collections.abc.MutableMapping, object):
         """Represents an individual config section."""
         def __init__(self, config, name, settings):
             object.__setattr__(self, '_config', config)
@@ -312,8 +313,8 @@
         self._config.write(fh)
 
     @classmethod
-    def _format_metadata(cls, provider, section, option, type_cls, description,
-                         default=DefaultValue, extra=None):
+    def _format_metadata(cls, provider, section, option, type_cls, description,
+                         default=DefaultValue, extra=None):
         """Formats and returns the metadata for a setting.
 
         Each setting must have:
@@ -340,10 +340,7 @@
         if isinstance(type_cls, string_types):
             type_cls = TYPE_CLASSES[type_cls]
 
-        meta = {
-            'description': description,
-            'type_cls': type_cls,
-        }
+        meta = {'description': description, 'type_cls': type_cls}
 
         if default != DefaultValue:
             meta['default'] = default
diff --git a/python/mach/mach/decorators.py b/python/mach/mach/decorators.py
--- a/python/mach/mach/decorators.py
+++ b/python/mach/mach/decorators.py
@@ -1,16 +1,17 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 from __future__ import absolute_import, unicode_literals
 
 import argparse
 import collections
+import collections.abc
 
 from .base import MachError
 from .registrar import Registrar
 from mozbuild.base import MachCommandBase
 
 
 class _MachCommand(object):
     """Container for mach command metadata."""
@@ -140,7 +141,7 @@
               'Conditions argument must take a list ' + \
               'of functions. Found %s instead.'
 
-        if not isinstance(command.conditions, collections.Iterable):
+        if not isinstance(command.conditions, collections.abc.Iterable):
             msg = msg % (command.name, type(command.conditions))
             raise MachError(msg)
 
diff --git a/python/mach/mach/main.py b/python/mach/mach/main.py
--- a/python/mach/mach/main.py
+++ b/python/mach/mach/main.py
@@ -11,17 +11,17 @@ import argparse
 import codecs
 import errno
 import imp
 import logging
 import os
 import sys
 import traceback
 import uuid
-from collections import Iterable
+from collections.abc import Iterable
 
 from six import string_types
 
 from .base import (
     CommandContext,
     MachError,
     MissingFileError,
     NoCommandError,
diff --git a/python/mozbuild/mozbuild/backend/configenvironment.py b/python/mozbuild/mozbuild/backend/configenvironment.py
--- a/python/mozbuild/mozbuild/backend/configenvironment.py
+++ b/python/mozbuild/mozbuild/backend/configenvironment.py
@@ -4,17 +4,18 @@
 
 from __future__ import absolute_import, print_function
 
 import os
 import six
 import sys
 import json
 
-from collections import Iterable, OrderedDict
+from collections.abc import Iterable
+from collections import OrderedDict
 from types import ModuleType
 
 import mozpack.path as mozpath
 
 from mozbuild.util import (
     FileAvoidWrite,
     memoized_property,
     ReadOnlyDict,
@@ -63,10 +64,7 @@
                     compile(source, path, 'exec', dont_inherit=1)
                 )
 
-        g = {
-            '__builtins__': __builtins__,
-            '__file__': path,
-        }
+        g = {"__builtins__": __builtins__, "__file__": path}
         l = {}
         try:
             exec(code_cache[path][1], g, l)
diff --git a/python/mozbuild/mozbuild/makeutil.py b/python/mozbuild/mozbuild/makeutil.py
--- a/python/mozbuild/mozbuild/makeutil.py
+++ b/python/mozbuild/mozbuild/makeutil.py
@@ -7,7 +7,7 @@
 import os
 import re
 import six
-from collections import Iterable
+from collections.abc import Iterable
 
 
 class Makefile(object):
diff --git a/python/mozbuild/mozbuild/util.py b/python/mozbuild/mozbuild/util.py
--- a/python/mozbuild/mozbuild/util.py
+++ b/python/mozbuild/mozbuild/util.py
@@ -4,16 +4,17 @@
 
 # This file contains miscellaneous utility functions that don't belong anywhere
 # in particular.
 
 from __future__ import absolute_import, print_function, unicode_literals
 
 import argparse
 import collections
+import collections.abc
 import ctypes
 import difflib
 import errno
 import functools
 import hashlib
 import io
 import itertools
 import os
@@ -782,7 +783,7 @@
         self._strings = StrictOrderingOnAppendList()
         self._children = {}
 
-    class StringListAdaptor(collections.Sequence):
+    class StringListAdaptor(collections.abc.Sequence):
         def __init__(self, hsl):
             self._hsl = hsl
 
diff --git a/taskcluster/taskgraph/util/schema.py b/taskcluster/taskgraph/util/schema.py
--- a/taskcluster/taskgraph/util/schema.py
+++ b/taskcluster/taskgraph/util/schema.py
@@ -6,7 +6,7 @@
 
 import re
 import pprint
-import collections
+import collections.abc
 import voluptuous
 
 from six import text_type, iteritems
@@ -160,7 +160,7 @@
                     'Unexpected type in YAML schema: {} @ {}'.format(
                         type(k).__name__, path))
 
-        if isinstance(sch, collections.Mapping):
+        if isinstance(sch, collections.abc.Mapping):
             for k, v in iteritems(sch):
                 child = "{}[{!r}]".format(path, k)
                 check_identifier(child, k)
diff --git a/third_party/python/gyp/pylib/gyp/common.py b/third_party/python/gyp/pylib/gyp/common.py
--- a/third_party/python/gyp/pylib/gyp/common.py
+++ b/third_party/python/gyp/pylib/gyp/common.py
@@ -1,15 +1,16 @@
 # Copyright (c) 2012 Google Inc. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
 from __future__ import with_statement
 
 import collections
+import collections.abc
 import errno
 import filecmp
 import os.path
 import re
 import tempfile
 import sys
 
 
@@ -489,17 +490,17 @@ def uniquer(seq, idfun=None):
         marker = idfun(item)
         if marker in seen: continue
         seen[marker] = 1
         result.append(item)
     return result
 
 
 # Based on http://code.activestate.com/recipes/576694/.
-class OrderedSet(collections.MutableSet):
+class OrderedSet(collections.abc.MutableSet):
   def __init__(self, iterable=None):
     self.end = end = []
     end += [None, end, end]         # sentinel node for doubly linked list
     self.map = {}                   # key --> [key, prev, next]
     if iterable is not None:
       self |= iterable
 
   def __len__(self):


# HG changeset patch
# User Emilio Cobos Álvarez <emilio@crisal.io>
# Date 1625657350 -7200
# Node ID 6b2a1a09cd4735386414483dd4050c25f9e58e86
# Parent  d2ab10b1b1619f8e2473837ed9043ad28c842aa5
Bug 1719144 - Keep some code python2 compatible since we still run it in some windows talos jobs.

MANUAL PUSH: Orange fix CLOSED TREE


diff --git a/testing/mozbase/manifestparser/manifestparser/filters.py b/testing/mozbase/manifestparser/manifestparser/filters.py
--- a/testing/mozbase/manifestparser/manifestparser/filters.py
+++ b/testing/mozbase/manifestparser/manifestparser/filters.py
@@ -12,7 +12,7 @@
 
 import itertools
 import os
-from collections import defaultdict, MutableSequence
+from collections.abc import MutableSequence
 
 import six
 from six import string_types
--- a/third_party/python/pyyaml/lib3/yaml/constructor.orig.py	2021-07-13 12:14:20.000000000 +0200
+++ b/third_party/python/pyyaml/lib3/yaml/constructor.py	2021-07-14 14:36:31.579176122 +0200
@@ -5,7 +5,7 @@
 from .error import *
 from .nodes import *
 
-import collections, datetime, base64, binascii, re, sys, types
+import collections.abc, datetime, base64, binascii, re, sys, types
 
 class ConstructorError(MarkedYAMLError):
     pass
@@ -123,7 +123,7 @@
         mapping = {}
         for key_node, value_node in node.value:
             key = self.construct_object(key_node, deep=deep)
-            if not isinstance(key, collections.Hashable):
+            if not isinstance(key, collections.abc.Hashable):
                 raise ConstructorError("while constructing a mapping", node.start_mark,
                         "found unhashable key", key_node.start_mark)
             value = self.construct_object(value_node, deep=deep)