Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/pydantic/__init__.py: 50%

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

56 statements  

1from importlib import import_module 

2from typing import TYPE_CHECKING 

3from warnings import warn 

4 

5from ._migration import getattr_migration 

6from .version import VERSION, _ensure_pydantic_core_version 

7 

8_ensure_pydantic_core_version() 

9del _ensure_pydantic_core_version 

10 

11if TYPE_CHECKING: 

12 # import of virtually everything is supported via `__getattr__` below, 

13 # but we need them here for type checking and IDE support 

14 import pydantic_core 

15 from pydantic_core.core_schema import ( 

16 FieldSerializationInfo, 

17 SerializationInfo, 

18 SerializerFunctionWrapHandler, 

19 ValidationInfo, 

20 ValidatorFunctionWrapHandler, 

21 ) 

22 

23 from . import dataclasses 

24 from .aliases import AliasChoices, AliasGenerator, AliasPath 

25 from .annotated_handlers import GetCoreSchemaHandler, GetJsonSchemaHandler 

26 from .config import ConfigDict, with_config 

27 from .errors import * 

28 from .fields import Field, PrivateAttr, computed_field 

29 from .functional_serializers import ( 

30 PlainSerializer, 

31 SerializeAsAny, 

32 WrapSerializer, 

33 field_serializer, 

34 model_serializer, 

35 ) 

36 from .functional_validators import ( 

37 AfterValidator, 

38 BeforeValidator, 

39 InstanceOf, 

40 ModelWrapValidatorHandler, 

41 PlainValidator, 

42 SkipValidation, 

43 ValidateAs, 

44 WrapValidator, 

45 field_validator, 

46 model_validator, 

47 ) 

48 from .json_schema import WithJsonSchema 

49 from .main import * 

50 from .networks import * 

51 from .type_adapter import TypeAdapter 

52 from .types import * 

53 from .validate_call_decorator import validate_call 

54 from .warnings import ( 

55 PydanticDeprecatedSince20, 

56 PydanticDeprecatedSince26, 

57 PydanticDeprecatedSince29, 

58 PydanticDeprecatedSince210, 

59 PydanticDeprecatedSince211, 

60 PydanticDeprecationWarning, 

61 PydanticExperimentalWarning, 

62 ) 

63 

64 # this encourages pycharm to import `ValidationError` from here, not pydantic_core 

65 ValidationError = pydantic_core.ValidationError 

66 from .deprecated.class_validators import root_validator, validator 

67 from .deprecated.config import BaseConfig, Extra 

68 from .deprecated.tools import * 

69 from .root_model import RootModel 

70 

71__version__ = VERSION 

