fastapi 0.99.0__py3-none-any.whl → 0.100.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of fastapi might be problematic. Click here for more details.

fastapi/params.py CHANGED
@@ -1,10 +1,14 @@
1
1
  import warnings
2
2
  from enum import Enum
3
- from typing import Any, Callable, List, Optional, Sequence
3
+ from typing import Any, Callable, Dict, List, Optional, Sequence, Union
4
4
 
5
- from pydantic.fields import FieldInfo, Undefined
5
+ from pydantic.fields import FieldInfo
6
6
  from typing_extensions import Annotated, deprecated
7
7
 
8
+ from ._compat import PYDANTIC_V2, Undefined
9
+
10
+ _Unset: Any = Undefined
11
+
8
12
 
9
13
  class ParamTypes(Enum):
10
14
  query = "query"
@@ -20,7 +24,14 @@ class Param(FieldInfo):
20
24
  self,
21
25
  default: Any = Undefined,
22
26
  *,
27
+ default_factory: Union[Callable[[], Any], None] = _Unset,
28
+ annotation: Optional[Any] = None,
23
29
  alias: Optional[str] = None,
30
+ alias_priority: Union[int, None] = _Unset,
31
+ # TODO: update when deprecating Pydantic v1, import these types
32
+ # validation_alias: str | AliasPath | AliasChoices | None
33
+ validation_alias: Union[str, None] = None,
34
+ serialization_alias: Union[str, None] = None,
24
35
  title: Optional[str] = None,
25
36
  description: Optional[str] = None,
26
37
  gt: Optional[float] = None,
@@ -29,7 +40,19 @@ class Param(FieldInfo):
29
40
  le: Optional[float] = None,
30
41
  min_length: Optional[int] = None,
31
42
  max_length: Optional[int] = None,
32
- regex: Optional[str] = None,
43
+ pattern: Optional[str] = None,
44
+ regex: Annotated[
45
+ Optional[str],
46
+ deprecated(
47
+ "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead."
48
+ ),
49
+ ] = None,
50
+ discriminator: Union[str, None] = None,
51
+ strict: Union[bool, None] = _Unset,
52
+ multiple_of: Union[float, None] = _Unset,
53
+ allow_inf_nan: Union[bool, None] = _Unset,
54
+ max_digits: Union[int, None] = _Unset,
55
+ decimal_places: Union[int, None] = _Unset,
33
56
  examples: Optional[List[Any]] = None,
34
57
  example: Annotated[
35
58
  Optional[Any],
@@ -37,25 +60,24 @@ class Param(FieldInfo):
37
60
  "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
38
61
  "although still supported. Use examples instead."
39
62
  ),
40
- ] = Undefined,
63
+ ] = _Unset,
41
64
  deprecated: Optional[bool] = None,
42
65
  include_in_schema: bool = True,
66
+ json_schema_extra: Union[Dict[str, Any], None] = None,
43
67
  **extra: Any,
44
68
  ):
45
69
  self.deprecated = deprecated
46
- if example is not Undefined:
70
+ if example is not _Unset:
47
71
  warnings.warn(
48
72
  "`example` has been depreacated, please use `examples` instead",
49
73
  category=DeprecationWarning,
50
- stacklevel=1,
74
+ stacklevel=4,
51
75
  )
52
76
  self.example = example
53
77
  self.include_in_schema = include_in_schema
