diff options
author | Julian Berman <Julian@GrayVines.com> | 2023-02-14 16:03:59 +0100 |
---|---|---|
committer | Julian Berman <Julian@GrayVines.com> | 2023-02-21 09:58:40 +0200 |
commit | 52340d7820a32336c7835d14ff1886dbae3c0e75 (patch) | |
tree | 0ce97c64b6c5314ce847146a7c000c1f514da9f4 /jsonschema/validators.py | |
parent | 2c8f643bf19a952eabf68e0c4250e5ae5646c035 (diff) | |
download | jsonschema-52340d7820a32336c7835d14ff1886dbae3c0e75.tar.gz |
Offload a small initial bit of id-related code to referencing.
Diffstat (limited to 'jsonschema/validators.py')
-rw-r--r-- | jsonschema/validators.py | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/jsonschema/validators.py b/jsonschema/validators.py index 83864bc..3338551 100644 --- a/jsonschema/validators.py +++ b/jsonschema/validators.py @@ -18,6 +18,7 @@ import warnings from jsonschema_specifications import REGISTRY as SPECIFICATIONS from pyrsistent import m import attr +import referencing.jsonschema from jsonschema import ( _format, @@ -99,15 +100,6 @@ def validates(version): return _validates -def _id_of(schema): - """ - Return the ID of a schema for recent JSON Schema drafts. - """ - if schema is True or schema is False: - return "" - return schema.get("$id", "") - - def _store_schema_list(): return [ (uri, each.contents) for uri, each in SPECIFICATIONS.items() @@ -122,7 +114,7 @@ def create( version=None, type_checker=_types.draft202012_type_checker, format_checker=_format.draft202012_format_checker, - id_of=_id_of, + id_of=referencing.jsonschema.DRAFT202012.id_of, applicable_validators=methodcaller("items"), ): """ @@ -461,7 +453,7 @@ Draft3Validator = create( type_checker=_types.draft3_type_checker, format_checker=_format.draft3_format_checker, version="draft3", - id_of=_legacy_validators.id_of_ignore_ref(property="id"), + id_of=referencing.jsonschema.DRAFT3.id_of, applicable_validators=_legacy_validators.ignore_ref_siblings, ) @@ -500,7 +492,7 @@ Draft4Validator = create( type_checker=_types.draft4_type_checker, format_checker=_format.draft4_format_checker, version="draft4", - id_of=_legacy_validators.id_of_ignore_ref(property="id"), + id_of=referencing.jsonschema.DRAFT4.id_of, applicable_validators=_legacy_validators.ignore_ref_siblings, ) @@ -544,7 +536,7 @@ Draft6Validator = create( type_checker=_types.draft6_type_checker, format_checker=_format.draft6_format_checker, version="draft6", - id_of=_legacy_validators.id_of_ignore_ref(), + id_of=referencing.jsonschema.DRAFT6.id_of, applicable_validators=_legacy_validators.ignore_ref_siblings, ) @@ -589,7 +581,7 @@ Draft7Validator = create( type_checker=_types.draft7_type_checker, format_checker=_format.draft7_format_checker, version="draft7", - id_of=_legacy_validators.id_of_ignore_ref(), + id_of=referencing.jsonschema.DRAFT7.id_of, applicable_validators=_legacy_validators.ignore_ref_siblings, ) @@ -782,7 +774,13 @@ class _RefResolver: self._remote_cache = remote_cache @classmethod - def from_schema(cls, schema, id_of=_id_of, *args, **kwargs): + def from_schema( + cls, + schema, + id_of=referencing.jsonschema.DRAFT202012.id_of, + *args, + **kwargs, + ): """ Construct a resolver from a JSON schema object. @@ -797,7 +795,7 @@ class _RefResolver: `_RefResolver` """ - return cls(base_uri=id_of(schema), referrer=schema, *args, **kwargs) # noqa: B026, E501 + return cls(base_uri=id_of(schema) or "", referrer=schema, *args, **kwargs) # noqa: B026, E501 def push_scope(self, scope): """ |