72__all__ = ( 

73 # dataclasses 

74 'dataclasses', 

75 # functional validators 

76 'field_validator', 

77 'model_validator', 

78 'AfterValidator', 

79 'BeforeValidator', 

80 'PlainValidator', 

81 'WrapValidator', 

82 'SkipValidation', 

83 'ValidateAs', 

84 'InstanceOf', 

85 'ModelWrapValidatorHandler', 

86 # JSON Schema 

87 'WithJsonSchema', 

88 # deprecated V1 functional validators, these are imported via `__getattr__` below 

89 'root_validator', 

90 'validator', 

91 # functional serializers 

92 'field_serializer', 

93 'model_serializer', 

94 'PlainSerializer', 

95 'SerializeAsAny', 

96 'WrapSerializer', 

97 # config 

98 'ConfigDict', 

99 'with_config', 

100 # deprecated V1 config, these are imported via `__getattr__` below 

101 'BaseConfig', 

102 'Extra', 

103 # validate_call 

104 'validate_call', 

105 # errors 

106 'PydanticErrorCodes', 

107 'PydanticUserError', 

108 'PydanticSchemaGenerationError', 

109 'PydanticImportError', 

110 'PydanticUndefinedAnnotation', 

111 'PydanticInvalidForJsonSchema', 

112 'PydanticForbiddenQualifier', 

113 # fields 

114 'Field', 

115 'computed_field', 

116 'PrivateAttr', 

117 # alias 

118 'AliasChoices', 

119 'AliasGenerator', 

120 'AliasPath', 

121 # main 

122 'BaseModel', 

123 'create_model', 

124 # network 

125 'AnyUrl', 

126 'AnyHttpUrl', 

127 'FileUrl', 

128 'HttpUrl', 

129 'FtpUrl', 

130 'WebsocketUrl', 

131 'AnyWebsocketUrl', 

132 'UrlConstraints', 

133 'EmailStr', 

134 'NameEmail', 

135 'IPvAnyAddress', 

136 'IPvAnyInterface', 

137 'IPvAnyNetwork', 

138 'PostgresDsn', 

139 'CockroachDsn', 

140 'AmqpDsn', 

141 'RedisDsn', 

142 'MongoDsn', 

143 'KafkaDsn', 

144 'NatsDsn', 

145 'MySQLDsn', 

146 'MariaDBDsn', 

147 'ClickHouseDsn', 

148 'SnowflakeDsn', 

149 'validate_email', 

150 # root_model 

151 'RootModel', 

152 # deprecated tools, these are imported via `__getattr__` below 

153 'parse_obj_as', 

154 'schema_of', 

155 'schema_json_of', 

156 # types 

157 'Strict', 

158 'StrictStr', 

159 'conbytes', 

160 'conlist', 

161 'conset', 

162 'confrozenset', 

163 'constr', 

164 'StringConstraints', 

165 'ImportString', 

166 'conint', 

167 'PositiveInt', 

168 'NegativeInt', 

169 'NonNegativeInt', 

170 'NonPositiveInt', 

171 'confloat', 

172 'PositiveFloat', 

173 'NegativeFloat', 

174 'NonNegativeFloat', 

175 'NonPositiveFloat', 

176 'FiniteFloat', 

177 'condecimal', 

178 'condate', 

179 'UUID1', 

180 'UUID3', 

181 'UUID4', 

182 'UUID5', 

183 'UUID6', 

184 'UUID7', 

185 'UUID8', 

186 'FilePath', 

187 'DirectoryPath', 

188 'NewPath', 

189 'Json', 

190 'Secret', 

191 'SecretStr', 

192 'SecretBytes', 

193 'SocketPath', 

194 'StrictBool', 

195 'StrictBytes', 

196 'StrictInt', 

197 'StrictFloat', 

198 'PaymentCardNumber', 

199 'ByteSize', 

200 'PastDate', 

201 'FutureDate', 

202 'PastDatetime', 

203 'FutureDatetime', 

204 'AwareDatetime', 

205 'NaiveDatetime', 

206 'AllowInfNan', 

207 'EncoderProtocol', 

208 'EncodedBytes', 

209 'EncodedStr', 

210 'Base64Encoder', 

211 'Base64Bytes', 

212 'Base64Str', 

213 'Base64UrlBytes', 

214 'Base64UrlStr', 

215 'GetPydanticSchema', 

216 'Tag', 

217 'Discriminator', 

218 'JsonValue', 

219 'FailFast', 

220 # type_adapter 

221 'TypeAdapter', 

222 # version 

223 '__version__', 

224 'VERSION', 

225 # warnings 

226 'PydanticDeprecatedSince20', 

227 'PydanticDeprecatedSince26', 

228 'PydanticDeprecatedSince29', 

229 'PydanticDeprecatedSince210', 

230 'PydanticDeprecatedSince211', 

231 'PydanticDeprecationWarning', 

232 'PydanticExperimentalWarning', 

233 # annotated handlers 

234 'GetCoreSchemaHandler', 

235 'GetJsonSchemaHandler', 

236 # pydantic_core 

237 'ValidationError', 

238 'ValidationInfo', 

239 'SerializationInfo', 

240 'ValidatorFunctionWrapHandler', 

241 'FieldSerializationInfo', 

242 'SerializerFunctionWrapHandler', 

243 'OnErrorOmit', 

244) 

245 

246# A mapping of {<member name>: (package, <module name>)} defining dynamic imports 

