From a88d0c8e27b48344942187c2611bb121bde9332d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= <fzatlouk@redhat.com>
Date: Tue, 13 Jul 2021 11:46:20 +0200
Subject: [PATCH] Fixup compatibility of mozbuild with Python 3.10

Stolen from [1]

[1] https://src.fedoraproject.org/rpms/mozjs78/raw/rawhide/f/Fixup-compatibility-of-mozbuild-with-Python-3.10.patch

Upstream-Status: Pending

---
 python/mach/mach/config.py                                    | 4 ++--
 python/mach/mach/decorators.py                                | 2 +-
 python/mozbuild/mozbuild/backend/configenvironment.py         | 3 ++-
 python/mozbuild/mozbuild/makeutil.py                          | 2 +-
 python/mozbuild/mozbuild/util.py                              | 2 +-
 testing/marionette/client/marionette_driver/wait.py           | 2 +-
 testing/mozbase/manifestparser/manifestparser/filters.py      | 3 ++-
 testing/mozbase/versioninfo.py                                | 2 +-
 testing/web-platform/tests/tools/manifest/vcs.py              | 2 +-
 .../web-platform/tests/tools/third_party/h2/h2/settings.py    | 2 +-
 .../tests/tools/third_party/html5lib/html5lib/_trie/_base.py  | 2 +-
 .../tools/third_party/html5lib/html5lib/treebuilders/dom.py   | 2 +-
 .../tests/tools/third_party/hyper/hyper/common/headers.py     | 2 +-
 .../tests/tools/third_party/hyper/hyper/h2/settings.py        | 2 +-
 .../tests/tools/third_party/hyper/hyper/http11/connection.py  | 4 ++--
 .../third_party/hyper/hyper/packages/hyperframe/flags.py      | 2 +-
 .../tests/tools/third_party/hyperframe/hyperframe/flags.py    | 2 +-
 testing/web-platform/tests/tools/wptserve/wptserve/config.py  | 3 ++-
 testing/web-platform/tests/webdriver/tests/support/sync.py    | 2 +-
 19 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/python/mach/mach/config.py b/python/mach/mach/config.py
index 7210eca82..edb4d2e93 100644
--- a/python/mach/mach/config.py
+++ b/python/mach/mach/config.py
@@ -144,7 +144,7 @@ def reraise_attribute_error(func):
     return _
 
 
