Coverage for fastapi/temp_pydantic_v1_params.py: 100%

80 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2025-12-04 08:29 +0000

1import warnings 1abcdefg

2from typing import Any, Callable, Dict, List, Optional, Union 1abcdefg

3 

4from fastapi.openapi.models import Example 1abcdefg

5from fastapi.params import ParamTypes 1abcdefg

6from typing_extensions import Annotated, deprecated 1abcdefg

7 

8from ._compat.may_v1 import FieldInfo, Undefined 1abcdefg

9from ._compat.shared import PYDANTIC_VERSION_MINOR_TUPLE 1abcdefg

10 

11_Unset: Any = Undefined 1abcdefg

12 

13 

14class Param(FieldInfo): # type: ignore[misc] 1abcdefg

15 in_: ParamTypes 1abcdef

16 

17 def __init__( 1abcdefg

18 self, 

19 default: Any = Undefined, 

20 *, 

21 default_factory: Union[Callable[[], Any], None] = _Unset, 

22 annotation: Optional[Any] = None, 

23 alias: Optional[str] = None, 

24 alias_priority: Union[int, None] = _Unset, 

25 # TODO: update when deprecating Pydantic v1, import these types 

26 # validation_alias: str | AliasPath | AliasChoices | None 

27 validation_alias: Union[str, None] = None, 

28 serialization_alias: Union[str, None] = None, 

29 title: Optional[str] = None, 

30 description: Optional[str] = None, 

31 gt: Optional[float] = None, 

32 ge: Optional[float] = None, 

33 lt: Optional[float] = None, 

34 le: Optional[float] = None, 

35 min_length: Optional[int] = None, 

36 max_length: Optional[int] = None, 

37 pattern: Optional[str] = None, 

38 regex: Annotated[ 

39 Optional[str], 

40 deprecated( 

41 "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." 

42 ), 

43 ] = None, 

44 discriminator: Union[str, None] = None, 

45 strict: Union[bool, None] = _Unset, 

46 multiple_of: Union[float, None] = _Unset, 

47 allow_inf_nan: Union[bool, None] = _Unset, 

48 max_digits: Union[int, None] = _Unset, 

49 decimal_places: Union[int, None] = _Unset, 

50 examples: Optional[List[Any]] = None, 

51 example: Annotated[ 

52 Optional[Any], 

53 deprecated( 

54 "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " 

55 "although still supported. Use examples instead." 

56 ), 

57 ] = _Unset, 

58 openapi_examples: Optional[Dict[str, Example]] = None, 

59 deprecated: Union[deprecated, str, bool, None] = None, 

60 include_in_schema: bool = True, 

61 json_schema_extra: Union[Dict[str, Any], None] = None, 

62 **extra: Any, 

63 ): 

64 if example is not _Unset: 1azABbCDEcFGHdIJKeLMNfOPQ

65 warnings.warn( 1zCFILO

66 "`example` has been deprecated, please use `examples` instead", 

67 category=DeprecationWarning, 

68 stacklevel=4, 

69 ) 

70 self.example = example 1azABbCDEcFGHdIJKeLMNfOPQ

71 self.include_in_schema = include_in_schema 1azABbCDEcFGHdIJKeLMNfOPQ

72 self.openapi_examples = openapi_examples 1azABbCDEcFGHdIJKeLMNfOPQ

73 kwargs = dict( 1azABbCDEcFGHdIJKeLMNfOPQ

74 default=default, 

75 default_factory=default_factory, 

76 alias=alias, 

77 title=title, 

78 description=description, 

79 gt=gt, 

80 ge=ge, 

81 lt=lt, 

82 le=le, 

83 min_length=min_length, 

84 max_length=max_length, 

85 discriminator=discriminator, 

86 multiple_of=multiple_of, 

87 allow_inf_nan=allow_inf_nan, 

88 max_digits=max_digits, 

89 decimal_places=decimal_places, 

90 **extra, 

91 ) 

92 if examples is not None: 1azABbCDEcFGHdIJKeLMNfOPQ

93 kwargs["examples"] = examples 1abcdef

94 if regex is not None: 1azABbCDEcFGHdIJKeLMNfOPQ