54
- extra_kwargs = {**extra}
55
- if examples:
56
- extra_kwargs["examples"] = examples
57
- super().__init__(
78
+ kwargs = dict(
58
79
  default=default,
80
+ default_factory=default_factory,
59
81
  alias=alias,
60
82
  title=title,
61
83
  description=description,
@@ -65,9 +87,40 @@ class Param(FieldInfo):
65
87
  le=le,
66
88
  min_length=min_length,
67
89
  max_length=max_length,
68
- regex=regex,
69
- **extra_kwargs,
90
+ discriminator=discriminator,
91
+ multiple_of=multiple_of,
92
+ allow_nan=allow_inf_nan,
93
+ max_digits=max_digits,
94
+ decimal_places=decimal_places,
95
+ **extra,
70
96
  )
97
+ if examples is not None:
98
+ kwargs["examples"] = examples
99
+ if regex is not None:
100
+ warnings.warn(
101
+ "`regex` has been depreacated, please use `pattern` instead",
102
+ category=DeprecationWarning,
103
+ stacklevel=4,
104
+ )
105
+ current_json_schema_extra = json_schema_extra or extra
106
+ if PYDANTIC_V2:
107
+ kwargs.update(
108
+ {
109
+ "annotation": annotation,
110
+ "alias_priority": alias_priority,
111
+ "validation_alias": validation_alias,
112
+ "serialization_alias": serialization_alias,
113
+ "strict": strict,
114
+ "json_schema_extra": current_json_schema_extra,
115
+ }
116
+ )
117
+ kwargs["pattern"] = pattern or regex
118
+ else:
119
+ kwargs["regex"] = pattern or regex
120
+ kwargs.update(**current_json_schema_extra)
121
+ use_kwargs = {k: v for k, v in kwargs.items() if v is not _Unset}
122
+
123
+ super().__init__(**use_kwargs)
71
124
 
72
125
  def __repr__(self) -> str:
73
126
  return f"{self.__class__.__name__}({self.default})"
@@ -80,7 +133,14 @@ class Path(Param):
80
133
  self,
81
134
  default: Any = ...,
82
135
  *,
136
+ default_factory: Union[Callable[[], Any], None] = _Unset,
137
+ annotation: Optional[Any] = None,
83
138
  alias: Optional[str] = None,
139
+ alias_priority: Union[int, None] = _Unset,
140
+ # TODO: update when deprecating Pydantic v1, import these types
141
+ # validation_alias: str | AliasPath | AliasChoices | None
142
+ validation_alias: Union[str, None] = None,
143
+ serialization_alias: Union[str, None] = None,
84
144
  title: Optional[str] = None,
85
145
  description: Optional[str] = None,
86
146
  gt: Optional[float] = None,
@@ -89,7 +149,19 @@ class Path(Param):
89
149
  le: Optional[float] = None,
90
150
  min_length: Optional[int] = None,
91
151
  max_length: Optional[int] = None,
92
- regex: Optional[str] = None,
152
+ pattern: Optional[str] = None,
153
+ regex: Annotated[
154
+ Optional[str],
155
+ deprecated(
156
+ "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead."
157
+ ),
158
+ ] = None,
159
+ discriminator: Union[str, None] = None,
160
+ strict: Union[bool, None] = _Unset,
161
+ multiple_of: Union[float, None] = _Unset,
162
+ allow_inf_nan: Union[bool, None] = _Unset,
163
+ max_digits: Union[int, None] = _Unset,
164
+ decimal_places: Union[int, None] = _Unset,
93
165
  examples: Optional[List[Any]] = None,
94
166
  example: Annotated[
95
167
  Optional[Any],
@@ -97,16 +169,22 @@ class Path(Param):
97
169
  "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
98
170
  "although still supported. Use examples instead."
99
171
  ),
100
- ] = Undefined,
172
+ ] = _Unset,
101
173
  deprecated: Optional[bool] = None,
102
174
  include_in_schema: bool = True,
175
+ json_schema_extra: Union[Dict[str, Any], None] = None,
103
176
  **extra: Any,
104
177
  ):
105
178
  assert default is ..., "Path parameters cannot have a default value"
106
179
  self.in_ = self.in_
107
180
  super().__init__(
108
181
  default=default,
182
+ default_factory=default_factory,
183
+ annotation=annotation,
109
184
  alias=alias,
185
+ alias_priority=alias_priority,
186
+ validation_alias=validation_alias,
187
+ serialization_alias=serialization_alias,
110
188
  title=title,
111
189
  description=description,
112
190
  gt=gt,
@@ -115,11 +193,19 @@ class Path(Param):
115
193
  le=le,
116
194
  min_length=min_length,
117
195
  max_length=max_length,
196
+ pattern=pattern,
118
197
  regex=regex,
198
+ discriminator=discriminator,
199
+ strict=strict,
200
+ multiple_of=multiple_of,
201
+ allow_inf_nan=allow_inf_nan,
202
+ max_digits=max_digits,
203
+ decimal_places=decimal_places,
119
204
  deprecated=deprecated,
120
205
  example=example,
121
206
  examples=examples,
122
207
  include_in_schema=include_in_schema,
208
+ json_schema_extra=json_schema_extra,
123
209
  **extra,
124
210
  )