-class ConfigSettings(collections.Mapping):
+class ConfigSettings(collections.abc.Mapping):
     """Interface for configuration settings.
 
     This is the main interface to the configuration.
@@ -190,7 +190,7 @@ class ConfigSettings(collections.Mapping):
     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)
diff --git a/python/mach/mach/decorators.py b/python/mach/mach/decorators.py
index 27f7f34a6..5f63271a3 100644
--- a/python/mach/mach/decorators.py
+++ b/python/mach/mach/decorators.py
@@ -140,7 +140,7 @@ def CommandProvider(cls):
               '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/mozbuild/mozbuild/backend/configenvironment.py b/python/mozbuild/mozbuild/backend/configenvironment.py
index 20d1a9fa6..8747958bd 100644
--- a/python/mozbuild/mozbuild/backend/configenvironment.py
+++ b/python/mozbuild/mozbuild/backend/configenvironment.py
@@ -9,7 +9,8 @@ import six
 import sys
 import json
 
-from collections import Iterable, OrderedDict
+from collections import OrderedDict
+from collections.abc import Iterable
 from types import ModuleType
 
 import mozpack.path as mozpath
diff --git a/python/mozbuild/mozbuild/makeutil.py b/python/mozbuild/mozbuild/makeutil.py
index 4da1a3b26..4ce56848c 100644
--- a/python/mozbuild/mozbuild/makeutil.py
+++ b/python/mozbuild/mozbuild/makeutil.py
@@ -7,7 +7,7 @@ from __future__ import absolute_import, print_function, unicode_literals
 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
index 044cf645c..98ed3ef52 100644
--- a/python/mozbuild/mozbuild/util.py
+++ b/python/mozbuild/mozbuild/util.py
@@ -782,7 +782,7 @@ class HierarchicalStringList(object):
         self._strings = StrictOrderingOnAppendList()
         self._children = {}
 
-    class StringListAdaptor(collections.Sequence):
+    class StringListAdaptor(collections.abc.Sequence):
         def __init__(self, hsl):
             self._hsl = hsl
 
diff --git a/testing/marionette/client/marionette_driver/wait.py b/testing/marionette/client/marionette_driver/wait.py
index eeaa1e23d..c147f463f 100644
--- a/testing/marionette/client/marionette_driver/wait.py
+++ b/testing/marionette/client/marionette_driver/wait.py
@@ -82,7 +82,7 @@ class Wait(object):
 
         exceptions = []
         if ignored_exceptions is not None:
-            if isinstance(ignored_exceptions, collections.Iterable):
+            if isinstance(ignored_exceptions, collections.abc.Iterable):
                 exceptions.extend(iter(ignored_exceptions))
             else:
                 exceptions.append(ignored_exceptions)
diff --git a/testing/mozbase/manifestparser/manifestparser/filters.py b/testing/mozbase/manifestparser/manifestparser/filters.py
index 287ee033b..b1d608003 100644
--- a/testing/mozbase/manifestparser/manifestparser/filters.py
+++ b/testing/mozbase/manifestparser/manifestparser/filters.py
@@ -12,7 +12,8 @@ from __future__ import absolute_import
 
 import itertools
 import os
-from collections import defaultdict, MutableSequence
+from collections import defaultdict
+from collections.abc import MutableSequence
 
 import six
 from six import string_types
diff --git a/testing/mozbase/versioninfo.py b/testing/mozbase/versioninfo.py
index 91d1a0473..8c1680069 100755
--- a/testing/mozbase/versioninfo.py
+++ b/testing/mozbase/versioninfo.py
@@ -11,7 +11,7 @@ from commit messages.
 
 from __future__ import absolute_import, print_function
 
-from collections import Iterable
+from collections.abc import Iterable
 from distutils.version import StrictVersion
 import argparse
 import os
diff --git a/testing/web-platform/tests/tools/manifest/vcs.py b/testing/web-platform/tests/tools/manifest/vcs.py
index 7c0feeb81..05ee19c7c 100644
--- a/testing/web-platform/tests/tools/manifest/vcs.py
+++ b/testing/web-platform/tests/tools/manifest/vcs.py
@@ -3,7 +3,7 @@ import json
 import os
 import stat
 from collections import deque
-from collections import MutableMapping
+from collections.abc import MutableMapping
 
 from six import with_metaclass, PY2
 
diff --git a/testing/web-platform/tests/tools/third_party/h2/h2/settings.py b/testing/web-platform/tests/tools/third_party/h2/h2/settings.py
index 3da720329..e097630e9 100644
--- a/testing/web-platform/tests/tools/third_party/h2/h2/settings.py
+++ b/testing/web-platform/tests/tools/third_party/h2/h2/settings.py
@@ -88,7 +88,7 @@ class ChangedSetting:
         )
 
 
-class Settings(collections.MutableMapping):
+class Settings(collections.abc.MutableMapping):
     """
     An object that encapsulates HTTP/2 settings state.
 
diff --git a/testing/web-platform/tests/tools/third_party/html5lib/html5lib/_trie/_base.py b/testing/web-platform/tests/tools/third_party/html5lib/html5lib/_trie/_base.py
index a1158bbbf..a9295a2ba 100644
--- a/testing/web-platform/tests/tools/third_party/html5lib/html5lib/_trie/_base.py
+++ b/testing/web-platform/tests/tools/third_party/html5lib/html5lib/_trie/_base.py
@@ -1,6 +1,6 @@
 from __future__ import absolute_import, division, unicode_literals
 
-from collections import Mapping
+from collections.abc import Mapping
 
 
 class Trie(Mapping):
diff --git a/testing/web-platform/tests/tools/third_party/html5lib/html5lib/treebuilders/dom.py b/testing/web-platform/tests/tools/third_party/html5lib/html5lib/treebuilders/dom.py
index dcfac220b..818a33433 100644
--- a/testing/web-platform/tests/tools/third_party/html5lib/html5lib/treebuilders/dom.py
+++ b/testing/web-platform/tests/tools/third_party/html5lib/html5lib/treebuilders/dom.py
@@ -1,7 +1,7 @@
 from __future__ import absolute_import, division, unicode_literals
 
 
-from collections import MutableMapping
+from collections.abc import MutableMapping
 from xml.dom import minidom, Node
 import weakref
 
diff --git a/testing/web-platform/tests/tools/third_party/hyper/hyper/common/headers.py b/testing/web-platform/tests/tools/third_party/hyper/hyper/common/headers.py
index 655a591ac..6454f550a 100644
--- a/testing/web-platform/tests/tools/third_party/hyper/hyper/common/headers.py
+++ b/testing/web-platform/tests/tools/third_party/hyper/hyper/common/headers.py
@@ -10,7 +10,7 @@ import collections
 from hyper.common.util import to_bytestring, to_bytestring_tuple
 
 