95 warnings.warn( 1ADGJMP

96 "`regex` has been deprecated, please use `pattern` instead", 

97 category=DeprecationWarning, 

98 stacklevel=4, 

99 ) 

100 current_json_schema_extra = json_schema_extra or extra 1azABbCDEcFGHdIJKeLMNfOPQ

101 if PYDANTIC_VERSION_MINOR_TUPLE < (2, 7): 1azABbCDEcFGHdIJKeLMNfOPQ

102 self.deprecated = deprecated 1azABbCDEcFGHdIJKeLMNfOPQ

103 else: 

104 kwargs["deprecated"] = deprecated 1azABbCDEcFGHdIJKeLMNfOPQ

105 kwargs["regex"] = pattern or regex 1azABbCDEcFGHdIJKeLMNfOPQ

106 kwargs.update(**current_json_schema_extra) 1azABbCDEcFGHdIJKeLMNfOPQ

107 use_kwargs = {k: v for k, v in kwargs.items() if v is not _Unset} 1azABbCDEcFGHdIJKeLMNfOPQ

108 

109 super().__init__(**use_kwargs) 1azABbCDEcFGHdIJKeLMNfOPQ

110 

111 def __repr__(self) -> str: 1abcdefg

112 return f"{self.__class__.__name__}({self.default})" 1BEHKNQ

113 

114 

115class Path(Param): # type: ignore[misc] 1abcdefg

116 in_ = ParamTypes.path 1abcdefg

117 

118 def __init__( 1abcdefg

119 self, 

120 default: Any = ..., 

121 *, 

122 default_factory: Union[Callable[[], Any], None] = _Unset, 

123 annotation: Optional[Any] = None, 

124 alias: Optional[str] = None, 

125 alias_priority: Union[int, None] = _Unset, 

126 # TODO: update when deprecating Pydantic v1, import these types 

127 # validation_alias: str | AliasPath | AliasChoices | None 

128 validation_alias: Union[str, None] = None, 

129 serialization_alias: Union[str, None] = None, 

130 title: Optional[str] = None, 

131 description: Optional[str] = None, 

132 gt: Optional[float] = None, 

133 ge: Optional[float] = None, 

134 lt: Optional[float] = None, 

135 le: Optional[float] = None, 

136 min_length: Optional[int] = None, 

137 max_length: Optional[int] = None, 

138 pattern: Optional[str] = None, 

139 regex: Annotated[ 

140 Optional[str], 

141 deprecated( 

142 "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." 

143 ), 

144 ] = None, 

145 discriminator: Union[str, None] = None, 

146 strict: Union[bool, None] = _Unset, 

147 multiple_of: Union[float, None] = _Unset, 

148 allow_inf_nan: Union[bool, None] = _Unset, 

149 max_digits: Union[int, None] = _Unset, 

150 decimal_places: Union[int, None] = _Unset, 

151 examples: Optional[List[Any]] = None, 

152 example: Annotated[ 

153 Optional[Any], 

154 deprecated( 

155 "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " 

156 "although still supported. Use examples instead." 

157 ), 

158 ] = _Unset, 

159 openapi_examples: Optional[Dict[str, Example]] = None, 

160 deprecated: Union[deprecated, str, bool, None] = None, 

161 include_in_schema: bool = True, 

162 json_schema_extra: Union[Dict[str, Any], None] = None, 

163 **extra: Any, 

164 ): 

165 assert default is ..., "Path parameters cannot have a default value" 1abcdef

166 self.in_ = self.in_ 1abcdef

167 super().__init__( 1abcdef

168 default=default, 

169 default_factory=default_factory, 

170 annotation=annotation, 

171 alias=alias, 

172 alias_priority=alias_priority, 

173 validation_alias=validation_alias, 

174 serialization_alias=serialization_alias, 

175 title=title, 

176 description=description, 

177 gt=gt, 

178 ge=ge, 

179 lt=lt, 

180 le=le, 

181 min_length=min_length, 

182 max_length=max_length, 

183 pattern=pattern, 

184 regex=regex, 

185 discriminator=discriminator, 

186 strict=strict, 

187 multiple_of=multiple_of, 

188 allow_inf_nan=allow_inf_nan, 

189 max_digits=max_digits, 

190 decimal_places=decimal_places, 

191 deprecated=deprecated, 

192 example=example, 

193 examples=examples, 

194 openapi_examples=openapi_examples, 

195 include_in_schema=include_in_schema, 

196 json_schema_extra=json_schema_extra, 

197 **extra, 

198 ) 

