Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/openapi_schema_validator/_dialects.py: 15%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

20 statements  

1from typing import Any 

2 

3from jsonschema.validators import validates 

4 

5from openapi_schema_validator._specifications import ( 

6 REGISTRY as OPENAPI_SPECIFICATIONS, 

7) 

8 

9__all__ = [ 

10 "OAS31_BASE_DIALECT_ID", 

11 "OAS31_BASE_DIALECT_METASCHEMA", 

12 "OAS32_BASE_DIALECT_ID", 

13 "OAS32_BASE_DIALECT_METASCHEMA", 

14 "register_openapi_dialect", 

15] 

16 

17OAS31_BASE_DIALECT_ID = "https://spec.openapis.org/oas/3.1/dialect/base" 

18OAS31_BASE_DIALECT_METASCHEMA = OPENAPI_SPECIFICATIONS.contents( 

19 OAS31_BASE_DIALECT_ID, 

20) 

21OAS32_BASE_DIALECT_ID = "https://spec.openapis.org/oas/3.2/dialect/2025-09-17" 

22OAS32_BASE_DIALECT_METASCHEMA = OPENAPI_SPECIFICATIONS.contents( 

23 OAS32_BASE_DIALECT_ID, 

24) 

25 

26_REGISTERED_VALIDATORS: dict[tuple[str, str], Any] = {} 

27 

28 

29def register_openapi_dialect( 

30 *, 

31 validator: Any, 

32 dialect_id: str, 

33 version_name: str, 

34 metaschema: Any, 

35) -> Any: 

36 key = (dialect_id, version_name) 

37 registered_validator = _REGISTERED_VALIDATORS.get(key) 

38 

39 if registered_validator is validator: 

40 return validator 

41 if registered_validator is not None: 

42 return registered_validator 

43 

44 validator.META_SCHEMA = metaschema 

45 validator = validates(version_name)(validator) 

46 _REGISTERED_VALIDATORS[key] = validator 

47 return validator