247_dynamic_imports: 'dict[str, tuple[str, str]]' = { 

248 'dataclasses': (__spec__.parent, '__module__'), 

249 # functional validators 

250 'field_validator': (__spec__.parent, '.functional_validators'), 

251 'model_validator': (__spec__.parent, '.functional_validators'), 

252 'AfterValidator': (__spec__.parent, '.functional_validators'), 

253 'BeforeValidator': (__spec__.parent, '.functional_validators'), 

254 'PlainValidator': (__spec__.parent, '.functional_validators'), 

255 'WrapValidator': (__spec__.parent, '.functional_validators'), 

256 'SkipValidation': (__spec__.parent, '.functional_validators'), 

257 'InstanceOf': (__spec__.parent, '.functional_validators'), 

258 'ValidateAs': (__spec__.parent, '.functional_validators'), 

259 'ModelWrapValidatorHandler': (__spec__.parent, '.functional_validators'), 

260 # JSON Schema 

261 'WithJsonSchema': (__spec__.parent, '.json_schema'), 

262 # functional serializers 

263 'field_serializer': (__spec__.parent, '.functional_serializers'), 

264 'model_serializer': (__spec__.parent, '.functional_serializers'), 

265 'PlainSerializer': (__spec__.parent, '.functional_serializers'), 

266 'SerializeAsAny': (__spec__.parent, '.functional_serializers'), 

267 'WrapSerializer': (__spec__.parent, '.functional_serializers'), 

268 # config 

269 'ConfigDict': (__spec__.parent, '.config'), 

270 'with_config': (__spec__.parent, '.config'), 

271 # validate call 

272 'validate_call': (__spec__.parent, '.validate_call_decorator'), 

273 # errors 

274 'PydanticErrorCodes': (__spec__.parent, '.errors'), 

275 'PydanticUserError': (__spec__.parent, '.errors'), 

276 'PydanticSchemaGenerationError': (__spec__.parent, '.errors'), 

277 'PydanticImportError': (__spec__.parent, '.errors'), 

278 'PydanticUndefinedAnnotation': (__spec__.parent, '.errors'), 

279 'PydanticInvalidForJsonSchema': (__spec__.parent, '.errors'), 

280 'PydanticForbiddenQualifier': (__spec__.parent, '.errors'), 

281 # fields 

282 'Field': (__spec__.parent, '.fields'), 

283 'computed_field': (__spec__.parent, '.fields'), 

284 'PrivateAttr': (__spec__.parent, '.fields'), 

285 # alias 

286 'AliasChoices': (__spec__.parent, '.aliases'), 

287 'AliasGenerator': (__spec__.parent, '.aliases'), 

288 'AliasPath': (__spec__.parent, '.aliases'), 

289 # main 

290 'BaseModel': (__spec__.parent, '.main'), 

291 'create_model': (__spec__.parent, '.main'), 

292 # network 

293 'AnyUrl': (__spec__.parent, '.networks'), 

294 'AnyHttpUrl': (__spec__.parent, '.networks'), 

295 'FileUrl': (__spec__.parent, '.networks'), 

296 'HttpUrl': (__spec__.parent, '.networks'), 

297 'FtpUrl': (__spec__.parent, '.networks'), 

298 'WebsocketUrl': (__spec__.parent, '.networks'), 

299 'AnyWebsocketUrl': (__spec__.parent, '.networks'), 

300 'UrlConstraints': (__spec__.parent, '.networks'), 

301 'EmailStr': (__spec__.parent, '.networks'), 

302 'NameEmail': (__spec__.parent, '.networks'), 

303 'IPvAnyAddress': (__spec__.parent, '.networks'), 

304 'IPvAnyInterface': (__spec__.parent, '.networks'), 

305 'IPvAnyNetwork': (__spec__.parent, '.networks'), 

306 'PostgresDsn': (__spec__.parent, '.networks'), 

307 'CockroachDsn': (__spec__.parent, '.networks'), 

308 'AmqpDsn': (__spec__.parent, '.networks'), 

309 'RedisDsn': (__spec__.parent, '.networks'), 

310 'MongoDsn': (__spec__.parent, '.networks'), 

311 'KafkaDsn': (__spec__.parent, '.networks'), 

312 'NatsDsn': (__spec__.parent, '.networks'), 

313 'MySQLDsn': (__spec__.parent, '.networks'), 

314 'MariaDBDsn': (__spec__.parent, '.networks'), 

315 'ClickHouseDsn': (__spec__.parent, '.networks'), 

316 'SnowflakeDsn': (__spec__.parent, '.networks'), 

317 'validate_email': (__spec__.parent, '.networks'), 

318 # root_model 

319 'RootModel': (__spec__.parent, '.root_model'), 

320 # types 

321 'Strict': (__spec__.parent, '.types'), 

322 'StrictStr': (__spec__.parent, '.types'), 

323 'conbytes': (__spec__.parent, '.types'), 

324 'conlist': (__spec__.parent, '.types'), 

325 'conset': (__spec__.parent, '.types'), 

326 'confrozenset': (__spec__.parent, '.types'), 

327 'constr': (__spec__.parent, '.types'), 

328 'StringConstraints': (__spec__.parent, '.types'), 

329 'ImportString': (__spec__.parent, '.types'), 

330 'conint': (__spec__.parent, '.types'), 

331 'PositiveInt': (__spec__.parent, '.types'), 

332 'NegativeInt': (__spec__.parent, '.types'), 

333 'NonNegativeInt': (__spec__.parent, '.types'), 

334 'NonPositiveInt': (__spec__.parent, '.types'), 

335 'confloat': (__spec__.parent, '.types'), 

336 'PositiveFloat': (__spec__.parent, '.types'), 

337 'NegativeFloat': (__spec__.parent, '.types'), 

338 'NonNegativeFloat': (__spec__.parent, '.types'), 

339 'NonPositiveFloat': (__spec__.parent, '.types'), 

340 'FiniteFloat': (__spec__.parent, '.types'), 

341 'condecimal': (__spec__.parent, '.types'), 

342 'condate': (__spec__.parent, '.types'), 

343 'UUID1': (__spec__.parent, '.types'), 

344 'UUID3': (__spec__.parent, '.types'), 

345 'UUID4': (__spec__.parent, '.types'), 

346 'UUID5': (__spec__.parent, '.types'), 

347 'UUID6': (__spec__.parent, '.types'), 

348 'UUID7': (__spec__.parent, '.types'), 

349 'UUID8': (__spec__.parent, '.types'), 

350 'FilePath': (__spec__.parent, '.types'), 

351 'DirectoryPath': (__spec__.parent, '.types'), 

352 'NewPath': (__spec__.parent, '.types'), 

353 'Json': (__spec__.parent, '.types'), 

354 'Secret': (__spec__.parent, '.types'), 

355 'SecretStr': (__spec__.parent, '.types'), 

356 'SecretBytes': (__spec__.parent, '.types'), 

357 'StrictBool': (__spec__.parent, '.types'), 

358 'StrictBytes': (__spec__.parent, '.types'), 

359 'StrictInt': (__spec__.parent, '.types'), 

360 'StrictFloat': (__spec__.parent, '.types'), 

361 'PaymentCardNumber': (__spec__.parent, '.types'), 

362 'ByteSize': (__spec__.parent, '.types'), 

363 'PastDate': (__spec__.parent, '.types'), 

364 'SocketPath': (__spec__.parent, '.types'), 

365 'FutureDate': (__spec__.parent, '.types'), 

366 'PastDatetime': (__spec__.parent, '.types'), 

367 'FutureDatetime': (__spec__.parent, '.types'), 

368 'AwareDatetime': (__spec__.parent, '.types'), 

369 'NaiveDatetime': (__spec__.parent, '.types'), 

370 'AllowInfNan': (__spec__.parent, '.types'), 

371 'EncoderProtocol': (__spec__.parent, '.types'), 

372 'EncodedBytes': (__spec__.parent, '.types'), 

373 'EncodedStr': (__spec__.parent, '.types'), 

374 'Base64Encoder': (__spec__.parent, '.types'), 

375 'Base64Bytes': (__spec__.parent, '.types'), 

376 'Base64Str': (__spec__.parent, '.types'), 

377 'Base64UrlBytes': (__spec__.parent, '.types'), 

378 'Base64UrlStr': (__spec__.parent, '.types'), 

379 'GetPydanticSchema': (__spec__.parent, '.types'), 

380 'Tag': (__spec__.parent, '.types'), 

381 'Discriminator': (__spec__.parent, '.types'), 

382 'JsonValue': (__spec__.parent, '.types'), 

383 'OnErrorOmit': (__spec__.parent, '.types'), 

384 'FailFast': (__spec__.parent, '.types'), 

385 # type_adapter 

386 'TypeAdapter': (__spec__.parent, '.type_adapter'), 

387 # warnings 

388 'PydanticDeprecatedSince20': (__spec__.parent, '.warnings'), 

389 'PydanticDeprecatedSince26': (__spec__.parent, '.warnings'), 

390 'PydanticDeprecatedSince29': (__spec__.parent, '.warnings'), 

391 'PydanticDeprecatedSince210': (__spec__.parent, '.warnings'), 

392 'PydanticDeprecatedSince211': (__spec__.parent, '.warnings'), 

393 'PydanticDeprecationWarning': (__spec__.parent, '.warnings'), 

394 'PydanticExperimentalWarning': (__spec__.parent, '.warnings'), 

395 # annotated handlers 

396 'GetCoreSchemaHandler': (__spec__.parent, '.annotated_handlers'), 

397 'GetJsonSchemaHandler': (__spec__.parent, '.annotated_handlers'), 

398 # pydantic_core stuff 

399 'ValidationError': ('pydantic_core', '.'), 

400 'ValidationInfo': ('pydantic_core', '.core_schema'), 

401 'SerializationInfo': ('pydantic_core', '.core_schema'), 

402 'ValidatorFunctionWrapHandler': ('pydantic_core', '.core_schema'), 

403 'FieldSerializationInfo': ('pydantic_core', '.core_schema'), 

404 'SerializerFunctionWrapHandler': ('pydantic_core', '.core_schema'), 

405 # deprecated, mostly not included in __all__ 

406 'root_validator': (__spec__.parent, '.deprecated.class_validators'), 

407 'validator': (__spec__.parent, '.deprecated.class_validators'), 

408 'BaseConfig': (__spec__.parent, '.deprecated.config'), 

409 'Extra': (__spec__.parent, '.deprecated.config'), 

410 'parse_obj_as': (__spec__.parent, '.deprecated.tools'), 

411 'schema_of': (__spec__.parent, '.deprecated.tools'), 

412 'schema_json_of': (__spec__.parent, '.deprecated.tools'), 

413 # deprecated dynamic imports 

414 'FieldValidationInfo': ('pydantic_core', '.core_schema'), 

415 'GenerateSchema': (__spec__.parent, '._internal._generate_schema'), 

416} 

