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

1from decimal import Decimal 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

2from pathlib import Path 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

3from typing import TYPE_CHECKING, Any, Callable, Sequence, Set, Tuple, Type, Union 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

4 

5from pydantic.typing import display_as_type 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

6 

7if TYPE_CHECKING: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

8 from pydantic.typing import DictStrAny 

9 

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) 

106 

107 

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

117 

118 

119class PydanticErrorMixin: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

120 code: str 1EFabcdefghijGHklmnopqrstPQRSTUIJuvwxyzABCD

121 msg_template: str 1EFabcdefghijGHklmnopqrstPQRSTUIJuvwxyzABCD

122 

123 def __init__(self, **ctx: Any) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

124 self.__dict__ = ctx 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

125 

126 def __str__(self) -> str: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

127 return self.msg_template.format(**self.__dict__) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

128 

129 def __reduce__(self) -> Tuple[Callable[..., 'PydanticErrorMixin'], Tuple[Type['PydanticErrorMixin'], 'DictStrAny']]: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

130 return cls_kwargs, (self.__class__, self.__dict__) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

131 

132 

133class PydanticTypeError(PydanticErrorMixin, TypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

134 pass 1EFabcdefghijGHklmnopqrstPQRSTUIJuvwxyzABCD

135 

136 

137class PydanticValueError(PydanticErrorMixin, ValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

138 pass 1EFabcdefghijGHklmnopqrstPQRSTUIJuvwxyzABCD

139 

140 

141class ConfigError(RuntimeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

142 pass 1EFabcdefghijGHklmnopqrstPQRSTUIJuvwxyzABCD

143 

144 

145class MissingError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

146 msg_template = 'field required' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

147 

148 

149class ExtraError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

150 msg_template = 'extra fields not permitted' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

151 

152 

153class NoneIsNotAllowedError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

154 code = 'none.not_allowed' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

155 msg_template = 'none is not an allowed value' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

156 

157 

158class NoneIsAllowedError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

159 code = 'none.allowed' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

160 msg_template = 'value is not none' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

161 

162 

163class WrongConstantError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

164 code = 'const' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

165 

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

169 

170 

171class NotNoneError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

172 code = 'not_none' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

173 msg_template = 'value is not None' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

174 

175 

176class BoolError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

177 msg_template = 'value could not be parsed to a boolean' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

178 

179 

180class BytesError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

181 msg_template = 'byte type expected' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

182 

183 

184class DictError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

185 msg_template = 'value is not a valid dict' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

186 

187 

188class EmailError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

189 msg_template = 'value is not a valid email address' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

190 

191 

192class UrlError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

193 code = 'url' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

194 

195 

196class UrlSchemeError(UrlError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

197 code = 'url.scheme' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

198 msg_template = 'invalid or missing URL scheme' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

199 

200 

201class UrlSchemePermittedError(UrlError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

202 code = 'url.scheme' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

203 msg_template = 'URL scheme not permitted' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

204 

205 def __init__(self, allowed_schemes: Set[str]): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

206 super().__init__(allowed_schemes=allowed_schemes) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

207 

208 

209class UrlUserInfoError(UrlError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

210 code = 'url.userinfo' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

211 msg_template = 'userinfo required in URL but missing' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

212 

213 

214class UrlHostError(UrlError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

215 code = 'url.host' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

216 msg_template = 'URL host invalid' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

217 

218 

219class UrlHostTldError(UrlError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

220 code = 'url.host' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

221 msg_template = 'URL host invalid, top level domain required' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

222 

223 

224class UrlPortError(UrlError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

225 code = 'url.port' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

226 msg_template = 'URL port invalid, port cannot exceed 65535' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

227 

228 

229class UrlExtraError(UrlError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

230 code = 'url.extra' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

231 msg_template = 'URL invalid, extra characters found after valid URL: {extra!r}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

232 

233 

234class EnumMemberError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

235 code = 'enum' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

236 

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

240 

241 

242class IntegerError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

243 msg_template = 'value is not a valid integer' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

244 

245 

246class FloatError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

247 msg_template = 'value is not a valid float' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

248 

249 

250class PathError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

251 msg_template = 'value is not a valid path' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

252 

253 

254class _PathValueError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

255 def __init__(self, *, path: Path) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

256 super().__init__(path=str(path)) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

257 

258 

259class PathNotExistsError(_PathValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

260 code = 'path.not_exists' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

261 msg_template = 'file or directory at path "{path}" does not exist' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

262 

263 

264class PathNotAFileError(_PathValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

265 code = 'path.not_a_file' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

266 msg_template = 'path "{path}" does not point to a file' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

267 

268 

269class PathNotADirectoryError(_PathValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

270 code = 'path.not_a_directory' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

271 msg_template = 'path "{path}" does not point to a directory' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

272 

273 

274class PyObjectError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

275 msg_template = 'ensure this value contains valid import path or valid callable: {error_message}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

276 

277 

278class SequenceError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

279 msg_template = 'value is not a valid sequence' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

280 

281 

282class IterableError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

283 msg_template = 'value is not a valid iterable' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

284 

285 

286class ListError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

287 msg_template = 'value is not a valid list' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

288 

289 

290class SetError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

291 msg_template = 'value is not a valid set' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

292 

293 

294class FrozenSetError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

295 msg_template = 'value is not a valid frozenset' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

296 

297 

298class DequeError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

299 msg_template = 'value is not a valid deque' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

300 

301 

302class TupleError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

303 msg_template = 'value is not a valid tuple' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

304 

305 

306class TupleLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

307 code = 'tuple.length' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

308 msg_template = 'wrong tuple length {actual_length}, expected {expected_length}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

309 

310 def __init__(self, *, actual_length: int, expected_length: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

311 super().__init__(actual_length=actual_length, expected_length=expected_length) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

312 

313 

314class ListMinLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

315 code = 'list.min_items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

316 msg_template = 'ensure this value has at least {limit_value} items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

317 

318 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

319 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

320 

321 

322class ListMaxLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

323 code = 'list.max_items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

324 msg_template = 'ensure this value has at most {limit_value} items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

325 

326 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

327 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

328 

329 

330class ListUniqueItemsError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

331 code = 'list.unique_items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

332 msg_template = 'the list has duplicated items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

333 

334 

335class SetMinLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

336 code = 'set.min_items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

337 msg_template = 'ensure this value has at least {limit_value} items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

338 

339 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

340 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

341 

342 

343class SetMaxLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

344 code = 'set.max_items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

345 msg_template = 'ensure this value has at most {limit_value} items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

346 

347 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

348 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

349 

350 

351class FrozenSetMinLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

352 code = 'frozenset.min_items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

353 msg_template = 'ensure this value has at least {limit_value} items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

354 

355 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

356 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

357 

358 

359class FrozenSetMaxLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

360 code = 'frozenset.max_items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

361 msg_template = 'ensure this value has at most {limit_value} items' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

362 

363 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

364 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

365 

366 

367class AnyStrMinLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

368 code = 'any_str.min_length' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

369 msg_template = 'ensure this value has at least {limit_value} characters' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

370 

371 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

372 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

373 

374 

375class AnyStrMaxLengthError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

376 code = 'any_str.max_length' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

377 msg_template = 'ensure this value has at most {limit_value} characters' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

378 

379 def __init__(self, *, limit_value: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

380 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

381 

382 

383class StrError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

384 msg_template = 'str type expected' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

385 

386 

387class StrRegexError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

388 code = 'str.regex' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

389 msg_template = 'string does not match regex "{pattern}"' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

390 

391 def __init__(self, *, pattern: str) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

392 super().__init__(pattern=pattern) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

393 

394 

395class _NumberBoundError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

396 def __init__(self, *, limit_value: Union[int, float, Decimal]) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

397 super().__init__(limit_value=limit_value) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

398 

399 

400class NumberNotGtError(_NumberBoundError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

401 code = 'number.not_gt' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

402 msg_template = 'ensure this value is greater than {limit_value}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

403 

404 

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

408 

409 

410class NumberNotLtError(_NumberBoundError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

411 code = 'number.not_lt' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

412 msg_template = 'ensure this value is less than {limit_value}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

413 

414 

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

418 

419 

420class NumberNotFiniteError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

421 code = 'number.not_finite_number' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

422 msg_template = 'ensure this value is a finite number' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

423 

424 

425class NumberNotMultipleError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

426 code = 'number.not_multiple' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

427 msg_template = 'ensure this value is a multiple of {multiple_of}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

428 

429 def __init__(self, *, multiple_of: Union[int, float, Decimal]) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

430 super().__init__(multiple_of=multiple_of) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

431 

432 

433class DecimalError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

434 msg_template = 'value is not a valid decimal' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

435 

436 

437class DecimalIsNotFiniteError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

438 code = 'decimal.not_finite' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

439 msg_template = 'value is not a valid decimal' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

440 

441 

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

445 

446 def __init__(self, *, max_digits: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

447 super().__init__(max_digits=max_digits) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

448 

449 

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

453 

454 def __init__(self, *, decimal_places: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

455 super().__init__(decimal_places=decimal_places) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

456 

457 

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

461 

462 def __init__(self, *, whole_digits: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

463 super().__init__(whole_digits=whole_digits) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

464 

465 

466class DateTimeError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

467 msg_template = 'invalid datetime format' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

468 

469 

470class DateError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

471 msg_template = 'invalid date format' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

472 

473 

474class DateNotInThePastError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

475 code = 'date.not_in_the_past' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

476 msg_template = 'date is not in the past' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

477 

478 

479class DateNotInTheFutureError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

480 code = 'date.not_in_the_future' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

481 msg_template = 'date is not in the future' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

482 

483 

484class TimeError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

485 msg_template = 'invalid time format' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

486 

487 

488class DurationError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

489 msg_template = 'invalid duration format' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

490 

491 

492class HashableError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

493 msg_template = 'value is not a valid hashable' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

494 

495 

496class UUIDError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

497 msg_template = 'value is not a valid uuid' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

498 

499 

500class UUIDVersionError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

501 code = 'uuid.version' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

502 msg_template = 'uuid version {required_version} expected' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

503 

504 def __init__(self, *, required_version: int) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

505 super().__init__(required_version=required_version) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

506 

507 

508class ArbitraryTypeError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

509 code = 'arbitrary_type' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

510 msg_template = 'instance of {expected_arbitrary_type} expected' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

511 

512 def __init__(self, *, expected_arbitrary_type: Type[Any]) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

513 super().__init__(expected_arbitrary_type=display_as_type(expected_arbitrary_type)) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

514 

515 

516class ClassError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

517 code = 'class' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

518 msg_template = 'a class is expected' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

519 

520 

521class SubclassError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

522 code = 'subclass' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

523 msg_template = 'subclass of {expected_class} expected' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

524 

525 def __init__(self, *, expected_class: Type[Any]) -> None: 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

526 super().__init__(expected_class=display_as_type(expected_class)) 1EFabcdefghijGHklmnopqrstKLMNOIJuvwxyzABCD

527 

528 

529class JsonError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

530 msg_template = 'Invalid JSON' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

531 

532 

533class JsonTypeError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

534 code = 'json' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

535 msg_template = 'JSON object must be str, bytes or bytearray' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

536 

537 

538class PatternError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

539 code = 'regex_pattern' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

540 msg_template = 'Invalid regular expression' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

541 

542 

543class DataclassTypeError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

544 code = 'dataclass' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

545 msg_template = 'instance of {class_name}, tuple or dict expected' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

546 

547 

548class CallableError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

549 msg_template = '{value} is not callable' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

550 

551 

552class EnumError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

553 code = 'enum_instance' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

554 msg_template = '{value} is not a valid Enum instance' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

555 

556 

557class IntEnumError(PydanticTypeError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

558 code = 'int_enum_instance' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

559 msg_template = '{value} is not a valid IntEnum instance' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

560 

561 

562class IPvAnyAddressError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

563 msg_template = 'value is not a valid IPv4 or IPv6 address' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

564 

565 

566class IPvAnyInterfaceError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

567 msg_template = 'value is not a valid IPv4 or IPv6 interface' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

568 

569 

570class IPvAnyNetworkError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

571 msg_template = 'value is not a valid IPv4 or IPv6 network' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

572 

573 

574class IPv4AddressError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

575 msg_template = 'value is not a valid IPv4 address' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

576 

577 

578class IPv6AddressError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

579 msg_template = 'value is not a valid IPv6 address' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

580 

581 

582class IPv4NetworkError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

583 msg_template = 'value is not a valid IPv4 network' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

584 

585 

586class IPv6NetworkError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

587 msg_template = 'value is not a valid IPv6 network' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

588 

589 

590class IPv4InterfaceError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

591 msg_template = 'value is not a valid IPv4 interface' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

592 

593 

594class IPv6InterfaceError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

595 msg_template = 'value is not a valid IPv6 interface' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

596 

597 

598class ColorError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

599 msg_template = 'value is not a valid color: {reason}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

600 

601 

602class StrictBoolError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

603 msg_template = 'value is not a valid boolean' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

604 

605 

606class NotDigitError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

607 code = 'payment_card_number.digits' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

608 msg_template = 'card number is not all digits' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

609 

610 

611class LuhnValidationError(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

612 code = 'payment_card_number.luhn_check' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

613 msg_template = 'card number is not luhn valid' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

614 

615 

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

619 

620 

621class InvalidByteSize(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

622 msg_template = 'could not parse value and unit from byte string' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

623 

624 

625class InvalidByteSizeUnit(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

626 msg_template = 'could not interpret byte unit: {unit}' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

627 

628 

629class MissingDiscriminator(PydanticValueError): 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

630 code = 'discriminated_union.missing_discriminator' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

631 msg_template = 'Discriminator {discriminator_key!r} is missing in value' 1EFabcdefghijGHklmnopqrstKLMNPQRSTUOIJuvwxyzABCD

632 

633 

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 ) 

640 

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 )