125
211
 
@@ -131,7 +217,14 @@ class Query(Param):
131
217
  self,
132
218
  default: Any = Undefined,
133
219
  *,
220
+ default_factory: Union[Callable[[], Any], None] = _Unset,
221
+ annotation: Optional[Any] = None,
134
222
  alias: Optional[str] = None,
223
+ alias_priority: Union[int, None] = _Unset,
224
+ # TODO: update when deprecating Pydantic v1, import these types
225
+ # validation_alias: str | AliasPath | AliasChoices | None
226
+ validation_alias: Union[str, None] = None,
227
+ serialization_alias: Union[str, None] = None,
135
228
  title: Optional[str] = None,
136
229
  description: Optional[str] = None,
137
230
  gt: Optional[float] = None,
@@ -140,7 +233,19 @@ class Query(Param):
140
233
  le: Optional[float] = None,
141
234
  min_length: Optional[int] = None,
142
235
  max_length: Optional[int] = None,
143
- regex: Optional[str] = None,
236
+ pattern: Optional[str] = None,
237
+ regex: Annotated[
238
+ Optional[str],
239
+ deprecated(
240
+ "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead."
241
+ ),
242
+ ] = None,
243
+ discriminator: Union[str, None] = None,
244
+ strict: Union[bool, None] = _Unset,
245
+ multiple_of: Union[float, None] = _Unset,
246
+ allow_inf_nan: Union[bool, None] = _Unset,
247
+ max_digits: Union[int, None] = _Unset,
248
+ decimal_places: Union[int, None] = _Unset,
144
249
  examples: Optional[List[Any]] = None,
145
250
  example: Annotated[
146
251
  Optional[Any],
@@ -148,14 +253,20 @@ class Query(Param):
148
253
  "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
149
254
  "although still supported. Use examples instead."
150
255
  ),
151
- ] = Undefined,
256
+ ] = _Unset,
152
257
  deprecated: Optional[bool] = None,
153
258
  include_in_schema: bool = True,
259
+ json_schema_extra: Union[Dict[str, Any], None] = None,
154
260
  **extra: Any,
155
261
  ):
156
262
  super().__init__(
157
263
  default=default,
264
+ default_factory=default_factory,
265
+ annotation=annotation,
158
266
  alias=alias,
267
+ alias_priority=alias_priority,
268
+ validation_alias=validation_alias,
269
+ serialization_alias=serialization_alias,
159
270
  title=title,
160
271
  description=description,
161
272
  gt=gt,
@@ -164,11 +275,19 @@ class Query(Param):
164
275
  le=le,
165
276
  min_length=min_length,
166
277
  max_length=max_length,
278
+ pattern=pattern,
167
279
  regex=regex,
280
+ discriminator=discriminator,
281
+ strict=strict,
282
+ multiple_of=multiple_of,
283
+ allow_inf_nan=allow_inf_nan,
284
+ max_digits=max_digits,
285
+ decimal_places=decimal_places,
168
286
  deprecated=deprecated,
169
287
  example=example,
170
288
  examples=examples,
171
289
  include_in_schema=include_in_schema,
290
+ json_schema_extra=json_schema_extra,
172
291
  **extra,
173
292
  )
174
293
 
@@ -180,7 +299,14 @@ class Header(Param):
180
299
  self,
181
300
  default: Any = Undefined,
182
301
  *,
302
+ default_factory: Union[Callable[[], Any], None] = _Unset,
303
+ annotation: Optional[Any] = None,
183
304
  alias: Optional[str] = None,
305
+ alias_priority: Union[int, None] = _Unset,
306
+ # TODO: update when deprecating Pydantic v1, import these types
307
+ # validation_alias: str | AliasPath | AliasChoices | None
308
+ validation_alias: Union[str, None] = None,
309
+ serialization_alias: Union[str, None] = None,
184
310
  convert_underscores: bool = True,
185
311
  title: Optional[str] = None,
186
312
  description: Optional[str] = None,
@@ -190,7 +316,19 @@ class Header(Param):
190
316
  le: Optional[float] = None,
