Skip to content

Commit 795a1f1

Browse files
committed
RequestValidator and ResponseValidator backward compatibility
1 parent 99fb081 commit 795a1f1

File tree

8 files changed

+172
-58
lines changed

8 files changed

+172
-58
lines changed

openapi_core/validation/request/__init__.py

+16-12
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,16 @@
1111
DetectSpecRequestValidatorProxy,
1212
)
1313
from openapi_core.validation.request.proxies import SpecRequestValidatorProxy
14-
from openapi_core.validation.request.validators import RequestBodyValidator
1514
from openapi_core.validation.request.validators import (
16-
RequestParametersValidator,
15+
APICallRequestBodyValidator,
1716
)
18-
from openapi_core.validation.request.validators import RequestSecurityValidator
19-
from openapi_core.validation.request.validators import RequestValidator
17+
from openapi_core.validation.request.validators import (
18+
APICallRequestParametersValidator,
19+
)
20+
from openapi_core.validation.request.validators import (
21+
APICallRequestSecurityValidator,
22+
)
23+
from openapi_core.validation.request.validators import APICallRequestValidator
2024
from openapi_core.validation.request.validators import V30RequestBodyValidator
2125
from openapi_core.validation.request.validators import (
2226
V30RequestParametersValidator,
@@ -85,36 +89,36 @@
8589

8690
# spec validators
8791
openapi_v30_request_body_validator = SpecRequestValidatorProxy(
88-
RequestBodyValidator,
92+
APICallRequestBodyValidator,
8993
schema_unmarshallers_factory=oas30_request_schema_unmarshallers_factory,
9094
)
9195
openapi_v30_request_parameters_validator = SpecRequestValidatorProxy(
92-
RequestParametersValidator,
96+
APICallRequestParametersValidator,
9397
schema_unmarshallers_factory=oas30_request_schema_unmarshallers_factory,
9498
)
9599
openapi_v30_request_security_validator = SpecRequestValidatorProxy(
96-
RequestSecurityValidator,
100+
APICallRequestSecurityValidator,
97101
schema_unmarshallers_factory=oas30_request_schema_unmarshallers_factory,
98102
)
99103
openapi_v30_request_validator = SpecRequestValidatorProxy(
100-
RequestValidator,
104+
APICallRequestValidator,
101105
schema_unmarshallers_factory=oas30_request_schema_unmarshallers_factory,
102106
)
103107

104108
openapi_v31_request_body_validator = SpecRequestValidatorProxy(
105-
RequestBodyValidator,
109+
APICallRequestBodyValidator,
106110
schema_unmarshallers_factory=oas31_schema_unmarshallers_factory,
107111
)
108112
openapi_v31_request_parameters_validator = SpecRequestValidatorProxy(
109-
RequestParametersValidator,
113+
APICallRequestParametersValidator,
110114
schema_unmarshallers_factory=oas31_schema_unmarshallers_factory,
111115
)
112116
openapi_v31_request_security_validator = SpecRequestValidatorProxy(
113-
RequestSecurityValidator,
117+
APICallRequestSecurityValidator,
114118
schema_unmarshallers_factory=oas31_schema_unmarshallers_factory,
115119
)
116120
openapi_v31_request_validator = SpecRequestValidatorProxy(
117-
RequestValidator,
121+
APICallRequestValidator,
118122
schema_unmarshallers_factory=oas31_schema_unmarshallers_factory,
119123
)
120124

openapi_core/validation/request/proxies.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""OpenAPI spec validator validation proxies module."""
22
import warnings
3+
from typing import TYPE_CHECKING
34
from typing import Any
45
from typing import Iterator
56
from typing import Mapping
@@ -11,15 +12,17 @@
1112
from openapi_core.validation.exceptions import ValidatorDetectError
1213
from openapi_core.validation.request.datatypes import RequestValidationResult
1314
from openapi_core.validation.request.protocols import Request
14-
from openapi_core.validation.request.validators import (
15-
BaseAPICallRequestValidator,
16-
)
15+
16+
if TYPE_CHECKING:
17+
from openapi_core.validation.request.validators import (
18+
BaseAPICallRequestValidator,
19+
)
1720

1821

1922
class SpecRequestValidatorProxy:
2023
def __init__(
2124
self,
22-
validator_cls: Type[BaseAPICallRequestValidator],
25+
validator_cls: Type["BaseAPICallRequestValidator"],
2326
**validator_kwargs: Any,
2427
):
2528
self.validator_cls = validator_cls
@@ -32,7 +35,8 @@ def validate(
3235
base_url: Optional[str] = None,
3336
) -> RequestValidationResult:
3437
warnings.warn(
35-
"openapi_request_validator is deprecated. "
38+
"RequestValidator class and it's"
39+
"openapi_request_validator instances are deprecated. "
3640
f"Use {self.validator_cls.__name__} class instead.",
3741
DeprecationWarning,
3842
)

openapi_core/validation/request/validators.py

+27-12
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
from openapi_core.validation.request.protocols import BaseRequest
6666
from openapi_core.validation.request.protocols import Request
6767
from openapi_core.validation.request.protocols import WebhookRequest
68+
from openapi_core.validation.request.proxies import SpecRequestValidatorProxy
6869
from openapi_core.validation.validators import BaseAPICallValidator
6970
from openapi_core.validation.validators import BaseValidator
7071
from openapi_core.validation.validators import BaseWebhookValidator
@@ -328,7 +329,7 @@ def validate(self, request: WebhookRequest) -> RequestValidationResult:
328329
raise NotImplementedError
329330

330331

331-
class RequestBodyValidator(BaseAPICallRequestValidator):
332+
class APICallRequestBodyValidator(BaseAPICallRequestValidator):
332333
def validate(self, request: Request) -> RequestValidationResult:
333334
try:
334335
_, operation, _, _, _ = self._find_path(request)
@@ -338,7 +339,7 @@ def validate(self, request: Request) -> RequestValidationResult:
338339
return self._validate_body(request, operation)
339340

340341

341-
class RequestParametersValidator(BaseAPICallRequestValidator):
342+
class APICallRequestParametersValidator(BaseAPICallRequestValidator):
342343
def validate(self, request: Request) -> RequestValidationResult:
343344
try:
344345
path, operation, _, path_result, _ = self._find_path(request)
@@ -352,7 +353,7 @@ def validate(self, request: Request) -> RequestValidationResult:
352353
return self._validate_parameters(request, operation, path)
353354

354355

355-
class RequestSecurityValidator(BaseAPICallRequestValidator):
356+
class APICallRequestSecurityValidator(BaseAPICallRequestValidator):
356357
def validate(self, request: Request) -> RequestValidationResult:
357358
try:
358359
_, operation, _, _, _ = self._find_path(request)
@@ -362,7 +363,7 @@ def validate(self, request: Request) -> RequestValidationResult:
362363
return self._validate_security(request, operation)
363364

364365

365-
class RequestValidator(BaseAPICallRequestValidator):
366+
class APICallRequestValidator(BaseAPICallRequestValidator):
366367
def validate(self, request: Request) -> RequestValidationResult:
367368
try:
368369
path, operation, _, path_result, _ = self._find_path(request)
@@ -426,35 +427,35 @@ def validate(self, request: WebhookRequest) -> RequestValidationResult:
426427
return self._validate_security(request, operation)
427428

428429

429-
class V30RequestBodyValidator(RequestBodyValidator):
430+
class V30RequestBodyValidator(APICallRequestBodyValidator):
430431
schema_unmarshallers_factory = oas30_request_schema_unmarshallers_factory
431432

432433

433-
class V30RequestParametersValidator(RequestParametersValidator):
434+
class V30RequestParametersValidator(APICallRequestParametersValidator):
434435
schema_unmarshallers_factory = oas30_request_schema_unmarshallers_factory
435436

436437

437-
class V30RequestSecurityValidator(RequestSecurityValidator):
438+
class V30RequestSecurityValidator(APICallRequestSecurityValidator):
438439
schema_unmarshallers_factory = oas30_request_schema_unmarshallers_factory
439440

440441

441-
class V30RequestValidator(RequestValidator):
442+
class V30RequestValidator(APICallRequestValidator):
442443
schema_unmarshallers_factory = oas30_request_schema_unmarshallers_factory
443444

444445

445-
class V31RequestBodyValidator(RequestBodyValidator):
446+
class V31RequestBodyValidator(APICallRequestBodyValidator):
446447
schema_unmarshallers_factory = oas31_schema_unmarshallers_factory
447448

448449

449-
class V31RequestParametersValidator(RequestParametersValidator):
450+
class V31RequestParametersValidator(APICallRequestParametersValidator):
450451
schema_unmarshallers_factory = oas31_schema_unmarshallers_factory
451452

452453

453-
class V31RequestSecurityValidator(RequestSecurityValidator):
454+
class V31RequestSecurityValidator(APICallRequestSecurityValidator):
454455
schema_unmarshallers_factory = oas31_schema_unmarshallers_factory
455456

456457

457-
class V31RequestValidator(RequestValidator):
458+
class V31RequestValidator(APICallRequestValidator):
458459
schema_unmarshallers_factory = oas31_schema_unmarshallers_factory
459460
path_finder_cls = WebhookPathFinder
460461

@@ -477,3 +478,17 @@ class V31WebhookRequestSecurityValidator(WebhookRequestSecurityValidator):
477478
class V31WebhookRequestValidator(WebhookRequestValidator):
478479
schema_unmarshallers_factory = oas31_schema_unmarshallers_factory
479480
path_finder_cls = WebhookPathFinder
481+
482+
483+
# backward compatibility
484+
class RequestValidator(SpecRequestValidatorProxy):
485+
def __init__(
486+
self,
487+
schema_unmarshallers_factory: SchemaUnmarshallersFactory,
488+
**kwargs: Any,
489+
):
490+
super().__init__(
491+
APICallRequestValidator,
492+
schema_unmarshallers_factory=schema_unmarshallers_factory,
493+
**kwargs,
494+
)

openapi_core/validation/response/__init__.py

+13-9
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,15 @@
1111
DetectResponseValidatorProxy,
1212
)
1313
from openapi_core.validation.response.proxies import SpecResponseValidatorProxy
14-
from openapi_core.validation.response.validators import ResponseDataValidator
1514
from openapi_core.validation.response.validators import (
16-
ResponseHeadersValidator,
15+
APICallResponseDataValidator,
16+
)
17+
from openapi_core.validation.response.validators import (
18+
APICallResponseHeadersValidator,
19+
)
20+
from openapi_core.validation.response.validators import (
21+
APICallResponseValidator,
1722
)
18-
from openapi_core.validation.response.validators import ResponseValidator
1923
from openapi_core.validation.response.validators import (
2024
V30ResponseDataValidator,
2125
)
@@ -72,28 +76,28 @@
7276

7377
# spec validators
7478
openapi_v30_response_data_validator = SpecResponseValidatorProxy(
75-
ResponseDataValidator,
79+
APICallResponseDataValidator,
7680
schema_unmarshallers_factory=oas30_response_schema_unmarshallers_factory,
7781
)
7882
openapi_v30_response_headers_validator = SpecResponseValidatorProxy(
79-
ResponseHeadersValidator,
83+
APICallResponseHeadersValidator,
8084
schema_unmarshallers_factory=oas30_response_schema_unmarshallers_factory,
8185
)
8286
openapi_v30_response_validator = SpecResponseValidatorProxy(
83-
ResponseValidator,
87+
APICallResponseValidator,
8488
schema_unmarshallers_factory=oas30_response_schema_unmarshallers_factory,
8589
)
8690

8791
openapi_v31_response_data_validator = SpecResponseValidatorProxy(
88-
ResponseDataValidator,
92+
APICallResponseDataValidator,
8993
schema_unmarshallers_factory=oas31_schema_unmarshallers_factory,
9094
)
9195
openapi_v31_response_headers_validator = SpecResponseValidatorProxy(
92-
ResponseHeadersValidator,
96+
APICallResponseHeadersValidator,
9397
schema_unmarshallers_factory=oas31_schema_unmarshallers_factory,
9498
)
9599
openapi_v31_response_validator = SpecResponseValidatorProxy(
96-
ResponseValidator,
100+
APICallResponseValidator,
97101
schema_unmarshallers_factory=oas31_schema_unmarshallers_factory,
98102
)
99103

openapi_core/validation/response/proxies.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""OpenAPI spec validator validation proxies module."""
22
import warnings
3+
from typing import TYPE_CHECKING
34
from typing import Any
45
from typing import Iterator
56
from typing import Mapping
@@ -12,15 +13,17 @@
1213
from openapi_core.validation.request.protocols import Request
1314
from openapi_core.validation.response.datatypes import ResponseValidationResult
1415
from openapi_core.validation.response.protocols import Response
15-
from openapi_core.validation.response.validators import (
16-
BaseAPICallResponseValidator,
17-
)
16+
17+
if TYPE_CHECKING:
18+
from openapi_core.validation.response.validators import (
19+
BaseAPICallResponseValidator,
20+
)
1821

1922

2023
class SpecResponseValidatorProxy:
2124
def __init__(
2225
self,
23-
validator_cls: Type[BaseAPICallResponseValidator],
26+
validator_cls: Type["BaseAPICallResponseValidator"],
2427
**validator_kwargs: Any,
2528
):
2629
self.validator_cls = validator_cls
@@ -34,7 +37,8 @@ def validate(
3437
base_url: Optional[str] = None,
3538
) -> ResponseValidationResult:
3639
warnings.warn(
37-
"openapi_response_validator is deprecated. "
40+
"ResponseValidator class and it's"
41+
"openapi_response_validator instances are deprecated. "
3842
f"Use {self.validator_cls.__name__} class instead.",
3943
DeprecationWarning,
4044
)

0 commit comments

Comments
 (0)