From ff0fadf67bc1b05967633434c534c872c12e0267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20K=C3=B6gl?= Date: Mon, 3 Nov 2014 18:42:01 +0100 Subject: Use ABCs instead of list/dict see https://github.com/stefankoegl/python-json-patch/issues/33 --- jsonpointer.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'jsonpointer.py') 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 ' __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) -- cgit v1.2.1