191
317
  min_length: Optional[int] = None,
192
318
  max_length: Optional[int] = None,
193
- regex: Optional[str] = None,
319
+ pattern: Optional[str] = None,
320
+ regex: Annotated[
321
+ Optional[str],
322
+ deprecated(
323
+ "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead."
324
+ ),
325
+ ] = None,
326
+ discriminator: Union[str, None] = None,
327
+ strict: Union[bool, None] = _Unset,
328
+ multiple_of: Union[float, None] = _Unset,
329
+ allow_inf_nan: Union[bool, None] = _Unset,
330
+ max_digits: Union[int, None] = _Unset,
331
+ decimal_places: Union[int, None] = _Unset,
194
332
  examples: Optional[List[Any]] = None,
195
333
  example: Annotated[
196
334
  Optional[Any],
@@ -198,15 +336,21 @@ class Header(Param):
198
336
  "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
199
337
  "although still supported. Use examples instead."
200
338
  ),
201
- ] = Undefined,
339
+ ] = _Unset,
202
340
  deprecated: Optional[bool] = None,
203
341
  include_in_schema: bool = True,
342
+ json_schema_extra: Union[Dict[str, Any], None] = None,
204
343
  **extra: Any,
205
344
  ):
206
345
  self.convert_underscores = convert_underscores
207
346
  super().__init__(
208
347
  default=default,
348
+ default_factory=default_factory,
349
+ annotation=annotation,
209
350
  alias=alias,
351
+ alias_priority=alias_priority,
352
+ validation_alias=validation_alias,
353
+ serialization_alias=serialization_alias,
210
354
  title=title,
211
355
  description=description,
212
356
  gt=gt,
@@ -215,11 +359,19 @@ class Header(Param):
215
359
  le=le,
216
360
  min_length=min_length,
217
361
  max_length=max_length,
362
+ pattern=pattern,
218
363
  regex=regex,
364
+ discriminator=discriminator,
365
+ strict=strict,
366
+ multiple_of=multiple_of,
367
+ allow_inf_nan=allow_inf_nan,
368
+ max_digits=max_digits,
369
+ decimal_places=decimal_places,
219
370
  deprecated=deprecated,
220
371
  example=example,
221
372
  examples=examples,
222
373
  include_in_schema=include_in_schema,
374
+ json_schema_extra=json_schema_extra,
223
375
  **extra,
224
376
  )
225
377
 
@@ -231,7 +383,14 @@ class Cookie(Param):
231
383
  self,
232
384
  default: Any = Undefined,
233
385
  *,
386
+ default_factory: Union[Callable[[], Any], None] = _Unset,
387
+ annotation: Optional[Any] = None,
234
388
  alias: Optional[str] = None,
389
+ alias_priority: Union[int, None] = _Unset,
390
+ # TODO: update when deprecating Pydantic v1, import these types
391
+ # validation_alias: str | AliasPath | AliasChoices | None
392
+ validation_alias: Union[str, None] = None,
393
+ serialization_alias: Union[str, None] = None,
235
394
  title: Optional[str] = None,
236
395
  description: Optional[str] = None,
237
396
  gt: Optional[float] = None,
@@ -240,7 +399,19 @@ class Cookie(Param):
240
399
  le: Optional[float] = None,
241
400
  min_length: Optional[int] = None,
242
401
  max_length: Optional[int] = None,
243
- regex: Optional[str] = None,
402
+ pattern: Optional[str] = None,
403
+ regex: Annotated[
404
+ Optional[str],
405
+ deprecated(
406
+ "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead."
407
+ ),
408
+ ] = None,
409
+ discriminator: Union[str, None] = None,
410
+ strict: Union[bool, None] = _Unset,
411
+ multiple_of: Union[float, None] = _Unset,
412
+ allow_inf_nan: Union[bool, None] = _Unset,
413
+ max_digits: Union[int, None] = _Unset,
414
+ decimal_places: Union[int, None] = _Unset,
244
415
  examples: Optional[List[Any]] = None,
245
416
  example: Annotated[
246
417
  Optional[Any],
@@ -248,14 +419,20 @@ class Cookie(Param):
248
419
  "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
249
420
  "although still supported. Use examples instead."
250
421
  ),
