Skip to content

Commit 57351a3

Browse files
committed
Remove resolve_local.
We don't want to grow the public API of RefResolvers, they have enough issues already.
1 parent 6e4c6a7 commit 57351a3

File tree

2 files changed

+15
-19
lines changed

2 files changed

+15
-19
lines changed

jsonschema/_legacy_validators.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,5 +217,6 @@ def recursiveRef(validator, recursiveRef, instance, schema):
217217
else:
218218
break
219219

220-
subschema = validator.resolver.resolve_local(recursiveRef, target)
220+
fragment = recursiveRef.lstrip("#")
221+
subschema = validator.resolver.resolve_fragment(target, fragment)
221222
yield from validator.descend(instance, subschema)

jsonschema/validators.py

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -731,30 +731,23 @@ def _finditem(self, schema, key):
731731

732732
return results
733733

734-
def resolve_local(self, url, schema):
734+
def resolve(self, ref):
735735
"""
736-
Resolve the given reference within the schema
736+
Resolve the given reference.
737737
"""
738+
url = self._urljoin_cache(self.resolution_scope, ref).rstrip("/")
739+
738740
uri, fragment = urldefrag(url)
739741

740-
for subschema in self._finditem(schema, "$id"):
742+
for subschema in self._finditem(self.referrer, "$id"):
741743
target_uri = self._urljoin_cache(
742744
self.resolution_scope, subschema["$id"],
743745
)
744746
if target_uri.rstrip("/") == uri.rstrip("/"):
745747
if fragment:
746748
subschema = self.resolve_fragment(subschema, fragment)
747-
return subschema
749+
return url, subschema
748750

749-
def resolve(self, ref):
750-
"""
751-
Resolve the given reference.
752-
"""
753-
url = self._urljoin_cache(self.resolution_scope, ref).rstrip("/")
754-
local_resolve = self.resolve_local(url, self.referrer)
755-
756-
if local_resolve:
757-
return url, local_resolve
758751
return url, self._remote_cache(url)
759752

760753
def resolve_from_url(self, url):
@@ -789,11 +782,13 @@ def resolve_fragment(self, document, fragment):
789782

790783
fragment = fragment.lstrip("/")
791784

792-
if fragment:
793-
for keyword in ["$anchor", "$dynamicAnchor"]:
794-
for subschema in self._finditem(document, keyword):
795-
if fragment == subschema[keyword]:
796-
return subschema
785+
if not fragment:
786+
return document
787+
788+
for keyword in ["$anchor", "$dynamicAnchor"]:
789+
for subschema in self._finditem(document, keyword):
790+
if fragment == subschema[keyword]:
791+
return subschema
797792

798793
# Resolve via path
799794
parts = unquote(fragment).split("/") if fragment else []

0 commit comments

Comments
 (0)