Switch from 'collections' -> 'collections.abc'
Resolve the following deprecation warnings on Python 3.x: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working" Note that even though we're in Ussuri, I've kept this Python 2 compatible since we haven't done all the other work to mark this package as Python 3-only. Change-Id: Iff4cf1871a6a91d91da03d9b79ef61e715a979cf Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
parent
9da166ae7f
commit
1209fb97c7
@ -21,13 +21,17 @@ store unserialized data generated by generators during
|
|||||||
the report serialization process.
|
the report serialization process.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import collections as col
|
|
||||||
import copy
|
import copy
|
||||||
|
|
||||||
|
try: # python 3
|
||||||
|
from collections import abc
|
||||||
|
except ImportError: # python 2
|
||||||
|
import collections as abc
|
||||||
|
|
||||||
import six
|
import six
|
||||||
|
|
||||||
|
|
||||||
class ReportModel(col.MutableMapping):
|
class ReportModel(abc.MutableMapping):
|
||||||
"""A Report Data Model
|
"""A Report Data Model
|
||||||
|
|
||||||
A report data model contains data generated by some
|
A report data model contains data generated by some
|
||||||
@ -52,9 +56,9 @@ class ReportModel(col.MutableMapping):
|
|||||||
self.attached_view = attached_view
|
self.attached_view = attached_view
|
||||||
|
|
||||||
if data is not None:
|
if data is not None:
|
||||||
if isinstance(data, col.Mapping):
|
if isinstance(data, abc.Mapping):
|
||||||
self.data = dict(data)
|
self.data = dict(data)
|
||||||
elif isinstance(data, col.Sequence):
|
elif isinstance(data, abc.Sequence):
|
||||||
# convert a list [a, b, c] to a dict {0: a, 1: b, 2: c}
|
# convert a list [a, b, c] to a dict {0: a, 1: b, 2: c}
|
||||||
self.data = dict(enumerate(data))
|
self.data = dict(enumerate(data))
|
||||||
else:
|
else:
|
||||||
@ -151,11 +155,11 @@ class ReportModel(col.MutableMapping):
|
|||||||
if hasattr(obj, 'set_current_view_type'):
|
if hasattr(obj, 'set_current_view_type'):
|
||||||
obj.set_current_view_type(tp, visited=visited)
|
obj.set_current_view_type(tp, visited=visited)
|
||||||
|
|
||||||
if isinstance(obj, col.Sequence):
|
if isinstance(obj, abc.Sequence):
|
||||||
for item in obj:
|
for item in obj:
|
||||||
traverse_obj(item)
|
traverse_obj(item)
|
||||||
|
|
||||||
elif isinstance(obj, col.Mapping):
|
elif isinstance(obj, abc.Mapping):
|
||||||
for val in six.itervalues(obj):
|
for val in six.itervalues(obj):
|
||||||
traverse_obj(val)
|
traverse_obj(val)
|
||||||
|
|
||||||
|
@ -12,9 +12,13 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import collections as col
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
try: # python 3
|
||||||
|
from collections import abc
|
||||||
|
except ImportError: # python 2
|
||||||
|
import collections as abc
|
||||||
|
|
||||||
from oslotest import base
|
from oslotest import base
|
||||||
import six
|
import six
|
||||||
|
|
||||||
@ -119,7 +123,7 @@ class TestBaseModel(base.BaseTestCase):
|
|||||||
self.assertEqual('0: a;1: b;', six.text_type(model))
|
self.assertEqual('0: a;1: b;', six.text_type(model))
|
||||||
|
|
||||||
def test_immutable_mappings_produce_mutable_models(self):
|
def test_immutable_mappings_produce_mutable_models(self):
|
||||||
class SomeImmutableMapping(col.Mapping):
|
class SomeImmutableMapping(abc.Mapping):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.data = {'a': 2, 'b': 4, 'c': 8}
|
self.data = {'a': 2, 'b': 4, 'c': 8}
|
||||||
|
|
||||||
|
@ -18,7 +18,10 @@ This modules provides several generic views for
|
|||||||
serializing models into human-readable text.
|
serializing models into human-readable text.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import collections as col
|
try: # python 3
|
||||||
|
from collections import abc
|
||||||
|
except ImportError: # python 2
|
||||||
|
import collections as abc
|
||||||
|
|
||||||
import six
|
import six
|
||||||
|
|
||||||
@ -112,7 +115,7 @@ class KeyValueView(object):
|
|||||||
if rootkey is not None:
|
if rootkey is not None:
|
||||||
res.append((self.indent_str * indent) + rootkey)
|
res.append((self.indent_str * indent) + rootkey)
|
||||||
|
|
||||||
if isinstance(root, col.Mapping):
|
if isinstance(root, abc.Mapping):
|
||||||
if rootkey is None and indent > 0:
|
if rootkey is None and indent > 0:
|
||||||
res.append((self.indent_str * indent) + self.anon_dict)
|
res.append((self.indent_str * indent) + self.anon_dict)
|
||||||
elif rootkey is not None:
|
elif rootkey is not None:
|
||||||
@ -122,7 +125,7 @@ class KeyValueView(object):
|
|||||||
|
|
||||||
for key in sorted(root):
|
for key in sorted(root):
|
||||||
res.extend(serialize(root[key], key, indent + 1))
|
res.extend(serialize(root[key], key, indent + 1))
|
||||||
elif (isinstance(root, col.Sequence) and
|
elif (isinstance(root, abc.Sequence) and
|
||||||
not isinstance(root, six.string_types)):
|
not isinstance(root, six.string_types)):
|
||||||
if rootkey is not None:
|
if rootkey is not None:
|
||||||
res[0] += self.list_sep
|
res[0] += self.list_sep
|
||||||
|
@ -23,10 +23,14 @@ and non-naive serializers check for this attribute and handle
|
|||||||
such strings specially)
|
such strings specially)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import collections as col
|
|
||||||
import copy
|
import copy
|
||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
|
|
||||||
|
try: # python 3
|
||||||
|
from collections import abc
|
||||||
|
except ImportError: # python 2
|
||||||
|
import collections as abc
|
||||||
|
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from oslo_reports import _utils as utils
|
from oslo_reports import _utils as utils
|
||||||
@ -65,10 +69,10 @@ class KeyValueView(object):
|
|||||||
def serialize(rootmodel, rootkeyname):
|
def serialize(rootmodel, rootkeyname):
|
||||||
res = ET.Element(rootkeyname)
|
res = ET.Element(rootkeyname)
|
||||||
|
|
||||||
if isinstance(rootmodel, col.Mapping):
|
if isinstance(rootmodel, abc.Mapping):
|
||||||
for key in sorted(rootmodel):
|
for key in sorted(rootmodel):
|
||||||
res.append(serialize(rootmodel[key], key))
|
res.append(serialize(rootmodel[key], key))
|
||||||
elif (isinstance(rootmodel, col.Sequence) and
|
elif (isinstance(rootmodel, abc.Sequence) and
|
||||||
not isinstance(rootmodel, six.string_types)):
|
not isinstance(rootmodel, six.string_types)):
|
||||||
for val in sorted(rootmodel, key=str):
|
for val in sorted(rootmodel, key=str):
|
||||||
res.append(serialize(val, 'item'))
|
res.append(serialize(val, 'item'))
|
||||||
|
Loading…
Reference in New Issue
Block a user