199 

200 

201class Query(Param): # type: ignore[misc] 1abcdefg

202 in_ = ParamTypes.query 1abcdefg

203 

204 def __init__( 1abcdefg

205 self, 

206 default: Any = Undefined, 

207 *, 

208 default_factory: Union[Callable[[], Any], None] = _Unset, 

209 annotation: Optional[Any] = None, 

210 alias: Optional[str] = None, 

211 alias_priority: Union[int, None] = _Unset, 

212 # TODO: update when deprecating Pydantic v1, import these types 

213 # validation_alias: str | AliasPath | AliasChoices | None 

214 validation_alias: Union[str, None] = None, 

215 serialization_alias: Union[str, None] = None, 

216 title: Optional[str] = None, 

217 description: Optional[str] = None, 

218 gt: Optional[float] = None, 

219 ge: Optional[float] = None, 

220 lt: Optional[float] = None, 

221 le: Optional[float] = None, 

222 min_length: Optional[int] = None, 

223 max_length: Optional[int] = None, 

224 pattern: Optional[str] = None, 

225 regex: Annotated[ 

226 Optional[str], 

227 deprecated( 

228 "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." 

229 ), 

230 ] = None, 

231 discriminator: Union[str, None] = None, 

232 strict: Union[bool, None] = _Unset, 

233 multiple_of: Union[float, None] = _Unset, 

234 allow_inf_nan: Union[bool, None] = _Unset, 

235 max_digits: Union[int, None] = _Unset, 

236 decimal_places: Union[int, None] = _Unset, 

237 examples: Optional[List[Any]] = None, 

238 example: Annotated[ 

239 Optional[Any], 

240 deprecated( 

241 "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " 

242 "although still supported. Use examples instead." 

243 ), 

244 ] = _Unset, 

245 openapi_examples: Optional[Dict[str, Example]] = None, 

246 deprecated: Union[deprecated, str, bool, None] = None, 

247 include_in_schema: bool = True, 

248 json_schema_extra: Union[Dict[str, Any], None] = None, 

249 **extra: Any, 

250 ): 

251 super().__init__( 1azABbCDEcFGHdIJKeLMNfOPQ

252 default=default, 

253 default_factory=default_factory, 

254 annotation=annotation, 

255 alias=alias, 

256 alias_priority=alias_priority, 

257 validation_alias=validation_alias, 

258 serialization_alias=serialization_alias, 

259 title=title, 

260 description=description, 

261 gt=gt, 

262 ge=ge, 

263 lt=lt, 

264 le=le, 

265 min_length=min_length, 

266 max_length=max_length, 

267 pattern=pattern, 

268 regex=regex, 

269 discriminator=discriminator, 

270 strict=strict, 

271 multiple_of=multiple_of, 

272 allow_inf_nan=allow_inf_nan, 

273 max_digits=max_digits, 

274 decimal_places=decimal_places, 

275 deprecated=deprecated, 

276 example=example, 

277 examples=examples, 

278 openapi_examples=openapi_examples, 

279 include_in_schema=include_in_schema, 

280 json_schema_extra=json_schema_extra, 

281 **extra, 

282 ) 

283 

284 

285class Header(Param): # type: ignore[misc] 1abcdefg

286 in_ = ParamTypes.header 1abcdefg

287 

