summaryrefslogtreecommitdiff
path: root/jsonpointer.py
diff options
context:
space:
mode:
authorStefan Kögl <stefan@skoegl.net>2014-11-03 18:42:01 +0100
committerStefan Kögl <stefan@skoegl.net>2014-11-03 18:48:31 +0100
commitff0fadf67bc1b05967633434c534c872c12e0267 (patch)
tree07ae9d4adf5a80c2b26fce3d9aaf4b20ba1b4da9 /jsonpointer.py
parent7c4a5fcf15a4e577067a67364fa379ddb3acb555 (diff)
downloadpython-json-pointer-ff0fadf67bc1b05967633434c534c872c12e0267.tar.gz
Use ABCs instead of list/dict
see https://github.com/stefankoegl/python-json-patch/issues/33
Diffstat (limited to 'jsonpointer.py')
-rw-r--r--jsonpointer.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/jsonpointer.py b/jsonpointer.py
index 05b4553..bac2e3c 100644
--- a/jsonpointer.py
+++ b/jsonpointer.py
@@ -34,6 +34,11 @@ from __future__ import unicode_literals
""" Identify specific nodes in a JSON document (RFC 6901) """
+try:
+ from collections.abc import Mapping, Sequence
+except ImportError:
+ from collections import Mapping, Sequence
+
# Will be parsed by setup.py to determine package metadata
__author__ = 'Stefan Kögl <stefan@skoegl.net>'
__version__ = '1.4'
@@ -191,10 +196,10 @@ class JsonPointer(object):
def get_part(self, doc, part):
""" Returns the next step in the correct type """
- if isinstance(doc, dict):
+ if isinstance(doc, Mapping):
return part
- elif isinstance(doc, list):
+ elif isinstance(doc, Sequence):
if part == '-':
return part
@@ -220,14 +225,14 @@ class JsonPointer(object):
assert (type(doc) in (dict, list) or hasattr(doc, '__getitem__')), "invalid document type %s" % (type(doc),)
- if isinstance(doc, dict):
+ if isinstance(doc, Mapping):
try:
return doc[part]
except KeyError:
raise JsonPointerException("member '%s' not found in %s" % (part, doc))
- elif isinstance(doc, list):
+ elif isinstance(doc, Sequence):
if part == '-':
return EndOfList(doc)