summaryrefslogtreecommitdiff
path: root/jsonpointer.py
diff options
context:
space:
mode:
authorStefan Kögl <stefan@skoegl.net>2017-09-10 17:39:34 +0200
committerStefan Kögl <stefan@skoegl.net>2017-09-10 17:39:34 +0200
commit1bb180f33504bfbd0b54616208e9ace727506b0d (patch)
tree9b8be369215816f4544a532496e87a223fa40322 /jsonpointer.py
parente9fa6525f3cef553acd86f3083eb07f2dfc80920 (diff)
parent2ca270f01e7667366800e5648c2561d7072dd0e9 (diff)
downloadpython-json-pointer-1bb180f33504bfbd0b54616208e9ace727506b0d.tar.gz
Merge branch 'broad-exception-handling' of https://github.com/thekafkaf/python-json-pointer into thekafkaf-broad-exception-handling
Diffstat (limited to 'jsonpointer.py')
-rw-r--r--jsonpointer.py30
1 files changed, 13 insertions, 17 deletions
diff --git a/jsonpointer.py b/jsonpointer.py
index 4f2bfc7..9a6a613 100644
--- a/jsonpointer.py
+++ b/jsonpointer.py
@@ -228,26 +228,18 @@ class JsonPointer(object):
return part
else:
- raise JsonPointerException("document '%s' does not support indexing, "
+ raise JsonPointerException("Document '%s' does not support indexing, "
"must be mapping/sequence or support __getitem__" % type(doc))
+
def walk(self, doc, part):
- """Walks one step in doc and returns the referenced part"""
+ """ Walks one step in doc and returns the referenced part """
part = self.get_part(doc, part)
- assert hasattr(doc, '__getitem__'), \
- 'invalid document type %s' % type(doc)
-
- if isinstance(doc, Mapping):
- try:
- return doc[part]
-
- except KeyError:
- raise JsonPointerException("member '%s' not found in %s" % (part, doc))
-
- elif isinstance(doc, Sequence):
+ assert hasattr(doc, '__getitem__'), "invalid document type %s" % (type(doc),)
+ if isinstance(doc, Sequence):
if part == '-':
return EndOfList(doc)
@@ -257,16 +249,20 @@ class JsonPointer(object):
except IndexError:
raise JsonPointerException("index '%s' is out of bounds" % (part, ))
- else:
- # Object supports __getitem__, assume custom indexing
+ # Else the object is a mapping or supports __getitem__(so assume custom indexing)
+ try:
return doc[part]
+ except KeyError:
+ raise JsonPointerException("member '%s' not found in %s" % (part, doc))
+
+
def contains(self, ptr):
- """Returns True if self contains the given ptr"""
+ """ Returns True if self contains the given ptr """
return self.parts[:len(ptr.parts)] == ptr.parts
def __contains__(self, item):
- """Returns True if self contains the given ptr"""
+ """ Returns True if self contains the given ptr """
return self.contains(item)
@property