diff options
author | Stefan Kögl <stefan@skoegl.net> | 2014-11-03 18:42:01 +0100 |
---|---|---|
committer | Stefan Kögl <stefan@skoegl.net> | 2014-11-03 18:48:31 +0100 |
commit | ff0fadf67bc1b05967633434c534c872c12e0267 (patch) | |
tree | 07ae9d4adf5a80c2b26fce3d9aaf4b20ba1b4da9 /jsonpointer.py | |
parent | 7c4a5fcf15a4e577067a67364fa379ddb3acb555 (diff) | |
download | python-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.py | 13 |
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) |