Skip to content

Commit 1357a73

Browse files
committed
Handle empty pointers (root pointers) in Resource.pointer.
Resource.lookup did this correctly for fragment-represented pointers, but this function needs to as well. Closes: #148
1 parent a524132 commit 1357a73

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

docs/changes.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
Changelog
33
=========
44

5+
v0.35.1
6+
-------
7+
8+
* Make ``Resource.pointer`` also properly handle empty pointers (which refer to the root document).
9+
This fix likely only affects you if you were using that function directly, as ``Resource.lookup`` already handles empty fragments.
10+
511
v0.35.0
612
-------
713

referencing/_core.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,9 @@ def pointer(self, pointer: str, resolver: Resolver[D]) -> Resolved[D]:
257257
if the pointer points to a location not present in the document
258258
259259
"""
260+
if not pointer:
261+
return self
262+
260263
contents = self.contents
261264
segments: list[int | str] = []
262265
for segment in unquote(pointer[1:]).split("/"):

referencing/tests/test_core.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,12 @@ def test_pointer_to_array(self):
681681
resolver = Registry().resolver()
682682
assert resource.pointer("/foo/bar/0", resolver=resolver).contents == 3
683683

684+
def test_root_pointer(self):
685+
contents = {"foo": "baz"}
686+
resource = Resource.opaque(contents=contents)
687+
resolver = Registry().resolver()
688+
assert resource.pointer("", resolver=resolver).contents == contents
689+
684690
def test_opaque(self):
685691
contents = {"foo": "bar"}
686692
assert Resource.opaque(contents) == Resource(

0 commit comments

Comments
 (0)