-class HTTPHeaderMap(collections.MutableMapping):
+class HTTPHeaderMap(collections.abc.MutableMapping):
     """
     A structure that contains HTTP headers.
 
diff --git a/testing/web-platform/tests/tools/third_party/hyper/hyper/h2/settings.py b/testing/web-platform/tests/tools/third_party/hyper/hyper/h2/settings.py
index fedc5e3c4..040afea92 100755
--- a/testing/web-platform/tests/tools/third_party/hyper/hyper/h2/settings.py
+++ b/testing/web-platform/tests/tools/third_party/hyper/hyper/h2/settings.py
@@ -151,7 +151,7 @@ class ChangedSetting:
         )
 
 
-class Settings(collections.MutableMapping):
+class Settings(collections.abc.MutableMapping):
     """
     An object that encapsulates HTTP/2 settings state.
 
diff --git a/testing/web-platform/tests/tools/third_party/hyper/hyper/http11/connection.py b/testing/web-platform/tests/tools/third_party/hyper/hyper/http11/connection.py
index 61361c358..a214311d2 100644
--- a/testing/web-platform/tests/tools/third_party/hyper/hyper/http11/connection.py
+++ b/testing/web-platform/tests/tools/third_party/hyper/hyper/http11/connection.py
@@ -10,7 +10,7 @@ import os
 import socket
 import base64
 
-from collections import Iterable, Mapping
+from collections.abc import Iterable, Mapping
 
 import collections
 from hyperframe.frame import SettingsFrame
@@ -295,7 +295,7 @@ class HTTP11Connection(object):
                 return
 
             # Iterables that set a specific content length.
-            elif isinstance(body, collections.Iterable):
+            elif isinstance(body, collections.abc.Iterable):
                 for item in body:
                     try:
                         self._sock.send(item)
diff --git a/testing/web-platform/tests/tools/third_party/hyper/hyper/packages/hyperframe/flags.py b/testing/web-platform/tests/tools/third_party/hyper/hyper/packages/hyperframe/flags.py
index e8f630056..8f2ea689b 100644
--- a/testing/web-platform/tests/tools/third_party/hyper/hyper/packages/hyperframe/flags.py
+++ b/testing/web-platform/tests/tools/third_party/hyper/hyper/packages/hyperframe/flags.py
@@ -11,7 +11,7 @@ import collections
 Flag = collections.namedtuple("Flag", ["name", "bit"])
 
 
-class Flags(collections.MutableSet):
+class Flags(collections.abc.MutableSet):
     """
     A simple MutableSet implementation that will only accept known flags as elements.
 
diff --git a/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py b/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py
index 05b35017e..14c352e10 100644
--- a/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py
+++ b/testing/web-platform/tests/tools/third_party/hyperframe/hyperframe/flags.py
@@ -11,7 +11,7 @@ import collections
 Flag = collections.namedtuple("Flag", ["name", "bit"])
 
 
-class Flags(collections.MutableSet):
+class Flags(collections.abc.MutableSet):
     """
     A simple MutableSet implementation that will only accept known flags as
     elements.
diff --git a/testing/web-platform/tests/tools/wptserve/wptserve/config.py b/testing/web-platform/tests/tools/wptserve/wptserve/config.py
index 7766565fe..3c1c36d6f 100644
--- a/testing/web-platform/tests/tools/wptserve/wptserve/config.py
+++ b/testing/web-platform/tests/tools/wptserve/wptserve/config.py
@@ -2,7 +2,8 @@ import copy
 import logging
 import os
 
-from collections import defaultdict, Mapping
+from collections import defaultdict
+from collections.abc import Mapping
 from six import integer_types, iteritems, itervalues, string_types
 
 from . import sslutils
diff --git a/testing/web-platform/tests/webdriver/tests/support/sync.py b/testing/web-platform/tests/webdriver/tests/support/sync.py
index 3fc77131c..8e8f6b819 100644
--- a/testing/web-platform/tests/webdriver/tests/support/sync.py
+++ b/testing/web-platform/tests/webdriver/tests/support/sync.py
@@ -81,7 +81,7 @@ class Poll(object):
 
         exceptions = []
         if ignored_exceptions is not None:
-            if isinstance(ignored_exceptions, collections.Iterable):
+            if isinstance(ignored_exceptions, collections.abc.Iterable):
                 exceptions.extend(iter(ignored_exceptions))
             else:
                 exceptions.append(ignored_exceptions)
-- 
2.31.1