251
- ] = Undefined,
422
+ ] = _Unset,
252
423
  deprecated: Optional[bool] = None,
253
424
  include_in_schema: bool = True,
425
+ json_schema_extra: Union[Dict[str, Any], None] = None,
254
426
  **extra: Any,
255
427
  ):
256
428
  super().__init__(
257
429
  default=default,
430
+ default_factory=default_factory,
431
+ annotation=annotation,
258
432
  alias=alias,
433
+ alias_priority=alias_priority,
434
+ validation_alias=validation_alias,
435
+ serialization_alias=serialization_alias,
259
436
  title=title,
260
437
  description=description,
261
438
  gt=gt,
@@ -264,11 +441,19 @@ class Cookie(Param):
264
441
  le=le,
265
442
  min_length=min_length,
266
443
  max_length=max_length,
444
+ pattern=pattern,
267
445
  regex=regex,
446
+ discriminator=discriminator,
447
+ strict=strict,
448
+ multiple_of=multiple_of,
449
+ allow_inf_nan=allow_inf_nan,
450
+ max_digits=max_digits,
451
+ decimal_places=decimal_places,
268
452
  deprecated=deprecated,
269
453
  example=example,
270
454
  examples=examples,
271
455
  include_in_schema=include_in_schema,
456
+ json_schema_extra=json_schema_extra,
272
457
  **extra,
273
458
  )
274
459
 
@@ -278,9 +463,16 @@ class Body(FieldInfo):
278
463
  self,
279
464
  default: Any = Undefined,
280
465
  *,
466
+ default_factory: Union[Callable[[], Any], None] = _Unset,
467
+ annotation: Optional[Any] = None,
281
468
  embed: bool = False,
282
469
  media_type: str = "application/json",
283
470
  alias: Optional[str] = None,
471
+ alias_priority: Union[int, None] = _Unset,
472
+ # TODO: update when deprecating Pydantic v1, import these types
473
+ # validation_alias: str | AliasPath | AliasChoices | None
474
+ validation_alias: Union[str, None] = None,
475
+ serialization_alias: Union[str, None] = None,
284
476
  title: Optional[str] = None,
285
477
  description: Optional[str] = None,
286
478
  gt: Optional[float] = None,
@@ -289,7 +481,19 @@ class Body(FieldInfo):
289
481
  le: Optional[float] = None,
290
482
  min_length: Optional[int] = None,
291
483
  max_length: Optional[int] = None,
292
- regex: Optional[str] = None,
484
+ pattern: Optional[str] = None,
485
+ regex: Annotated[
486
+ Optional[str],
487
+ deprecated(
488
+ "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead."
489
+ ),
490
+ ] = None,
491
+ discriminator: Union[str, None] = None,
492
+ strict: Union[bool, None] = _Unset,
493
+ multiple_of: Union[float, None] = _Unset,
494
+ allow_inf_nan: Union[bool, None] = _Unset,
495
+ max_digits: Union[int, None] = _Unset,
496
+ decimal_places: Union[int, None] = _Unset,
293
497
  examples: Optional[List[Any]] = None,
294
498
  example: Annotated[
295
499
  Optional[Any],
@@ -297,23 +501,26 @@ class Body(FieldInfo):
297
501
  "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
298
502
  "although still supported. Use examples instead."
299
503
  ),
300
- ] = Undefined,
504
+ ] = _Unset,
505
+ deprecated: Optional[bool] = None,
506
+ include_in_schema: bool = True,
507
+ json_schema_extra: Union[Dict[str, Any], None] = None,
301
508
  **extra: Any,
302
509
  ):
303
510
  self.embed = embed
304
511
  self.media_type = media_type
305
- if example is not Undefined:
512
+ self.deprecated = deprecated
513
+ if example is not _Unset:
306
514
  warnings.warn(
307
515
  "`example` has been depreacated, please use `examples` instead",
308
516
  category=DeprecationWarning,
309
- stacklevel=1,
517
+ stacklevel=4,
310
518
  )
311
519
  self.example = example