288 def __init__( 1abcdefg

289 self, 

290 default: Any = Undefined, 

291 *, 

292 default_factory: Union[Callable[[], Any], None] = _Unset, 

293 annotation: Optional[Any] = None, 

294 alias: Optional[str] = None, 

295 alias_priority: Union[int, None] = _Unset, 

296 # TODO: update when deprecating Pydantic v1, import these types 

297 # validation_alias: str | AliasPath | AliasChoices | None 

298 validation_alias: Union[str, None] = None, 

299 serialization_alias: Union[str, None] = None, 

300 convert_underscores: bool = True, 

301 title: Optional[str] = None, 

302 description: Optional[str] = None, 

303 gt: Optional[float] = None, 

304 ge: Optional[float] = None, 

305 lt: Optional[float] = None, 

306 le: Optional[float] = None, 

307 min_length: Optional[int] = None, 

308 max_length: Optional[int] = None, 

309 pattern: Optional[str] = None, 

310 regex: Annotated[ 

311 Optional[str], 

312 deprecated( 

313 "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." 

314 ), 

315 ] = None, 

316 discriminator: Union[str, None] = None, 

317 strict: Union[bool, None] = _Unset, 

318 multiple_of: Union[float, None] = _Unset, 

319 allow_inf_nan: Union[bool, None] = _Unset, 

320 max_digits: Union[int, None] = _Unset, 

321 decimal_places: Union[int, None] = _Unset, 

322 examples: Optional[List[Any]] = None, 

323 example: Annotated[ 

324 Optional[Any], 

325 deprecated( 

326 "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " 

327 "although still supported. Use examples instead." 

328 ), 

329 ] = _Unset, 

330 openapi_examples: Optional[Dict[str, Example]] = None, 

331 deprecated: Union[deprecated, str, bool, None] = None, 

332 include_in_schema: bool = True, 

333 json_schema_extra: Union[Dict[str, Any], None] = None, 

334 **extra: Any, 

335 ): 

336 self.convert_underscores = convert_underscores 1abcdef

337 super().__init__( 1abcdef

338 default=default, 

339 default_factory=default_factory, 

340 annotation=annotation, 

341 alias=alias, 

342 alias_priority=alias_priority, 

343 validation_alias=validation_alias, 

344 serialization_alias=serialization_alias, 

345 title=title, 

346 description=description, 

347 gt=gt, 

348 ge=ge, 

349 lt=lt, 

350 le=le, 

351 min_length=min_length, 

352 max_length=max_length, 

353 pattern=pattern, 

354 regex=regex, 

355 discriminator=discriminator, 

356 strict=strict, 

357 multiple_of=multiple_of, 

358 allow_inf_nan=allow_inf_nan, 

359 max_digits=max_digits, 

360 decimal_places=decimal_places, 

361 deprecated=deprecated, 

362 example=example, 

363 examples=examples, 

364 openapi_examples=openapi_examples, 

365 include_in_schema=include_in_schema, 

366 json_schema_extra=json_schema_extra, 

367 **extra, 

368 ) 

369 

370 

371class Cookie(Param): # type: ignore[misc] 1abcdefg

372 in_ = ParamTypes.cookie 1abcdefg

373 

374 def __init__( 1abcdefg

375 self, 

376 default: Any = Undefined, 

377 *, 

378 default_factory: Union[Callable[[], Any], None] = _Unset, 

379 annotation: Optional[Any] = None, 

380 alias: Optional[str] = None, 

381 alias_priority: Union[int, None] = _Unset, 

382 # TODO: update when deprecating Pydantic v1, import these types 

383 # validation_alias: str | AliasPath | AliasChoices | None 

384 validation_alias: Union[str, None] = None, 

385 serialization_alias: Union[str, None] = None, 

386 title: Optional[str] = None, 

387 description: Optional[str] = None, 

388 gt: Optional[float] = None, 

389 ge: Optional[float] = None, 

390 lt: Optional[float] = None, 

391 le: Optional[float] = None, 

392 min_length: Optional[int] = None, 

393 max_length: Optional[int] = None, 

394 pattern: Optional[str] = None, 

395 regex: Annotated[ 

396 Optional[str], 

397 deprecated( 

398 "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." 

399 ), 

400 ] = None, 

401 discriminator: Union[str, None] = None, 

402 strict: Union[bool, None] = _Unset, 

403 multiple_of: Union[float, None] = _Unset, 

404 allow_inf_nan: Union[bool, None] = _Unset, 

405 max_digits: Union[int, None] = _Unset, 

406 decimal_places: Union[int, None] = _Unset, 

407 examples: Optional[List[Any]] = None, 

408 example: Annotated[ 

409 Optional[Any], 

410 deprecated( 

411 "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " 

412 "although still supported. Use examples instead." 

413 ), 

414 ] = _Unset, 

415 openapi_examples: Optional[Dict[str, Example]] = None, 

416 deprecated: Union[deprecated, str, bool, None] = None, 

417 include_in_schema: bool = True, 

418 json_schema_extra: Union[Dict[str, Any], None] = None, 

419 **extra: Any, 

420 ): 

