34
34
35
35
""" Identify specific nodes in a JSON document (RFC 6901) """
36
36
37
+ try :
38
+ from collections .abc import Mapping , Sequence
39
+ except ImportError :
40
+ from collections import Mapping , Sequence
41
+
37
42
# Will be parsed by setup.py to determine package metadata
38
43
__author__ = 'Stefan Kögl <[email protected] >'
39
44
__version__ = '1.4'
@@ -191,10 +196,10 @@ def set(self, doc, value, inplace=True):
191
196
def get_part (self , doc , part ):
192
197
""" Returns the next step in the correct type """
193
198
194
- if isinstance (doc , dict ):
199
+ if isinstance (doc , Mapping ):
195
200
return part
196
201
197
- elif isinstance (doc , list ):
202
+ elif isinstance (doc , Sequence ):
198
203
199
204
if part == '-' :
200
205
return part
@@ -220,14 +225,14 @@ def walk(self, doc, part):
220
225
221
226
assert (type (doc ) in (dict , list ) or hasattr (doc , '__getitem__' )), "invalid document type %s" % (type (doc ),)
222
227
223
- if isinstance (doc , dict ):
228
+ if isinstance (doc , Mapping ):
224
229
try :
225
230
return doc [part ]
226
231
227
232
except KeyError :
228
233
raise JsonPointerException ("member '%s' not found in %s" % (part , doc ))
229
234
230
- elif isinstance (doc , list ):
235
+ elif isinstance (doc , Sequence ):
231
236
232
237
if part == '-' :
233
238
return EndOfList (doc )
0 commit comments