-
Notifications
You must be signed in to change notification settings - Fork 41
Open
Description
Currently, the JsonPointer.join()
method always returns a JsonPointer
instance, even when called from a subclass:
class Pointer(jsonpointer.JsonPointer):
...
base = Pointer("/some/object")
end = Pointer("/actual/value")
full = base.join(end)
print(type(full))
# <class 'jsonpointer.JsonPointer'>
If join()
(and probably other methods) instead returned instances of self.__class__
instead of JsonPointer
normal behavior would stay the same while allowing subclasses to work as expected.
E.g. with join()
as:
def join(self, suffix):
""" Returns a new JsonPointer with the given suffix append to this ptr """
if isinstance(suffix, self.__class__):
suffix_parts = suffix.parts
elif isinstance(suffix, str):
suffix_parts = self.__class__(suffix).parts
else:
suffix_parts = suffix
try:
return self.__class__.from_parts(chain(self.parts, suffix_parts))
except: # noqa E722
raise JsonPointerException("Invalid suffix")
You'd get:
print(type(JsonPointer("/some/object") / JsonPointer("/actual/value")))
# <class 'jsonpointer.JsonPointer'>
print(type(Pointer("/some/object") / Pointer("/actual/value")))
# <class '__main__.Pointer'>
Metadata
Metadata
Assignees
Labels
No labels