1
+ import warnings
1
2
from typing import Any
2
3
from typing import Hashable
3
4
from typing import Mapping
4
5
from typing import Type
5
6
from typing import TypeVar
6
7
7
8
from jsonschema_spec import SchemaPath
9
+ from openapi_spec_validator import validate_spec
8
10
from openapi_spec_validator .validation import openapi_spec_validator_proxy
9
11
10
12
TSpec = TypeVar ("TSpec" , bound = "Spec" )
@@ -20,11 +22,32 @@ def from_dict(
20
22
* args : Any ,
21
23
** kwargs : Any ,
22
24
) -> TSpec :
25
+ if "validator" in kwargs :
23
26
validator = kwargs .pop ("validator" , openapi_spec_validator_proxy )
24
27
if validator is not None :
28
+ warnings .warn (
29
+ "validator parameter is deprecated. "
30
+ "Use spec_validator_cls instead." ,
31
+ DeprecationWarning ,
32
+ )
25
33
base_uri = kwargs .get ("base_uri" , "" )
26
34
spec_url = kwargs .get ("spec_url" )
27
- validator .validate (data , base_uri = base_uri , spec_url = spec_url )
35
+ validate_spec (
36
+ data ,
37
+ base_uri = base_uri ,
38
+ spec_url = spec_url ,
39
+ validator = validator ,
40
+ )
41
+ elif "spec_validator_cls" not in kwargs or kwargs ["spec_validator_cls" ] is not None :
42
+ spec_validator_cls = kwargs .pop ("spec_validator_cls" , None )
43
+ base_uri = kwargs .get ("base_uri" , "" )
44
+ spec_url = kwargs .get ("spec_url" )
45
+ validate_spec (
46
+ data ,
47
+ base_uri = base_uri ,
48
+ spec_url = spec_url ,
49
+ cls = spec_validator_cls ,
50
+ )
28
51
29
52
return super ().from_dict (data , * args , ** kwargs )
30
53
0 commit comments