Skip to content

Commit

Permalink
Fix Python 3.7 deprecation warnings for collections.abc imports (#292)
Browse files Browse the repository at this point in the history
* Fix Python 3.7 deprecation warnings for collections.abc imports

* Fix additional collections.abc imports in lib/transforms/shortener and test/

* Update test/test_scrub_redact_transform typo; remove unused copy import
  • Loading branch information
mike9005 authored and rokob committed Nov 8, 2018
1 parent 0edfc4c commit c1bc132
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 12 deletions.
9 changes: 8 additions & 1 deletion rollbar/lib/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@
import sys
from array import array

try:
# Python 3
from collections.abc import Mapping
except ImportError:
# Python 2.7
from collections import Mapping

import six
from six.moves import urllib

Expand All @@ -15,7 +22,7 @@
integer_types = six.integer_types
number_types = integer_types + (float, )
string_types = six.string_types
sequence_types = (collections.Mapping, list, tuple, set, frozenset, array, collections.deque)
sequence_types = (Mapping, list, tuple, set, frozenset, array, collections.deque)

urlparse = urllib.parse.urlparse
urlsplit = urllib.parse.urlsplit
Expand Down
11 changes: 9 additions & 2 deletions rollbar/lib/transforms/shortener.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@
import collections
import itertools

try:
# Python 3
from collections.abc import Mapping
except ImportError:
# Python 2.7
from collections import Mapping

from rollbar.lib import (
integer_types, iteritems, key_in, number_types, reprlib, sequence_types,
string_types, text)
Expand All @@ -11,7 +18,7 @@
_type_name_mapping = {
'string': string_types,
'long': integer_types,
'mapping': collections.Mapping,
'mapping': Mapping,
'list': list,
'tuple': tuple,
'set': set,
Expand All @@ -34,7 +41,7 @@ def __init__(self, safe_repr=True, keys=None, **sizes):

def _get_max_size(self, obj):
for name, _type in iteritems(_type_name_mapping):
# Special case for dicts since we are using collections.Mapping
# Special case for dicts since we are using collections.abc.Mapping
# to provide better type checking for dict-like objects
if name == 'mapping':
name = 'dict'
Expand Down
14 changes: 11 additions & 3 deletions rollbar/lib/traverse.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
import collections
import logging

try:
# Python 3
from collections.abc import Mapping
from collections.abc import Sequence
except ImportError:
# Python 2.7
from collections import Mapping
from collections import Sequence

from rollbar.lib import binary_type, iteritems, string_types, circular_reference_label

CIRCULAR = -1
Expand Down Expand Up @@ -59,7 +67,7 @@ def get_type(obj):
if isinstance(obj, (string_types, binary_type)):
return STRING

if isinstance(obj, collections.Mapping):
if isinstance(obj, Mapping):
return MAPPING

if isinstance(obj, tuple):
Expand All @@ -71,7 +79,7 @@ def get_type(obj):
if isinstance(obj, set):
return SET

if isinstance(obj, collections.Sequence):
if isinstance(obj, Sequence):
return LIST

return DEFAULT
Expand Down
10 changes: 7 additions & 3 deletions rollbar/test/test_scrub_redact_transform.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import collections
import copy
try:
# Python 3
from collections.abc import Mapping
except ImportError:
# Python 2.7
from collections import Mapping

from rollbar.lib import text, transforms
from rollbar.lib.transforms.scrub_redact import ScrubRedactTransform, REDACT_REF
Expand Down Expand Up @@ -28,7 +32,7 @@ def _assertScrubbed(self, start, expected, redact_char='*', skip_id_check=False)

self.assertEqual(type(result), type(expected))

if isinstance(result, collections.Mapping):
if isinstance(result, Mapping):
self.assertDictEqual(result, expected)
elif isinstance(result, tuple):
self.assertTupleEqual(result, expected)
Expand Down
10 changes: 8 additions & 2 deletions rollbar/test/test_scrub_transform.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import collections
import copy

try:
# Python 3
from collections.abc import Mapping
except ImportError:
# Python 2.7
from collections import Mapping

from rollbar.lib import transforms
from rollbar.lib.transforms.scrub import ScrubTransform

Expand All @@ -23,7 +29,7 @@ def _assertScrubbed(self, suffixes, start, expected, redact_char='*', skip_id_ch

self.assertEqual(type(result), type(expected))

if isinstance(result, collections.Mapping):
if isinstance(result, Mapping):
self.assertDictEqual(result, expected)
elif isinstance(result, tuple):
self.assertTupleEqual(result, expected)
Expand Down
9 changes: 8 additions & 1 deletion rollbar/test/test_serializable_transform.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,13 @@
import copy
import enum

try:
# Python 3
from collections.abc import Mapping
except ImportError:
# Python 2.7
from collections import Mapping

from rollbar.lib import transforms, python_major_version
from rollbar.lib.transforms.serializable import SerializableTransform

Expand Down Expand Up @@ -39,7 +46,7 @@ def _assertSerialized(self, start, expected, safe_repr=True, whitelist=None, ski

self.assertEqual(type(expected), type(result))

if isinstance(result, collections.Mapping):
if isinstance(result, Mapping):
self.assertDictEqual(result, expected)
elif isinstance(result, tuple):
self.assertTupleEqual(result, expected)
Expand Down

0 comments on commit c1bc132

Please sign in to comment.