421 super().__init__( 1abcdef

422 default=default, 

423 default_factory=default_factory, 

424 annotation=annotation, 

425 alias=alias, 

426 alias_priority=alias_priority, 

427 validation_alias=validation_alias, 

428 serialization_alias=serialization_alias, 

429 title=title, 

430 description=description, 

431 gt=gt, 

432 ge=ge, 

433 lt=lt, 

434 le=le, 

435 min_length=min_length, 

436 max_length=max_length, 

437 pattern=pattern, 

438 regex=regex, 

439 discriminator=discriminator, 

440 strict=strict, 

441 multiple_of=multiple_of, 

442 allow_inf_nan=allow_inf_nan, 

443 max_digits=max_digits, 

444 decimal_places=decimal_places, 

445 deprecated=deprecated, 

446 example=example, 

447 examples=examples, 

448 openapi_examples=openapi_examples, 

449 include_in_schema=include_in_schema, 

450 json_schema_extra=json_schema_extra, 

451 **extra, 

452 ) 

453 

454 

455class Body(FieldInfo): # type: ignore[misc] 1abcdefg

456 def __init__( 1abcdefg

457 self, 

458 default: Any = Undefined, 

459 *, 

460 default_factory: Union[Callable[[], Any], None] = _Unset, 

461 annotation: Optional[Any] = None, 

462 embed: Union[bool, None] = None, 

463 media_type: str = "application/json", 

464 alias: Optional[str] = None, 

465 alias_priority: Union[int, None] = _Unset, 

466 # TODO: update when deprecating Pydantic v1, import these types 

467 # validation_alias: str | AliasPath | AliasChoices | None 

468 validation_alias: Union[str, None] = None, 

469 serialization_alias: Union[str, None] = None, 

470 title: Optional[str] = None, 

471 description: Optional[str] = None, 

472 gt: Optional[float] = None, 

473 ge: Optional[float] = None, 

474 lt: Optional[float] = None, 

475 le: Optional[float] = None, 

476 min_length: Optional[int] = None, 

477 max_length: Optional[int] = None, 

478 pattern: Optional[str] = None, 

479 regex: Annotated[ 

480 Optional[str], 

481 deprecated( 

482 "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." 

483 ), 

484 ] = None, 

485 discriminator: Union[str, None] = None, 

486 strict: Union[bool, None] = _Unset, 

487 multiple_of: Union[float, None] = _Unset, 

488 allow_inf_nan: Union[bool, None] = _Unset, 

489 max_digits: Union[int, None] = _Unset, 

490 decimal_places: Union[int, None] = _Unset, 

491 examples: Optional[List[Any]] = None, 

492 example: Annotated[ 

493 Optional[Any], 

494 deprecated( 

495 "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " 

496 "although still supported. Use examples instead." 

497 ), 

498 ] = _Unset, 

499 openapi_examples: Optional[Dict[str, Example]] = None, 

500 deprecated: Union[deprecated, str, bool, None] = None, 

501 include_in_schema: bool = True, 

502 json_schema_extra: Union[Dict[str, Any], None] = None, 

503 **extra: Any, 

504 ): 

505 self.embed = embed 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

506 self.media_type = media_type 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

507 if example is not _Unset: 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

508 warnings.warn( 1hknqtw

509 "`example` has been deprecated, please use `examples` instead", 

510 category=DeprecationWarning, 

511 stacklevel=4, 

512 ) 

513 self.example = example 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

514 self.include_in_schema = include_in_schema 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

515 self.openapi_examples = openapi_examples 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

