Coverage for pydantic/errors.py: 100.00%
308 statements
« prev ^ index » next coverage.py v7.6.1, created at 2024-08-15 13:26 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2024-08-15 13:26 +0000
1from decimal import Decimal 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
2from pathlib import Path 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
3from typing import TYPE_CHECKING, Any, Callable, Sequence, Set, Tuple, Type, Union 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
5from pydantic.typing import display_as_type 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
7if TYPE_CHECKING: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
8 from pydantic.typing import DictStrAny
10# explicitly state exports to avoid "from pydantic.errors import *" also importing Decimal, Path etc.
11__all__ = ( 1abcdefghijklmnopqrstPQRSTUuvwxyzABCD
12 'PydanticTypeError',
13 'PydanticValueError',
14 'ConfigError',
15 'MissingError',
16 'ExtraError',
17 'NoneIsNotAllowedError',
18 'NoneIsAllowedError',
19 'WrongConstantError',
20 'NotNoneError',
21 'BoolError',
22 'BytesError',
23 'DictError',
24 'EmailError',
25 'UrlError',
26 'UrlSchemeError',
27 'UrlSchemePermittedError',
28 'UrlUserInfoError',
29 'UrlHostError',
30 'UrlHostTldError',
31 'UrlPortError',
32 'UrlExtraError',
33 'EnumError',
34 'IntEnumError',
35 'EnumMemberError',
36 'IntegerError',
37 'FloatError',
38 'PathError',
39 'PathNotExistsError',
40 'PathNotAFileError',
41 'PathNotADirectoryError',
42 'PyObjectError',
43 'SequenceError',
44 'ListError',
45 'SetError',
46 'FrozenSetError',
47 'TupleError',
48 'TupleLengthError',
49 'ListMinLengthError',
50 'ListMaxLengthError',
51 'ListUniqueItemsError',
52 'SetMinLengthError',
53 'SetMaxLengthError',
54 'FrozenSetMinLengthError',
55 'FrozenSetMaxLengthError',
56 'AnyStrMinLengthError',
57 'AnyStrMaxLengthError',
58 'StrError',
59 'StrRegexError',
60 'NumberNotGtError',
61 'NumberNotGeError',
62 'NumberNotLtError',
63 'NumberNotLeError',
64 'NumberNotMultipleError',
65 'DecimalError',
66 'DecimalIsNotFiniteError',
67 'DecimalMaxDigitsError',
68 'DecimalMaxPlacesError',
69 'DecimalWholeDigitsError',
70 'DateTimeError',
71 'DateError',
72 'DateNotInThePastError',
73 'DateNotInTheFutureError',
74 'TimeError',
75 'DurationError',
76 'HashableError',
77 'UUIDError',
78 'UUIDVersionError',
79 'ArbitraryTypeError',
80 'ClassError',
81 'SubclassError',
82 'JsonError',
83 'JsonTypeError',
84 'PatternError',
85 'DataclassTypeError',
86 'CallableError',
87 'IPvAnyAddressError',
88 'IPvAnyInterfaceError',
89 'IPvAnyNetworkError',
90 'IPv4AddressError',
91 'IPv6AddressError',
92 'IPv4NetworkError',
93 'IPv6NetworkError',
94 'IPv4InterfaceError',
95 'IPv6InterfaceError',
96 'ColorError',
97 'StrictBoolError',
98 'NotDigitError',
99 'LuhnValidationError',
100 'InvalidLengthForBrand',
101 'InvalidByteSize',
102 'InvalidByteSizeUnit',
103 'MissingDiscriminator',
104 'InvalidDiscriminator',
105)
108def cls_kwargs(cls: Type['PydanticErrorMixin'], ctx: 'DictStrAny') -> 'PydanticErrorMixin': 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
109 """
110 For built-in exceptions like ValueError or TypeError, we need to implement
111 __reduce__ to override the default behaviour (instead of __getstate__/__setstate__)
112 By default pickle protocol 2 calls `cls.__new__(cls, *args)`.
113 Since we only use kwargs, we need a little constructor to change that.
114 Note: the callable can't be a lambda as pickle looks in the namespace to find it
115 """
116 return cls(**ctx) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
119class PydanticErrorMixin: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
120 code: str 1EFabcdefghijGHklmnopqrstPQRSTUIJuvwxyzABCD
121 msg_template: str 1EFabcdefghijGHklmnopqrstPQRSTUIJuvwxyzABCD
123 def __init__(self, **ctx: Any) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
124 self.__dict__ = ctx 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
126 def __str__(self) -> str: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
127 return self.msg_template.format(**self.__dict__) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
129 def __reduce__(self) -> Tuple[Callable[..., 'PydanticErrorMixin'], Tuple[Type['PydanticErrorMixin'], 'DictStrAny']]: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
130 return cls_kwargs, (self.__class__, self.__dict__) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
133class PydanticTypeError(PydanticErrorMixin, TypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
134 pass 1EFabcdefghijGHklmnopqrstPQRSTUIJuvwxyzABCD
137class PydanticValueError(PydanticErrorMixin, ValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
138 pass 1EFabcdefghijGHklmnopqrstPQRSTUIJuvwxyzABCD
141class ConfigError(RuntimeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
142 pass 1EFabcdefghijGHklmnopqrstPQRSTUIJuvwxyzABCD
145class MissingError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
146 msg_template = 'field required' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
149class ExtraError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
150 msg_template = 'extra fields not permitted' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
153class NoneIsNotAllowedError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
154 code = 'none.not_allowed' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
155 msg_template = 'none is not an allowed value' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
158class NoneIsAllowedError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
159 code = 'none.allowed' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
160 msg_template = 'value is not none' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
163class WrongConstantError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
164 code = 'const' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
166 def __str__(self) -> str: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
167 permitted = ', '.join(repr(v) for v in self.permitted) # type: ignore 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
168 return f'unexpected value; permitted: {permitted}' 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
171class NotNoneError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
172 code = 'not_none' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
173 msg_template = 'value is not None' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
176class BoolError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
177 msg_template = 'value could not be parsed to a boolean' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
180class BytesError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
181 msg_template = 'byte type expected' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
184class DictError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
185 msg_template = 'value is not a valid dict' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
188class EmailError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
189 msg_template = 'value is not a valid email address' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
192class UrlError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
193 code = 'url' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
196class UrlSchemeError(UrlError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
197 code = 'url.scheme' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
198 msg_template = 'invalid or missing URL scheme' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
201class UrlSchemePermittedError(UrlError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
202 code = 'url.scheme' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
203 msg_template = 'URL scheme not permitted' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
205 def __init__(self, allowed_schemes: Set[str]): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
206 super().__init__(allowed_schemes=allowed_schemes) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
209class UrlUserInfoError(UrlError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
210 code = 'url.userinfo' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
211 msg_template = 'userinfo required in URL but missing' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
214class UrlHostError(UrlError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
215 code = 'url.host' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
216 msg_template = 'URL host invalid' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
219class UrlHostTldError(UrlError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
220 code = 'url.host' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
221 msg_template = 'URL host invalid, top level domain required' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
224class UrlPortError(UrlError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
225 code = 'url.port' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
226 msg_template = 'URL port invalid, port cannot exceed 65535' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
229class UrlExtraError(UrlError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
230 code = 'url.extra' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
231 msg_template = 'URL invalid, extra characters found after valid URL: {extra!r}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
234class EnumMemberError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
235 code = 'enum' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
237 def __str__(self) -> str: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
238 permitted = ', '.join(repr(v.value) for v in self.enum_values) # type: ignore 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
239 return f'value is not a valid enumeration member; permitted: {permitted}' 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
242class IntegerError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
243 msg_template = 'value is not a valid integer' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
246class FloatError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
247 msg_template = 'value is not a valid float' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
250class PathError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
251 msg_template = 'value is not a valid path' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
254class _PathValueError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
255 def __init__(self, *, path: Path) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
256 super().__init__(path=str(path)) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
259class PathNotExistsError(_PathValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
260 code = 'path.not_exists' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
261 msg_template = 'file or directory at path "{path}" does not exist' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
264class PathNotAFileError(_PathValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
265 code = 'path.not_a_file' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
266 msg_template = 'path "{path}" does not point to a file' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
269class PathNotADirectoryError(_PathValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
270 code = 'path.not_a_directory' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
271 msg_template = 'path "{path}" does not point to a directory' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
274class PyObjectError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
275 msg_template = 'ensure this value contains valid import path or valid callable: {error_message}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
278class SequenceError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
279 msg_template = 'value is not a valid sequence' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
282class IterableError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
283 msg_template = 'value is not a valid iterable' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
286class ListError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
287 msg_template = 'value is not a valid list' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
290class SetError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
291 msg_template = 'value is not a valid set' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
294class FrozenSetError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
295 msg_template = 'value is not a valid frozenset' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
298class DequeError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
299 msg_template = 'value is not a valid deque' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
302class TupleError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
303 msg_template = 'value is not a valid tuple' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
306class TupleLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
307 code = 'tuple.length' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
308 msg_template = 'wrong tuple length {actual_length}, expected {expected_length}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
310 def __init__(self, *, actual_length: int, expected_length: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
311 super().__init__(actual_length=actual_length, expected_length=expected_length) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
314class ListMinLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
315 code = 'list.min_items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
316 msg_template = 'ensure this value has at least {limit_value} items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
318 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
319 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
322class ListMaxLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
323 code = 'list.max_items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
324 msg_template = 'ensure this value has at most {limit_value} items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
326 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
327 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
330class ListUniqueItemsError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
331 code = 'list.unique_items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
332 msg_template = 'the list has duplicated items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
335class SetMinLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
336 code = 'set.min_items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
337 msg_template = 'ensure this value has at least {limit_value} items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
339 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
340 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
343class SetMaxLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
344 code = 'set.max_items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
345 msg_template = 'ensure this value has at most {limit_value} items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
347 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
348 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
351class FrozenSetMinLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
352 code = 'frozenset.min_items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
353 msg_template = 'ensure this value has at least {limit_value} items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
355 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
356 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
359class FrozenSetMaxLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
360 code = 'frozenset.max_items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
361 msg_template = 'ensure this value has at most {limit_value} items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
363 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
364 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
367class AnyStrMinLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
368 code = 'any_str.min_length' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
369 msg_template = 'ensure this value has at least {limit_value} characters' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
371 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
372 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
375class AnyStrMaxLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
376 code = 'any_str.max_length' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
377 msg_template = 'ensure this value has at most {limit_value} characters' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
379 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
380 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
383class StrError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
384 msg_template = 'str type expected' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
387class StrRegexError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
388 code = 'str.regex' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
389 msg_template = 'string does not match regex "{pattern}"' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
391 def __init__(self, *, pattern: str) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
392 super().__init__(pattern=pattern) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
395class _NumberBoundError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
396 def __init__(self, *, limit_value: Union[int, float, Decimal]) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
397 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
400class NumberNotGtError(_NumberBoundError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
401 code = 'number.not_gt' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
402 msg_template = 'ensure this value is greater than {limit_value}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
405class NumberNotGeError(_NumberBoundError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
406 code = 'number.not_ge' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
407 msg_template = 'ensure this value is greater than or equal to {limit_value}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
410class NumberNotLtError(_NumberBoundError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
411 code = 'number.not_lt' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
412 msg_template = 'ensure this value is less than {limit_value}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
415class NumberNotLeError(_NumberBoundError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
416 code = 'number.not_le' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
417 msg_template = 'ensure this value is less than or equal to {limit_value}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
420class NumberNotFiniteError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
421 code = 'number.not_finite_number' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
422 msg_template = 'ensure this value is a finite number' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
425class NumberNotMultipleError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
426 code = 'number.not_multiple' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
427 msg_template = 'ensure this value is a multiple of {multiple_of}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
429 def __init__(self, *, multiple_of: Union[int, float, Decimal]) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
430 super().__init__(multiple_of=multiple_of) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
433class DecimalError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
434 msg_template = 'value is not a valid decimal' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
437class DecimalIsNotFiniteError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
438 code = 'decimal.not_finite' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
439 msg_template = 'value is not a valid decimal' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
442class DecimalMaxDigitsError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
443 code = 'decimal.max_digits' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
444 msg_template = 'ensure that there are no more than {max_digits} digits in total' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
446 def __init__(self, *, max_digits: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
447 super().__init__(max_digits=max_digits) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
450class DecimalMaxPlacesError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
451 code = 'decimal.max_places' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
452 msg_template = 'ensure that there are no more than {decimal_places} decimal places' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
454 def __init__(self, *, decimal_places: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
455 super().__init__(decimal_places=decimal_places) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
458class DecimalWholeDigitsError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
459 code = 'decimal.whole_digits' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
460 msg_template = 'ensure that there are no more than {whole_digits} digits before the decimal point' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
462 def __init__(self, *, whole_digits: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
463 super().__init__(whole_digits=whole_digits) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
466class DateTimeError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
467 msg_template = 'invalid datetime format' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
470class DateError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
471 msg_template = 'invalid date format' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
474class DateNotInThePastError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
475 code = 'date.not_in_the_past' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
476 msg_template = 'date is not in the past' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
479class DateNotInTheFutureError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
480 code = 'date.not_in_the_future' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
481 msg_template = 'date is not in the future' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
484class TimeError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
485 msg_template = 'invalid time format' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
488class DurationError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
489 msg_template = 'invalid duration format' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
492class HashableError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
493 msg_template = 'value is not a valid hashable' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
496class UUIDError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
497 msg_template = 'value is not a valid uuid' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
500class UUIDVersionError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
501 code = 'uuid.version' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
502 msg_template = 'uuid version {required_version} expected' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
504 def __init__(self, *, required_version: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
505 super().__init__(required_version=required_version) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
508class ArbitraryTypeError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
509 code = 'arbitrary_type' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
510 msg_template = 'instance of {expected_arbitrary_type} expected' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
512 def __init__(self, *, expected_arbitrary_type: Type[Any]) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
513 super().__init__(expected_arbitrary_type=display_as_type(expected_arbitrary_type)) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
516class ClassError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
517 code = 'class' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
518 msg_template = 'a class is expected' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
521class SubclassError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
522 code = 'subclass' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
523 msg_template = 'subclass of {expected_class} expected' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
525 def __init__(self, *, expected_class: Type[Any]) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
526 super().__init__(expected_class=display_as_type(expected_class)) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
529class JsonError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
530 msg_template = 'Invalid JSON' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
533class JsonTypeError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
534 code = 'json' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
535 msg_template = 'JSON object must be str, bytes or bytearray' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
538class PatternError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
539 code = 'regex_pattern' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
540 msg_template = 'Invalid regular expression' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
543class DataclassTypeError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
544 code = 'dataclass' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
545 msg_template = 'instance of {class_name}, tuple or dict expected' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
548class CallableError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
549 msg_template = '{value} is not callable' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
552class EnumError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
553 code = 'enum_instance' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
554 msg_template = '{value} is not a valid Enum instance' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
557class IntEnumError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
558 code = 'int_enum_instance' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
559 msg_template = '{value} is not a valid IntEnum instance' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
562class IPvAnyAddressError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
563 msg_template = 'value is not a valid IPv4 or IPv6 address' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
566class IPvAnyInterfaceError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
567 msg_template = 'value is not a valid IPv4 or IPv6 interface' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
570class IPvAnyNetworkError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
571 msg_template = 'value is not a valid IPv4 or IPv6 network' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
574class IPv4AddressError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
575 msg_template = 'value is not a valid IPv4 address' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
578class IPv6AddressError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
579 msg_template = 'value is not a valid IPv6 address' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
582class IPv4NetworkError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
583 msg_template = 'value is not a valid IPv4 network' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
586class IPv6NetworkError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
587 msg_template = 'value is not a valid IPv6 network' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
590class IPv4InterfaceError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
591 msg_template = 'value is not a valid IPv4 interface' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
594class IPv6InterfaceError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
595 msg_template = 'value is not a valid IPv6 interface' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
598class ColorError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
599 msg_template = 'value is not a valid color: {reason}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
602class StrictBoolError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
603 msg_template = 'value is not a valid boolean' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
606class NotDigitError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
607 code = 'payment_card_number.digits' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
608 msg_template = 'card number is not all digits' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
611class LuhnValidationError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
612 code = 'payment_card_number.luhn_check' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
613 msg_template = 'card number is not luhn valid' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
616class InvalidLengthForBrand(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
617 code = 'payment_card_number.invalid_length_for_brand' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
618 msg_template = 'Length for a {brand} card must be {required_length}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
621class InvalidByteSize(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
622 msg_template = 'could not parse value and unit from byte string' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
625class InvalidByteSizeUnit(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
626 msg_template = 'could not interpret byte unit: {unit}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
629class MissingDiscriminator(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
630 code = 'discriminated_union.missing_discriminator' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
631 msg_template = 'Discriminator {discriminator_key!r} is missing in value' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
634class InvalidDiscriminator(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
635 code = 'discriminated_union.invalid_discriminator' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
636 msg_template = ( 1abcdefghijklmnopqrstPQRSTUuvwxyzABCD
637 'No match for discriminator {discriminator_key!r} and value {discriminator_value!r} '
638 '(allowed values: {allowed_values})'
639 )
641 def __init__(self, *, discriminator_key: str, discriminator_value: Any, allowed_values: Sequence[Any]) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD
642 super().__init__( 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD
643 discriminator_key=discriminator_key,
644 discriminator_value=discriminator_value,
645 allowed_values=', '.join(map(repr, allowed_values)),
646 )