Coverage for pydantic/warnings.py: 97.37%

36 statements  

« prev     ^ index     » next       coverage.py v7.9.2, created at 2025-07-15 15:02 +0000

1"""Pydantic-specific warnings.""" 

2 

3from __future__ import annotations as _annotations 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

4 

5from .version import version_short 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

6 

7__all__ = ( 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

8 'PydanticDeprecatedSince20', 

9 'PydanticDeprecatedSince26', 

10 'PydanticDeprecatedSince29', 

11 'PydanticDeprecatedSince210', 

12 'PydanticDeprecatedSince211', 

13 'PydanticDeprecationWarning', 

14 'PydanticExperimentalWarning', 

15) 

16 

17 

18class PydanticDeprecationWarning(DeprecationWarning): 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

19 """A Pydantic specific deprecation warning. 

20 

21 This warning is raised when using deprecated functionality in Pydantic. It provides information on when the 

22 deprecation was introduced and the expected version in which the corresponding functionality will be removed. 

23 

24 Attributes: 

25 message: Description of the warning. 

26 since: Pydantic version in what the deprecation was introduced. 

27 expected_removal: Pydantic version in what the corresponding functionality expected to be removed. 

28 """ 

29 

30 message: str 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

31 since: tuple[int, int] 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

32 expected_removal: tuple[int, int] 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

33 

34 def __init__( 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

35 self, message: str, *args: object, since: tuple[int, int], expected_removal: tuple[int, int] | None = None 

36 ) -> None: 

37 super().__init__(message, *args) 1abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO

38 self.message = message.rstrip('.') 1abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO

39 self.since = since 1abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO

40 self.expected_removal = expected_removal if expected_removal is not None else (since[0] + 1, 0) 1abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO

41 

42 def __str__(self) -> str: 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

43 message = ( 1abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO

44 f'{self.message}. Deprecated in Pydantic V{self.since[0]}.{self.since[1]}' 

45 f' to be removed in V{self.expected_removal[0]}.{self.expected_removal[1]}.' 

46 ) 

47 if self.since == (2, 0): 1abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO

48 message += f' See Pydantic V2 Migration Guide at https://errors.pydantic.dev/{version_short()}/migration/' 1abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO

49 return message 1abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO

50 

51 

52class PydanticDeprecatedSince20(PydanticDeprecationWarning): 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

53 """A specific `PydanticDeprecationWarning` subclass defining functionality deprecated since Pydantic 2.0.""" 

54 

55 def __init__(self, message: str, *args: object) -> None: 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

56 super().__init__(message, *args, since=(2, 0), expected_removal=(3, 0)) 1abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO

57 

58 

59class PydanticDeprecatedSince26(PydanticDeprecationWarning): 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

60 """A specific `PydanticDeprecationWarning` subclass defining functionality deprecated since Pydantic 2.6.""" 

61 

62 def __init__(self, message: str, *args: object) -> None: 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

63 super().__init__(message, *args, since=(2, 6), expected_removal=(3, 0)) 

64 

65 

66class PydanticDeprecatedSince29(PydanticDeprecationWarning): 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

67 """A specific `PydanticDeprecationWarning` subclass defining functionality deprecated since Pydantic 2.9.""" 

68 

69 def __init__(self, message: str, *args: object) -> None: 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

70 super().__init__(message, *args, since=(2, 9), expected_removal=(3, 0)) 1abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO

71 

72 

73class PydanticDeprecatedSince210(PydanticDeprecationWarning): 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

74 """A specific `PydanticDeprecationWarning` subclass defining functionality deprecated since Pydantic 2.10.""" 

75 

76 def __init__(self, message: str, *args: object) -> None: 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

77 super().__init__(message, *args, since=(2, 10), expected_removal=(3, 0)) 1abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO

78 

79 

80class PydanticDeprecatedSince211(PydanticDeprecationWarning): 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

81 """A specific `PydanticDeprecationWarning` subclass defining functionality deprecated since Pydantic 2.11.""" 

82 

83 def __init__(self, message: str, *args: object) -> None: 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

84 super().__init__(message, *args, since=(2, 11), expected_removal=(3, 0)) 1abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO

85 

86 

87class GenericBeforeBaseModelWarning(Warning): 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

88 pass 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

89 

90 

91class PydanticExperimentalWarning(Warning): 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

92 """A Pydantic specific experimental functionality warning. 

93 

94 This warning is raised when using experimental functionality in Pydantic. 

95 It is raised to warn users that the functionality may change or be removed in future versions of Pydantic. 

96 """ 

97 

98 

99class PydanticArbitraryTypeWarning(UserWarning): 1abcdefghijklmnopqrstuvwxyzABPCDEFGHIJKLMNO

100 """Warning raised when Pydantic fails to generate a core schema for an arbitrary type."""