516 kwargs = dict( 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

517 default=default, 

518 default_factory=default_factory, 

519 alias=alias, 

520 title=title, 

521 description=description, 

522 gt=gt, 

523 ge=ge, 

524 lt=lt, 

525 le=le, 

526 min_length=min_length, 

527 max_length=max_length, 

528 discriminator=discriminator, 

529 multiple_of=multiple_of, 

530 allow_inf_nan=allow_inf_nan, 

531 max_digits=max_digits, 

532 decimal_places=decimal_places, 

533 **extra, 

534 ) 

535 if examples is not None: 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

536 kwargs["examples"] = examples 1abcdef

537 if regex is not None: 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

538 warnings.warn( 1ilorux

539 "`regex` has been deprecated, please use `pattern` instead", 

540 category=DeprecationWarning, 

541 stacklevel=4, 

542 ) 

543 current_json_schema_extra = json_schema_extra or extra 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

544 if PYDANTIC_VERSION_MINOR_TUPLE < (2, 7): 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

545 self.deprecated = deprecated 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

546 else: 

547 kwargs["deprecated"] = deprecated 1ahijbklmcnopdqrsetuvfwxy

548 kwargs["regex"] = pattern or regex 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

549 kwargs.update(**current_json_schema_extra) 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

550 

551 use_kwargs = {k: v for k, v in kwargs.items() if v is not _Unset} 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

552 

553 super().__init__(**use_kwargs) 2a h i j R S T U V W X Y Z 0 1 2 3 4 5 6 b k l m 7 8 9 ! # $ % ' ( ) * + , - . / c n o p : ; = ? @ [ ] ^ _ ` { | } ~ abbbd q r s cbdbebfbgbhbibjbkblbmbnbobpbqbrbe t u v sbtbubvbwbxbybzbAbBbCbDbEbFbGbHbf w x y IbJbKbLbMbNbObPbQbRbSbTbUbVbWbXb

554 

555 def __repr__(self) -> str: 1abcdefg

556 return f"{self.__class__.__name__}({self.default})" 1jmpsvy

557 

558 

559class Form(Body): # type: ignore[misc] 1abcdefg

560 def __init__( 1abcdefg

561 self, 

562 default: Any = Undefined, 

563 *, 

564 default_factory: Union[Callable[[], Any], None] = _Unset, 

565 annotation: Optional[Any] = None, 

566 media_type: str = "application/x-www-form-urlencoded", 

567 alias: Optional[str] = None, 

568 alias_priority: Union[int, None] = _Unset, 

569 # TODO: update when deprecating Pydantic v1, import these types 

570 # validation_alias: str | AliasPath | AliasChoices | None 

571 validation_alias: Union[str, None] = None, 

572 serialization_alias: Union[str, None] = None, 

573 title: Optional[str] = None, 

574 description: Optional[str] = None, 

575 gt: Optional[float] = None, 

576 ge: Optional[float] = None, 

577 lt: Optional[float] = None, 

578 le: Optional[float] = None, 

579 min_length: Optional[int] = None, 

580 max_length: Optional[int] = None, 

581 pattern: Optional[str] = None, 

582 regex: Annotated[ 

583 Optional[str], 

584 deprecated( 

585 "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." 

586 ), 

587 ] = None, 

588 discriminator: Union[str, None] = None, 

589 strict: Union[bool, None] = _Unset, 

590 multiple_of: Union[float, None] = _Unset, 

591 allow_inf_nan: Union[bool, None] = _Unset, 

592 max_digits: Union[int, None] = _Unset, 

593 decimal_places: Union[int, None] = _Unset, 

594 examples: Optional[List[Any]] = None, 

595 example: Annotated[ 

596 Optional[Any], 

597 deprecated( 

598 "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " 

599 "although still supported. Use examples instead." 

600 ), 

601 ] = _Unset, 

602 openapi_examples: Optional[Dict[str, Example]] = None, 

603 deprecated: Union[deprecated, str, bool, None] = None, 

604 include_in_schema: bool = True, 

605 json_schema_extra: Union[Dict[str, Any], None] = None, 

606 **extra: Any, 

607 ): 

