diff --git a/CHANGELOG.rst b/CHANGELOG.rst index ac713b8a7c..28be6f0c86 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -37,6 +37,9 @@ Changed Contributed by @Kami and @shital. +* Import ABC from collections.abc for Python 3.10 compatibility. (#5007) + Contributed by @tirkarthi + 3.4.0 - March 02, 2021 ---------------------- diff --git a/st2client/st2client/utils/types.py b/st2client/st2client/utils/types.py index ad70f078b9..98298119c7 100644 --- a/st2client/st2client/utils/types.py +++ b/st2client/st2client/utils/types.py @@ -18,12 +18,12 @@ """ from __future__ import absolute_import -import collections +from collections.abc import MutableSet __all__ = ["OrderedSet"] -class OrderedSet(collections.MutableSet): +class OrderedSet(MutableSet): def __init__(self, iterable=None): self.end = end = [] end += [None, end, end] # sentinel node for doubly linked list diff --git a/st2common/st2common/util/db.py b/st2common/st2common/util/db.py index 09191e0c28..2ead2c81cd 100644 --- a/st2common/st2common/util/db.py +++ b/st2common/st2common/util/db.py @@ -15,10 +15,11 @@ from __future__ import absolute_import -import collections import mongoengine import six +from collections.abc import Mapping + def mongodb_to_python_types(value): # Convert MongoDB BaseDict and BaseList types to python dict and list types. @@ -30,7 +31,7 @@ def mongodb_to_python_types(value): # functions used to convert JSON/YAML objects/strings will errored. This is caused # by the PR StackStorm/orquesta#191 which converts dict to collections.Mapping # in YAQL related functions. - elif isinstance(value, collections.Mapping): + elif isinstance(value, Mapping): value = dict(value) # Recursively traverse the dict and list to convert values. diff --git a/st2common/st2common/util/misc.py b/st2common/st2common/util/misc.py index 6a1027e9fe..8c73e1332c 100644 --- a/st2common/st2common/util/misc.py +++ b/st2common/st2common/util/misc.py @@ -20,10 +20,10 @@ import os import re import sys -import collections import functools import six +from collections.abc import Mapping __all__ = [ "prefix_dict_keys", @@ -137,7 +137,7 @@ def deep_update(d, u): """ for k, v in six.iteritems(u): - if isinstance(v, collections.Mapping): + if isinstance(v, Mapping): r = deep_update(d.get(k, {}), v) d[k] = r else: diff --git a/st2common/st2common/util/pack.py b/st2common/st2common/util/pack.py index 43dde60051..4dadba87cb 100644 --- a/st2common/st2common/util/pack.py +++ b/st2common/st2common/util/pack.py @@ -17,10 +17,10 @@ import os import re -import collections import six +from collections.abc import Iterable from st2common.util import schema as util_schema from st2common.constants.pack import MANIFEST_FILE_NAME from st2common.constants.pack import PACK_REF_WHITELIST_REGEX @@ -167,7 +167,7 @@ def validate_config_against_schema( except jsonschema.ValidationError as e: attribute = getattr(e, "path", []) - if isinstance(attribute, (tuple, list, collections.Iterable)): + if isinstance(attribute, (tuple, list, Iterable)): attribute = [str(item) for item in attribute] attribute = ".".join(attribute) else: diff --git a/st2common/st2common/util/types.py b/st2common/st2common/util/types.py index ad70f078b9..98298119c7 100644 --- a/st2common/st2common/util/types.py +++ b/st2common/st2common/util/types.py @@ -18,12 +18,12 @@ """ from __future__ import absolute_import -import collections +from collections.abc import MutableSet __all__ = ["OrderedSet"] -class OrderedSet(collections.MutableSet): +class OrderedSet(MutableSet): def __init__(self, iterable=None): self.end = end = [] end += [None, end, end] # sentinel node for doubly linked list