417_deprecated_dynamic_imports = {'FieldValidationInfo', 'GenerateSchema'} 

418 

419_getattr_migration = getattr_migration(__name__) 

420 

421 

422def __getattr__(attr_name: str) -> object: 

423 if attr_name in _deprecated_dynamic_imports: 

424 from pydantic.warnings import PydanticDeprecatedSince20 

425 

426 warn( 

427 f'Importing {attr_name} from `pydantic` is deprecated. This feature is either no longer supported, or is not public.', 

428 PydanticDeprecatedSince20, 

429 stacklevel=2, 

430 ) 

431 

432 dynamic_attr = _dynamic_imports.get(attr_name) 

433 if dynamic_attr is None: 

434 return _getattr_migration(attr_name) 

435 

436 package, module_name = dynamic_attr 

437 

438 if module_name == '__module__': 

439 result = import_module(f'.{attr_name}', package=package) 

440 globals()[attr_name] = result 

441 return result 

442 else: 

443 module = import_module(module_name, package=package) 

444 result = getattr(module, attr_name) 

445 g = globals() 

446 for k, (_, v_module_name) in _dynamic_imports.items(): 

447 if v_module_name == module_name and k not in _deprecated_dynamic_imports: 

448 g[k] = getattr(module, k) 

449 return result 

450 

451 

452def __dir__() -> list[str]: 

453 return list(__all__)