diff --git a/openapi_spec_validator/shortcuts.py b/openapi_spec_validator/shortcuts.py index 3a4a797..121411f 100644 --- a/openapi_spec_validator/shortcuts.py +++ b/openapi_spec_validator/shortcuts.py @@ -2,6 +2,7 @@ from typing import Any from typing import Hashable from typing import Mapping +from typing import Optional from jsonschema_spec.handlers import all_urls_handler @@ -11,10 +12,11 @@ def validate_spec( spec: Mapping[Hashable, Any], - spec_url: str = "", + base_uri: str = "", validator: SupportsValidation = openapi_spec_validator_proxy, + spec_url: Optional[str] = None, ) -> None: - return validator.validate(spec, spec_url=spec_url) + return validator.validate(spec, base_uri=base_uri, spec_url=spec_url) def validate_spec_url( @@ -22,4 +24,4 @@ def validate_spec_url( validator: SupportsValidation = openapi_spec_validator_proxy, ) -> None: spec = all_urls_handler(spec_url) - return validator.validate(spec, spec_url=spec_url) + return validator.validate(spec, base_uri=spec_url) diff --git a/openapi_spec_validator/validation/protocols.py b/openapi_spec_validator/validation/protocols.py index 8480209..f6aa41a 100644 --- a/openapi_spec_validator/validation/protocols.py +++ b/openapi_spec_validator/validation/protocols.py @@ -2,6 +2,7 @@ from typing import Hashable from typing import Iterator from typing import Mapping +from typing import Optional from typing import Protocol from typing import runtime_checkable @@ -14,11 +15,17 @@ def is_valid(self, instance: Mapping[Hashable, Any]) -> bool: ... def iter_errors( - self, instance: Mapping[Hashable, Any], spec_url: str = "" + self, + instance: Mapping[Hashable, Any], + base_uri: str = "", + spec_url: Optional[str] = None, ) -> Iterator[OpenAPIValidationError]: ... def validate( - self, instance: Mapping[Hashable, Any], spec_url: str = "" + self, + instance: Mapping[Hashable, Any], + base_uri: str = "", + spec_url: Optional[str] = None, ) -> None: ... diff --git a/openapi_spec_validator/validation/proxies.py b/openapi_spec_validator/validation/proxies.py index ca4541e..372c6bf 100644 --- a/openapi_spec_validator/validation/proxies.py +++ b/openapi_spec_validator/validation/proxies.py @@ -3,6 +3,7 @@ from typing import Hashable from typing import Iterator from typing import Mapping +from typing import Optional from typing import Tuple from openapi_spec_validator.validation.exceptions import OpenAPIValidationError @@ -21,10 +22,15 @@ def detect(self, instance: Mapping[Hashable, Any]) -> SpecValidator: raise ValidatorDetectError("Spec schema version not detected") def validate( - self, instance: Mapping[Hashable, Any], spec_url: str = "" + self, + instance: Mapping[Hashable, Any], + base_uri: str = "", + spec_url: Optional[str] = None, ) -> None: validator = self.detect(instance) - for err in validator.iter_errors(instance, spec_url=spec_url): + for err in validator.iter_errors( + instance, base_uri=base_uri, spec_url=spec_url + ): raise err def is_valid(self, instance: Mapping[Hashable, Any]) -> bool: @@ -33,7 +39,12 @@ def is_valid(self, instance: Mapping[Hashable, Any]) -> bool: return error is None def iter_errors( - self, instance: Mapping[Hashable, Any], spec_url: str = "" + self, + instance: Mapping[Hashable, Any], + base_uri: str = "", + spec_url: Optional[str] = None, ) -> Iterator[OpenAPIValidationError]: validator = self.detect(instance) - yield from validator.iter_errors(instance, spec_url=spec_url) + yield from validator.iter_errors( + instance, base_uri=base_uri, spec_url=spec_url + )