608 super().__init__( 1abcdef

609 default=default, 

610 default_factory=default_factory, 

611 annotation=annotation, 

612 media_type=media_type, 

613 alias=alias, 

614 alias_priority=alias_priority, 

615 validation_alias=validation_alias, 

616 serialization_alias=serialization_alias, 

617 title=title, 

618 description=description, 

619 gt=gt, 

620 ge=ge, 

621 lt=lt, 

622 le=le, 

623 min_length=min_length, 

624 max_length=max_length, 

625 pattern=pattern, 

626 regex=regex, 

627 discriminator=discriminator, 

628 strict=strict, 

629 multiple_of=multiple_of, 

630 allow_inf_nan=allow_inf_nan, 

631 max_digits=max_digits, 

632 decimal_places=decimal_places, 

633 deprecated=deprecated, 

634 example=example, 

635 examples=examples, 

636 openapi_examples=openapi_examples, 

637 include_in_schema=include_in_schema, 

638 json_schema_extra=json_schema_extra, 

639 **extra, 

640 ) 

641 

642 

643class File(Form): # type: ignore[misc] 1abcdefg

644 def __init__( 1abcdefg

645 self, 

646 default: Any = Undefined, 

647 *, 

648 default_factory: Union[Callable[[], Any], None] = _Unset, 

649 annotation: Optional[Any] = None, 

650 media_type: str = "multipart/form-data", 

651 alias: Optional[str] = None, 

652 alias_priority: Union[int, None] = _Unset, 

653 # TODO: update when deprecating Pydantic v1, import these types 

654 # validation_alias: str | AliasPath | AliasChoices | None 

655 validation_alias: Union[str, None] = None, 

656 serialization_alias: Union[str, None] = None, 

657 title: Optional[str] = None, 

658 description: Optional[str] = None, 

659 gt: Optional[float] = None, 

660 ge: Optional[float] = None, 

661 lt: Optional[float] = None, 

662 le: Optional[float] = None, 

663 min_length: Optional[int] = None, 

664 max_length: Optional[int] = None, 

665 pattern: Optional[str] = None, 

666 regex: Annotated[ 

667 Optional[str], 

668 deprecated( 

669 "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." 

670 ), 

671 ] = None, 

672 discriminator: Union[str, None] = None, 

673 strict: Union[bool, None] = _Unset, 

674 multiple_of: Union[float, None] = _Unset, 

675 allow_inf_nan: Union[bool, None] = _Unset, 

676 max_digits: Union[int, None] = _Unset, 

677 decimal_places: Union[int, None] = _Unset, 

678 examples: Optional[List[Any]] = None, 

679 example: Annotated[ 

680 Optional[Any], 

681 deprecated( 

682 "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " 

683 "although still supported. Use examples instead." 

684 ), 

685 ] = _Unset, 

686 openapi_examples: Optional[Dict[str, Example]] = None, 

687 deprecated: Union[deprecated, str, bool, None] = None, 

688 include_in_schema: bool = True, 

689 json_schema_extra: Union[Dict[str, Any], None] = None, 

690 **extra: Any, 

691 ): 

692 super().__init__( 1abcdef

693 default=default, 

694 default_factory=default_factory, 

695 annotation=annotation, 

696 media_type=media_type, 

697 alias=alias, 

698 alias_priority=alias_priority, 

699 validation_alias=validation_alias, 

700 serialization_alias=serialization_alias, 

701 title=title, 

702 description=description, 

703 gt=gt, 

704 ge=ge, 

705 lt=lt, 

706 le=le, 

707 min_length=min_length, 

708 max_length=max_length, 

709 pattern=pattern, 

710 regex=regex, 

711 discriminator=discriminator, 

712 strict=strict, 

713 multiple_of=multiple_of, 

714 allow_inf_nan=allow_inf_nan, 

715 max_digits=max_digits, 

716 decimal_places=decimal_places, 

717 deprecated=deprecated, 

718 example=example, 

719 examples=examples, 

720 openapi_examples=openapi_examples, 

721 include_in_schema=include_in_schema, 

722 json_schema_extra=json_schema_extra, 

723 **extra, 

724 )