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 PydanticDeprecatedSince212, 

61 PydanticDeprecationWarning, 

62 PydanticExperimentalWarning, 

63 ) 

64 

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

66 ValidationError = pydantic_core.ValidationError 

67 from .deprecated.class_validators import root_validator, validator 

68 from .deprecated.config import BaseConfig, Extra 

69 from .deprecated.tools import * 

70 from .root_model import RootModel 

71 

72__version__ = VERSION 

73__all__ = ( 

74 # dataclasses 

75 'dataclasses', 

76 # functional validators 

77 'field_validator', 

78 'model_validator', 

79 'AfterValidator', 

80 'BeforeValidator', 

81 'PlainValidator', 

82 'WrapValidator', 

83 'SkipValidation', 

84 'ValidateAs', 

85 'InstanceOf', 

86 'ModelWrapValidatorHandler', 

87 # JSON Schema 

88 'WithJsonSchema', 

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

90 'root_validator', 

91 'validator', 

92 # functional serializers 

93 'field_serializer', 

94 'model_serializer', 

95 'PlainSerializer', 

96 'SerializeAsAny', 

97 'WrapSerializer', 

98 # config 

99 'ConfigDict', 

100 'with_config', 

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

102 'BaseConfig', 

103 'Extra', 

104 # validate_call 

105 'validate_call', 

106 # errors 

107 'PydanticErrorCodes', 

108 'PydanticUserError', 

109 'PydanticSchemaGenerationError', 

110 'PydanticImportError', 

111 'PydanticUndefinedAnnotation', 

112 'PydanticInvalidForJsonSchema', 

113 'PydanticForbiddenQualifier', 

114 # fields 

115 'Field', 

116 'computed_field', 

117 'PrivateAttr', 

118 # alias 

119 'AliasChoices', 

120 'AliasGenerator', 

121 'AliasPath', 

122 # main 

123 'BaseModel', 

124 'create_model', 

125 # network 

126 'AnyUrl', 

127 'AnyHttpUrl', 

128 'FileUrl', 

129 'HttpUrl', 

130 'FtpUrl', 

131 'WebsocketUrl', 

132 'AnyWebsocketUrl', 

133 'UrlConstraints', 

134 'EmailStr', 

135 'NameEmail', 

136 'IPvAnyAddress', 

137 'IPvAnyInterface', 

138 'IPvAnyNetwork', 

139 'PostgresDsn', 

140 'CockroachDsn', 

141 'AmqpDsn', 

142 'RedisDsn', 

143 'MongoDsn', 

144 'KafkaDsn', 

145 'NatsDsn', 

146 'MySQLDsn', 

147 'MariaDBDsn', 

148 'ClickHouseDsn', 

149 'SnowflakeDsn', 

150 'validate_email', 

151 # root_model 

152 'RootModel', 

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

154 'parse_obj_as', 

155 'schema_of', 

156 'schema_json_of', 

157 # types 

158 'Strict', 

159 'StrictStr', 

160 'conbytes', 

161 'conlist', 

162 'conset', 

163 'confrozenset', 

164 'constr', 

165 'StringConstraints', 

166 'ImportString', 

167 'conint', 

168 'PositiveInt', 

169 'NegativeInt', 

170 'NonNegativeInt', 

171 'NonPositiveInt', 

172 'confloat', 

173 'PositiveFloat', 

174 'NegativeFloat', 

175 'NonNegativeFloat', 

176 'NonPositiveFloat', 

177 'FiniteFloat', 

178 'condecimal', 

179 'condate', 

180 'UUID1', 

181 'UUID3', 

182 'UUID4', 

183 'UUID5', 

184 'UUID6', 

185 'UUID7', 

186 'UUID8', 

187 'FilePath', 

188 'DirectoryPath', 

189 'NewPath', 

190 'Json', 

191 'Secret', 

192 'SecretStr', 

193 'SecretBytes', 

194 'SocketPath', 

195 'StrictBool', 

196 'StrictBytes', 

197 'StrictInt', 

198 'StrictFloat', 

199 'PaymentCardNumber', 

200 'ByteSize', 

201 'PastDate', 

202 'FutureDate', 

203 'PastDatetime', 

204 'FutureDatetime', 

205 'AwareDatetime', 

206 'NaiveDatetime', 

207 'AllowInfNan', 

208 'EncoderProtocol', 

209 'EncodedBytes', 

210 'EncodedStr', 

211 'Base64Encoder', 

212 'Base64Bytes', 

213 'Base64Str', 

214 'Base64UrlBytes', 

215 'Base64UrlStr', 

216 'GetPydanticSchema', 

217 'Tag', 

218 'Discriminator', 

219 'JsonValue', 

220 'FailFast', 

221 # type_adapter 

222 'TypeAdapter', 

223 # version 

224 '__version__', 

225 'VERSION', 

226 # warnings 

227 'PydanticDeprecatedSince20', 

228 'PydanticDeprecatedSince26', 

229 'PydanticDeprecatedSince29', 

230 'PydanticDeprecatedSince210', 

231 'PydanticDeprecatedSince211', 

232 'PydanticDeprecatedSince212', 

233 'PydanticDeprecationWarning', 

234 'PydanticExperimentalWarning', 

235 # annotated handlers 

236 'GetCoreSchemaHandler', 

237 'GetJsonSchemaHandler', 

238 # pydantic_core 

239 'ValidationError', 

240 'ValidationInfo', 

241 'SerializationInfo', 

242 'ValidatorFunctionWrapHandler', 

243 'FieldSerializationInfo', 

244 'SerializerFunctionWrapHandler', 

245 'OnErrorOmit', 

246) 

247 

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

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

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

251 # functional validators 

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

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

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

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

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

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

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

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

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

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

262 # JSON Schema 

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

264 # functional serializers 

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

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

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

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

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

270 # config 

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

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

273 # validate call 

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

275 # errors 

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

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

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

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

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

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

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

283 # fields 

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

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

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

287 # alias 

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

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

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

291 # main 

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

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

294 # network 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

320 # root_model 

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

322 # types 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

387 # type_adapter 

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

389 # warnings 

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

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

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

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

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

395 'PydanticDeprecatedSince212': (__spec__.parent, '.warnings'), 

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

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

398 # annotated handlers 

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

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

401 # pydantic_core stuff 

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

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

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

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

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

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

408 # deprecated, mostly not included in __all__ 

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

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

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

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

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

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

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

416 # deprecated dynamic imports 

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

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

419} 

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

421 

422_getattr_migration = getattr_migration(__name__) 

423 

424 

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

426 if attr_name in _deprecated_dynamic_imports: 

427 from pydantic.warnings import PydanticDeprecatedSince20 

428 

429 warn( 

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

431 PydanticDeprecatedSince20, 

432 stacklevel=2, 

433 ) 

434 

435 dynamic_attr = _dynamic_imports.get(attr_name) 

436 if dynamic_attr is None: 

437 return _getattr_migration(attr_name) 

438 

439 package, module_name = dynamic_attr 

440 

441 if module_name == '__module__': 

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

443 globals()[attr_name] = result 

444 return result 

445 else: 

446 module = import_module(module_name, package=package) 

447 result = getattr(module, attr_name) 

448 g = globals() 

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

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

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

452 return result 

453 

454 

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

456 return list(__all__)