312
- extra_kwargs = {**extra}
313
- if examples is not None:
314
- extra_kwargs["examples"] = examples
315
- super().__init__(
520
+ self.include_in_schema = include_in_schema
521
+ kwargs = dict(
316
522
  default=default,
523
+ default_factory=default_factory,
317
524
  alias=alias,
318
525
  title=title,
319
526
  description=description,
@@ -323,9 +530,41 @@ class Body(FieldInfo):
323
530
  le=le,
324
531
  min_length=min_length,
325
532
  max_length=max_length,
326
- regex=regex,
327
- **extra_kwargs,
533
+ discriminator=discriminator,
534
+ multiple_of=multiple_of,
535
+ allow_nan=allow_inf_nan,
536
+ max_digits=max_digits,
537
+ decimal_places=decimal_places,
538
+ **extra,
328
539
  )
540
+ if examples is not None:
541
+ kwargs["examples"] = examples
542
+ if regex is not None:
543
+ warnings.warn(
544
+ "`regex` has been depreacated, please use `pattern` instead",
545
+ category=DeprecationWarning,
546
+ stacklevel=4,
547
+ )
548
+ current_json_schema_extra = json_schema_extra or extra
549
+ if PYDANTIC_V2:
550
+ kwargs.update(
551
+ {
552
+ "annotation": annotation,
553
+ "alias_priority": alias_priority,
554
+ "validation_alias": validation_alias,
555
+ "serialization_alias": serialization_alias,
556
+ "strict": strict,
557
+ "json_schema_extra": current_json_schema_extra,
558
+ }
559
+ )
560
+ kwargs["pattern"] = pattern or regex
561
+ else:
562
+ kwargs["regex"] = pattern or regex
563
+ kwargs.update(**current_json_schema_extra)
564
+
565
+ use_kwargs = {k: v for k, v in kwargs.items() if v is not _Unset}
566
+
567
+ super().__init__(**use_kwargs)
329
568
 
330
569
  def __repr__(self) -> str:
331
570
  return f"{self.__class__.__name__}({self.default})"
@@ -336,8 +575,15 @@ class Form(Body):
336
575
  self,
337
576
  default: Any = Undefined,
338
577
  *,
578
+ default_factory: Union[Callable[[], Any], None] = _Unset,
579
+ annotation: Optional[Any] = None,
339
580
  media_type: str = "application/x-www-form-urlencoded",
340
581
  alias: Optional[str] = None,
582
+ alias_priority: Union[int, None] = _Unset,
583
+ # TODO: update when deprecating Pydantic v1, import these types
584
+ # validation_alias: str | AliasPath | AliasChoices | None
585
+ validation_alias: Union[str, None] = None,
586
+ serialization_alias: Union[str, None] = None,
341
587
  title: Optional[str] = None,
342
588
  description: Optional[str] = None,
343
589
  gt: Optional[float] = None,
@@ -346,7 +592,19 @@ class Form(Body):
346
592
  le: Optional[float] = None,
347
593
  min_length: Optional[int] = None,
348
594
  max_length: Optional[int] = None,
349
- regex: Optional[str] = None,
595
+ pattern: Optional[str] = None,
596
+ regex: Annotated[
597
+ Optional[str],
598
+ deprecated(
599
+ "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead."
600
+ ),
601
+ ] = None,
602
+ discriminator: Union[str, None] = None,
603
+ strict: Union[bool, None] = _Unset,
604
+ multiple_of: Union[float, None] = _Unset,
605
+ allow_inf_nan: Union[bool, None] = _Unset,
606
+ max_digits: Union[int, None] = _Unset,
607
+ decimal_places: Union[int, None] = _Unset,
350
608
  examples: Optional[List[Any]] = None,
351
609
  example: Annotated[
352
610
  Optional[Any],
@@ -354,14 +612,22 @@ class Form(Body):
354
612
  "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
355
613
  "although still supported. Use examples instead."
356
614
  ),
357
- ] = Undefined,
615
+ ] = _Unset,
616
+ deprecated: Optional[bool] = None,
617
+ include_in_schema: bool = True,
618
+ json_schema_extra: Union[Dict[str, Any], None] = None,
358
619
  **extra: Any,
359
620
  ):
