Skip to content

Commit 7211d7b

Browse files
committed
shortcuts refactor and validators explicit usage
1 parent 1ed28ff commit 7211d7b

File tree

3 files changed

+24
-59
lines changed

3 files changed

+24
-59
lines changed

README.rst

+9-15
Original file line numberDiff line numberDiff line change
@@ -90,16 +90,6 @@ By default, OpenAPI spec version is detected. To validate spec:
9090
...
9191
OpenAPIValidationError: 'info' is a required property
9292
93-
In order to explicitly validate a:
94-
95-
* Swagger / OpenAPI 2.0 spec, import ``validate_v2_spec``
96-
* OpenAPI 3.0 spec, import ``validate_v30_spec``
97-
* OpenAPI 3.1 spec, import ``validate_v31_spec``
98-
99-
instead of ``validate_spec``.
100-
101-
You can also explicitly import ``validate_v3_spec`` which is a shortcut to the latest v3 release.
102-
10393
Add ``spec_url`` to validate spec with relative files:
10494

10595
.. code:: python
@@ -117,13 +107,17 @@ You can also validate spec from url:
117107
118108
In order to explicitly validate a:
119109

120-
* Swagger / OpenAPI 2.0 spec url, import ``validate_v2_spec_url``
121-
* OpenAPI 3.0 spec url, import ``validate_v30_spec_url``
122-
* OpenAPI 3.1 spec url, import ``validate_v31_spec_url``
110+
* Swagger / OpenAPI 2.0 spec, import ``openapi_v2_spec_validator``
111+
* OpenAPI 3.0 spec, import ``openapi_v30_spec_validator``
112+
* OpenAPI 3.1 spec, import ``openapi_v31_spec_validator``
113+
114+
and pass the validator to ``validate_spec`` or ``validate_spec_url`` function:
115+
116+
.. code:: python
123117
124-
instead of ``validate_spec_url``.
118+
validate_spec(spec_dict, validator=openapi_v31_spec_validator)
125119
126-
You can also explicitly import ``validate_v3_spec_url`` which is a shortcut to the latest v3 release.
120+
You can also explicitly import ``openapi_v3_spec_validator`` which is a shortcut to the latest v3 release.
127121

128122
If you want to iterate through validation errors:
129123

openapi_spec_validator/__init__.py

+2-28
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from jsonschema_spec.handlers import default_handlers
22

3-
from openapi_spec_validator.shortcuts import validate_spec_factory
4-
from openapi_spec_validator.shortcuts import validate_spec_url_factory
5-
from openapi_spec_validator.validation import openapi_spec_validator_proxy
3+
from openapi_spec_validator.shortcuts import validate_spec
4+
from openapi_spec_validator.shortcuts import validate_spec_url
65
from openapi_spec_validator.validation import openapi_v2_spec_validator
76
from openapi_spec_validator.validation import openapi_v3_spec_validator
87
from openapi_spec_validator.validation import openapi_v30_spec_validator
@@ -19,31 +18,6 @@
1918
"openapi_v3_spec_validator",
2019
"openapi_v30_spec_validator",
2120
"openapi_v31_spec_validator",
22-
"validate_v2_spec",
23-
"validate_v3_spec",
24-
"validate_v30_spec",
25-
"validate_v31_spec",
2621
"validate_spec",
27-
"validate_v2_spec_url",
28-
"validate_v3_spec_url",
29-
"validate_v30_spec_url",
30-
"validate_v31_spec_url",
3122
"validate_spec_url",
3223
]
33-
34-
# shortcuts
35-
validate_v2_spec = validate_spec_factory(openapi_v2_spec_validator)
36-
validate_v2_spec_url = validate_spec_url_factory(openapi_v2_spec_validator)
37-
38-
validate_v30_spec = validate_spec_factory(openapi_v30_spec_validator)
39-
validate_v30_spec_url = validate_spec_url_factory(openapi_v30_spec_validator)
40-
41-
validate_v31_spec = validate_spec_factory(openapi_v31_spec_validator)
42-
validate_v31_spec_url = validate_spec_url_factory(openapi_v31_spec_validator)
43-
44-
validate_spec = validate_spec_factory(openapi_spec_validator_proxy)
45-
validate_spec_url = validate_spec_url_factory(openapi_spec_validator_proxy)
46-
47-
# aliases to the latest v3 version
48-
validate_v3_spec = validate_v31_spec
49-
validate_v3_spec_url = validate_v31_spec_url

openapi_spec_validator/shortcuts.py

+13-16
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,25 @@
11
"""OpenAPI spec validator shortcuts module."""
22
from typing import Any
3-
from typing import Callable
43
from typing import Hashable
54
from typing import Mapping
65

76
from jsonschema_spec.handlers import all_urls_handler
87

8+
from openapi_spec_validator.validation import openapi_spec_validator_proxy
99
from openapi_spec_validator.validation.protocols import SupportsValidation
1010

1111

12-
def validate_spec_factory(
13-
validator: SupportsValidation,
14-
) -> Callable[[Mapping[Hashable, Any], str], None]:
15-
def validate(spec: Mapping[Hashable, Any], spec_url: str = "") -> None:
16-
return validator.validate(spec, spec_url=spec_url)
12+
def validate_spec(
13+
spec: Mapping[Hashable, Any],
14+
spec_url: str = "",
15+
validator: SupportsValidation = openapi_spec_validator_proxy,
16+
) -> None:
17+
return validator.validate(spec, spec_url=spec_url)
1718

18-
return validate
1919

20-
21-
def validate_spec_url_factory(
22-
validator: SupportsValidation,
23-
) -> Callable[[str], None]:
24-
def validate(spec_url: str) -> None:
25-
spec = all_urls_handler(spec_url)
26-
return validator.validate(spec, spec_url=spec_url)
27-
28-
return validate
20+
def validate_spec_url(
21+
spec_url: str,
22+
validator: SupportsValidation = openapi_spec_validator_proxy,
23+
) -> None:
24+
spec = all_urls_handler(spec_url)
25+
return validator.validate(spec, spec_url=spec_url)

0 commit comments

Comments
 (0)