From c37deb6380e89a84b6d155782cceae3db8aa9bb4 Mon Sep 17 00:00:00 2001 From: Alissa Huskey Date: Tue, 28 May 2024 05:57:48 -0600 Subject: [PATCH] fix MutableMapping import for Python 3.3+ --- pyswagger/compat.py | 7 +++++++ pyswagger/io.py | 3 ++- pyswagger/utils.py | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 pyswagger/compat.py diff --git a/pyswagger/compat.py b/pyswagger/compat.py new file mode 100644 index 0000000..b641ef9 --- /dev/null +++ b/pyswagger/compat.py @@ -0,0 +1,7 @@ +"""Compatability.""" + +try: + from collections import MutableMapping +except ImportError: + # Python 3.3+ + from collections.abc import MutableMapping diff --git a/pyswagger/io.py b/pyswagger/io.py index 75569c2..a0859f5 100644 --- a/pyswagger/io.py +++ b/pyswagger/io.py @@ -1,4 +1,5 @@ from __future__ import absolute_import +from .compat import MutableMapping from .primitives.comm import PrimJSONEncoder from .utils import final, deref, CaseInsensitiveDict from pyswagger import errs @@ -388,7 +389,7 @@ def apply_with(self, status=None, raw=None, header=None): final(self.__op.responses.get('default', None))) if header != None: - if isinstance(header, (collections.Mapping, collections.MutableMapping)): + if isinstance(header, (collections.Mapping, MutableMapping)): for k, v in six.iteritems(header): self._convert_header(r, k, v) else: diff --git a/pyswagger/utils.py b/pyswagger/utils.py index 485b245..1057faa 100644 --- a/pyswagger/utils.py +++ b/pyswagger/utils.py @@ -1,4 +1,5 @@ from __future__ import absolute_import +from .compat import MutableMapping from .consts import private from .errs import CycleDetectionError import six @@ -9,7 +10,6 @@ import os import operator import functools -import collections #TODO: accept varg def scope_compose(scope, name, sep=private.SCOPE_SEPARATOR): @@ -596,7 +596,7 @@ def patch_path(base_path, path): return path -class CaseInsensitiveDict(collections.MutableMapping): +class CaseInsensitiveDict(MutableMapping): """ a case insensitive dict: - allow to query with case insensitive keys (get, in) - iteration would return original key