-
Couldn't load subscription status.
- Fork 42
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