360
621
  super().__init__(
361
622
  default=default,
623
+ default_factory=default_factory,
624
+ annotation=annotation,
362
625
  embed=True,
363
626
  media_type=media_type,
364
627
  alias=alias,
628
+ alias_priority=alias_priority,
629
+ validation_alias=validation_alias,
630
+ serialization_alias=serialization_alias,
365
631
  title=title,
366
632
  description=description,
367
633
  gt=gt,
@@ -370,9 +636,19 @@ class Form(Body):
370
636
  le=le,
371
637
  min_length=min_length,
372
638
  max_length=max_length,
639
+ pattern=pattern,
373
640
  regex=regex,
641
+ discriminator=discriminator,
642
+ strict=strict,
643
+ multiple_of=multiple_of,
644
+ allow_inf_nan=allow_inf_nan,
645
+ max_digits=max_digits,
646
+ decimal_places=decimal_places,
647
+ deprecated=deprecated,
374
648
  example=example,
375
649
  examples=examples,
650
+ include_in_schema=include_in_schema,
651
+ json_schema_extra=json_schema_extra,
376
652
  **extra,
377
653
  )
378
654
 
@@ -382,8 +658,15 @@ class File(Form):
382
658
  self,
383
659
  default: Any = Undefined,
384
660
  *,
661
+ default_factory: Union[Callable[[], Any], None] = _Unset,
662
+ annotation: Optional[Any] = None,
385
663
  media_type: str = "multipart/form-data",
386
664
  alias: Optional[str] = None,
665
+ alias_priority: Union[int, None] = _Unset,
666
+ # TODO: update when deprecating Pydantic v1, import these types
667
+ # validation_alias: str | AliasPath | AliasChoices | None
668
+ validation_alias: Union[str, None] = None,
669
+ serialization_alias: Union[str, None] = None,
387
670
  title: Optional[str] = None,
388
671
  description: Optional[str] = None,
389
672
  gt: Optional[float] = None,
@@ -392,7 +675,19 @@ class File(Form):
392
675
  le: Optional[float] = None,
393
676
  min_length: Optional[int] = None,
394
677
  max_length: Optional[int] = None,
395
- regex: Optional[str] = None,
678
+ pattern: Optional[str] = None,
679
+ regex: Annotated[
680
+ Optional[str],
681
+ deprecated(
682
+ "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead."
683
+ ),
684
+ ] = None,
685
+ discriminator: Union[str, None] = None,
686
+ strict: Union[bool, None] = _Unset,
687
+ multiple_of: Union[float, None] = _Unset,
688
+ allow_inf_nan: Union[bool, None] = _Unset,
689
+ max_digits: Union[int, None] = _Unset,
690
+ decimal_places: Union[int, None] = _Unset,
396
691
  examples: Optional[List[Any]] = None,
397
692
  example: Annotated[
398
693
  Optional[Any],
@@ -400,13 +695,21 @@ class File(Form):
400
695
  "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, "
401
696
  "although still supported. Use examples instead."
402
697
  ),
403
- ] = Undefined,
698
+ ] = _Unset,
699
+ deprecated: Optional[bool] = None,
700
+ include_in_schema: bool = True,
701
+ json_schema_extra: Union[Dict[str, Any], None] = None,
404
702
  **extra: Any,
405
703
  ):
406
704
  super().__init__(
407
705
  default=default,
706
+ default_factory=default_factory,
707
+ annotation=annotation,
408
708
  media_type=media_type,
409
709
  alias=alias,
710
+ alias_priority=alias_priority,
711
+ validation_alias=validation_alias,
712
+ serialization_alias=serialization_alias,
410
713
  title=title,
411
714
  description=description,
412
715
  gt=gt,
@@ -415,9 +718,19 @@ class File(Form):
415
718
  le=le,
416
719
  min_length=min_length,
417
720
  max_length=max_length,
721
+ pattern=pattern,
418
722
  regex=regex,
723
+ discriminator=discriminator,
724
+ strict=strict,
725
+ multiple_of=multiple_of,
726
+ allow_inf_nan=allow_inf_nan,
727
+ max_digits=max_digits,
728
+ decimal_places=decimal_places,
729
+ deprecated=deprecated,
419
730
  example=example,
420
731
  examples=examples,
732
+ include_in_schema=include_in_schema,
733
+ json_schema_extra=json_schema_extra,
421
734
  **extra,
422
735
  )
423
736