-
-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy path_dialects.py
More file actions
41 lines (32 loc) · 1.01 KB
/
_dialects.py
File metadata and controls
41 lines (32 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
from typing import Any
from jsonschema.validators import validates
from openapi_schema_validator._specifications import (
REGISTRY as OPENAPI_SPECIFICATIONS,
)
__all__ = [
"OAS31_BASE_DIALECT_ID",
"OAS31_BASE_DIALECT_METASCHEMA",
"register_openapi_dialect",
]
OAS31_BASE_DIALECT_ID = "https://spec.openapis.org/oas/3.1/dialect/base"
OAS31_BASE_DIALECT_METASCHEMA = OPENAPI_SPECIFICATIONS.contents(
OAS31_BASE_DIALECT_ID,
)
_REGISTERED_VALIDATORS: dict[tuple[str, str], Any] = {}
def register_openapi_dialect(
*,
validator: Any,
dialect_id: str,
version_name: str,
metaschema: Any,
) -> Any:
key = (dialect_id, version_name)
registered_validator = _REGISTERED_VALIDATORS.get(key)
if registered_validator is validator:
return validator
if registered_validator is not None:
return registered_validator
validator.META_SCHEMA = metaschema
validator = validates(version_name)(validator)
_REGISTERED_VALIDATORS[key] = validator
return validator