fastapi 0.115.3__py3-none-any.whl → 0.115.5__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/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """FastAPI framework, high performance, easy to learn, fast to code, ready for production"""
2
2
 
3
- __version__ = "0.115.3"
3
+ __version__ = "0.115.5"
4
4
 
5
5
  from starlette import status as status
6
6
 
fastapi/_compat.py CHANGED
@@ -27,7 +27,8 @@ from typing_extensions import Annotated, Literal, get_args, get_origin
27
27
 
28
28
  # Reassign variable to make it reexported for mypy
29
29
  PYDANTIC_VERSION = P_VERSION
30
- PYDANTIC_V2 = PYDANTIC_VERSION.startswith("2.")
30
+ PYDANTIC_VERSION_MINOR_TUPLE = tuple(int(x) for x in PYDANTIC_VERSION.split(".")[:2])
31
+ PYDANTIC_V2 = PYDANTIC_VERSION_MINOR_TUPLE[0] == 2
31
32
 
32
33
 
33
34
  sequence_annotation_to_type = {
@@ -90,21 +90,29 @@ multipart_incorrect_install_error = (
90
90
 
91
91
  def ensure_multipart_is_installed() -> None:
92
92
  try:
93
- # __version__ is available in both multiparts, and can be mocked
94
- from multipart import __version__
93
+ from python_multipart import __version__
95
94
 
96
- assert __version__
95
+ # Import an attribute that can be mocked/deleted in testing
96
+ assert __version__ > "0.0.12"
97
+ except (ImportError, AssertionError):
97
98
  try:
98
- # parse_options_header is only available in the right multipart
99
- from multipart.multipart import parse_options_header
99
+ # __version__ is available in both multiparts, and can be mocked
100
+ from multipart import __version__ # type: ignore[no-redef,import-untyped]
100
101
 
101
- assert parse_options_header # type: ignore[truthy-function]
102
+ assert __version__
103
+ try:
104
+ # parse_options_header is only available in the right multipart
105
+ from multipart.multipart import ( # type: ignore[import-untyped]
106
+ parse_options_header,
107
+ )
108
+
109
+ assert parse_options_header
110
+ except ImportError:
111
+ logger.error(multipart_incorrect_install_error)
112
+ raise RuntimeError(multipart_incorrect_install_error) from None
102
113
  except ImportError:
103
- logger.error(multipart_incorrect_install_error)
104
- raise RuntimeError(multipart_incorrect_install_error) from None
105
- except ImportError:
106
- logger.error(multipart_not_installed_error)
107
- raise RuntimeError(multipart_not_installed_error) from None
114
+ logger.error(multipart_not_installed_error)
115
+ raise RuntimeError(multipart_not_installed_error) from None
108
116
 
109
117
 
110
118
  def get_param_sub_dependant(
@@ -2298,7 +2298,7 @@ def Security( # noqa: N802
2298
2298
  dependency.
2299
2299
 
2300
2300
  The term "scope" comes from the OAuth2 specification, it seems to be
2301
- intentionaly vague and interpretable. It normally refers to permissions,
2301
+ intentionally vague and interpretable. It normally refers to permissions,
2302
2302
  in cases to roles.
2303
2303
 
2304
2304
  These scopes are integrated with OpenAPI (and the API docs at `/docs`).
fastapi/params.py CHANGED
@@ -6,7 +6,11 @@ from fastapi.openapi.models import Example
6
6
  from pydantic.fields import FieldInfo
7
7
  from typing_extensions import Annotated, deprecated
8
8
 
9
- from ._compat import PYDANTIC_V2, PYDANTIC_VERSION, Undefined
9
+ from ._compat import (
10
+ PYDANTIC_V2,
11
+ PYDANTIC_VERSION_MINOR_TUPLE,
12
+ Undefined,
13
+ )
10
14
 
11
15
  _Unset: Any = Undefined
12
16
 
@@ -105,7 +109,7 @@ class Param(FieldInfo):
105
109
  stacklevel=4,
106
110
  )
107
111
  current_json_schema_extra = json_schema_extra or extra
108
- if PYDANTIC_VERSION < "2.7.0":
112
+ if PYDANTIC_VERSION_MINOR_TUPLE < (2, 7):
109
113
  self.deprecated = deprecated
110
114
  else:
111
115
  kwargs["deprecated"] = deprecated
@@ -561,7 +565,7 @@ class Body(FieldInfo):
561
565
  stacklevel=4,
562
566
  )
563
567
  current_json_schema_extra = json_schema_extra or extra
564
- if PYDANTIC_VERSION < "2.7.0":
568
+ if PYDANTIC_VERSION_MINOR_TUPLE < (2, 7):
565
569
  self.deprecated = deprecated
566
570
  else:
567
571
  kwargs["deprecated"] = deprecated
@@ -52,7 +52,7 @@ class OAuth2PasswordRequestForm:
52
52
  ```
53
53
 
54
54
  Note that for OAuth2 the scope `items:read` is a single scope in an opaque string.
55
- You could have custom internal logic to separate it by colon caracters (`:`) or
55
+ You could have custom internal logic to separate it by colon characters (`:`) or
56
56
  similar, and get the two parts `items` and `read`. Many applications do that to
57
57
  group and organize permissions, you could do it as well in your application, just
58
58
  know that that it is application specific, it's not part of the specification.
@@ -194,7 +194,7 @@ class OAuth2PasswordRequestFormStrict(OAuth2PasswordRequestForm):
194
194
  ```
195
195
 
196
196
  Note that for OAuth2 the scope `items:read` is a single scope in an opaque string.
197
- You could have custom internal logic to separate it by colon caracters (`:`) or
197
+ You could have custom internal logic to separate it by colon characters (`:`) or
198
198
  similar, and get the two parts `items` and `read`. Many applications do that to
199
199
  group and organize permissions, you could do it as well in your application, just
200
200
  know that that it is application specific, it's not part of the specification.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastapi
3
- Version: 0.115.3
3
+ Version: 0.115.5
4
4
  Summary: FastAPI framework, high performance, easy to learn, fast to code, ready for production
5
5
  Author-Email: =?utf-8?q?Sebasti=C3=A1n_Ram=C3=ADrez?= <tiangolo@gmail.com>
6
6
  Classifier: Intended Audience :: Information Technology
@@ -119,6 +119,7 @@ The key features are:
119
119
  <a href="https://www.mongodb.com/developer/languages/python/python-quickstart-fastapi/?utm_campaign=fastapi_framework&utm_source=fastapi_sponsorship&utm_medium=web_referral" target="_blank" title="Simplify Full Stack Development with FastAPI & MongoDB"><img src="https://fastapi.tiangolo.com/img/sponsors/mongodb.png"></a>
120
120
  <a href="https://zuplo.link/fastapi-gh" target="_blank" title="Zuplo: Scale, Protect, Document, and Monetize your FastAPI"><img src="https://fastapi.tiangolo.com/img/sponsors/zuplo.png"></a>
121
121
  <a href="https://liblab.com?utm_source=fastapi" target="_blank" title="liblab - Generate SDKs from FastAPI"><img src="https://fastapi.tiangolo.com/img/sponsors/liblab.png"></a>
122
+ <a href="https://docs.render.com/deploy-fastapi?utm_source=deploydoc&utm_medium=referral&utm_campaign=fastapi" target="_blank" title="Deploy & scale any full-stack web app on Render. Focus on building apps, not infra."><img src="https://fastapi.tiangolo.com/img/sponsors/render.svg"></a>
122
123
  <a href="https://github.com/deepset-ai/haystack/" target="_blank" title="Build powerful search from composable, open source building blocks"><img src="https://fastapi.tiangolo.com/img/sponsors/haystack-fastapi.svg"></a>
123
124
  <a href="https://databento.com/" target="_blank" title="Pay as you go for market data"><img src="https://fastapi.tiangolo.com/img/sponsors/databento.svg"></a>
124
125
  <a href="https://speakeasy.com?utm_source=fastapi+repo&utm_medium=github+sponsorship" target="_blank" title="SDKs for your API | Speakeasy"><img src="https://fastapi.tiangolo.com/img/sponsors/speakeasy.png"></a>
@@ -1,10 +1,10 @@
1
- fastapi-0.115.3.dist-info/METADATA,sha256=ZC7OUyFC5rrZ7M2OKhVpEHTxgsWfx8REucwWdLmq4NE,27012
2
- fastapi-0.115.3.dist-info/WHEEL,sha256=pM0IBB6ZwH3nkEPhtcp50KvKNX-07jYtnb1g1m6Z4Co,90
3
- fastapi-0.115.3.dist-info/entry_points.txt,sha256=GCf-WbIZxyGT4MUmrPGj1cOHYZoGsNPHAvNkT6hnGeA,61
4
- fastapi-0.115.3.dist-info/licenses/LICENSE,sha256=Tsif_IFIW5f-xYSy1KlhAy7v_oNEU4lP2cEnSQbMdE4,1086
5
- fastapi/__init__.py,sha256=zk0kLiSs6VN5Em6Qst7UInAtBlE9spFyhnXMKAUEhBY,1081
1
+ fastapi-0.115.5.dist-info/METADATA,sha256=8IXLQm48i6TD0hGPwT2wDvabW4GRYJMFoGnRm4AILSc,27300
2
+ fastapi-0.115.5.dist-info/WHEEL,sha256=thaaA2w1JzcGC48WYufAs8nrYZjJm8LqNfnXFOFyCC4,90
3
+ fastapi-0.115.5.dist-info/entry_points.txt,sha256=GCf-WbIZxyGT4MUmrPGj1cOHYZoGsNPHAvNkT6hnGeA,61
4
+ fastapi-0.115.5.dist-info/licenses/LICENSE,sha256=Tsif_IFIW5f-xYSy1KlhAy7v_oNEU4lP2cEnSQbMdE4,1086
5
+ fastapi/__init__.py,sha256=YJQY54XRlgbczimT8pNac98Wb1yZUfC1iVdnehG937Q,1081
6
6
  fastapi/__main__.py,sha256=bKePXLdO4SsVSM6r9SVoLickJDcR2c0cTOxZRKq26YQ,37
7
- fastapi/_compat.py,sha256=GJTevkAENKrvtvAGL3zDEmzlXaX9EjFzyRPtSfVRCKs,23921
7
+ fastapi/_compat.py,sha256=rrpxrPgF5fCUInIKaeVd0scVTFRUkZlHR9puxvTrcB0,24010
8
8
  fastapi/applications.py,sha256=Ix-o9pQAWhEDf9J0Q1hZ0nBB1uP72c-Y3oiYzvrwqiM,176316
9
9
  fastapi/background.py,sha256=rouLirxUANrcYC824MSMypXL_Qb2HYg2YZqaiEqbEKI,1768
10
10
  fastapi/cli.py,sha256=OYhZb0NR_deuT5ofyPF2NoNBzZDNOP8Salef2nk-HqA,418
@@ -12,7 +12,7 @@ fastapi/concurrency.py,sha256=AYLnS4judDUmXsNRICtoKSP0prfYDcS8ehBtYW9JhQQ,1403
12
12
  fastapi/datastructures.py,sha256=b2PEz77XGq-u3Ur1Inwk0AGjOsQZO49yF9C7IPJ15cY,5766
13
13
  fastapi/dependencies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  fastapi/dependencies/models.py,sha256=Pjl6vx-4nZ5Tta9kJa3-RfQKkXtCpS09-FhMgs9eWNs,1507
15
- fastapi/dependencies/utils.py,sha256=os09kCYSbaseQ7MVCdjrZWaTxrpFUTWqDYAYTZ5qt_w,35235
15
+ fastapi/dependencies/utils.py,sha256=UqN1H0k_4PCnP-nRYNpup1fdIuzEx1F5ZVO6WuVRx4E,35579
16
16
  fastapi/encoders.py,sha256=LvwYmFeOz4tVwvgBoC5rvZnbr7hZr73KGrU8O7zSptU,11068
17
17
  fastapi/exception_handlers.py,sha256=MBrIOA-ugjJDivIi4rSsUJBdTsjuzN76q4yh0q1COKw,1332
18
18
  fastapi/exceptions.py,sha256=taNixuFEXb67lI1bnX1ubq8y8TseJ4yoPlWjyP0fTzk,4969
@@ -28,8 +28,8 @@ fastapi/openapi/constants.py,sha256=adGzmis1L1HJRTE3kJ5fmHS_Noq6tIY6pWv_SFzoFDU,
28
28
  fastapi/openapi/docs.py,sha256=XcQq-ZbQdC5sI0gIGu5MoHK1q-OFaqws7-ORTo6sjY4,10348
29
29
  fastapi/openapi/models.py,sha256=PqkxQiqcEgjKuhfUIWPZPQcyTcubtUCB3vcObLsB7VE,15397
30
30
  fastapi/openapi/utils.py,sha256=vpbAzWpuNaJL_ocBxt4jp0GUUwrDKNB1anyoAx69fhA,23177
31
- fastapi/param_functions.py,sha256=uQzNlihlhM80u4Xbstz__D3L3yxpTqLmsC-Hra1WfqE,64018
32
- fastapi/params.py,sha256=XC025dCSObp7fXhOPYo-jwXQRGZ9CwlfNRq2cLh_dRk,28186
31
+ fastapi/param_functions.py,sha256=JHNPLIYvoAwdnZZavIVsxOat8x23fX_Kl33reh7HKl8,64019
32
+ fastapi/params.py,sha256=g450axUBQgQJODdtM7WBxZbQj9Z64inFvadrgHikBbU,28237
33
33
  fastapi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  fastapi/requests.py,sha256=zayepKFcienBllv3snmWI20Gk0oHNVLU4DDhqXBb4LU,142
35
35
  fastapi/responses.py,sha256=QNQQlwpKhQoIPZTTWkpc9d_QGeGZ_aVQPaDV3nQ8m7c,1761
@@ -38,7 +38,7 @@ fastapi/security/__init__.py,sha256=bO8pNmxqVRXUjfl2mOKiVZLn0FpBQ61VUYVjmppnbJw,
38
38
  fastapi/security/api_key.py,sha256=_OqUUjEHG5_MT1IPAhXIGJRCPldTBdSww_DegFy_W8Y,9368
39
39
  fastapi/security/base.py,sha256=dl4pvbC-RxjfbWgPtCWd8MVU-7CB2SZ22rJDXVCXO6c,141
40
40
  fastapi/security/http.py,sha256=223bAV_d7NjI57Pzhbd_KlQTYlMyr5MoN1TW80rbxF8,13512
41
- fastapi/security/oauth2.py,sha256=lWemX4CLAvanR6-jiQxFtOyHjHbzEnNbpytA_WXgZcw,21583
41
+ fastapi/security/oauth2.py,sha256=BbXdQ_W2Pm5NIcpHGBSBa1u3t0EBLCgiYdOLfid1t4A,21585
42
42
  fastapi/security/open_id_connect_url.py,sha256=8vizZ2tGqEp1ur8SwtVgyHJhGAJ5AqahgcvSpaIioDI,2722
43
43
  fastapi/security/utils.py,sha256=bd8T0YM7UQD5ATKucr1bNtAvz_Y3__dVNAv5UebiPvc,293
44
44
  fastapi/staticfiles.py,sha256=iirGIt3sdY2QZXd36ijs3Cj-T0FuGFda3cd90kM9Ikw,69
@@ -47,4 +47,4 @@ fastapi/testclient.py,sha256=nBvaAmX66YldReJNZXPOk1sfuo2Q6hs8bOvIaCep6LQ,66
47
47
  fastapi/types.py,sha256=nFb36sK3DSoqoyo7Miwy3meKK5UdFBgkAgLSzQlUVyI,383
48
48
  fastapi/utils.py,sha256=y8Bj5ttMaI9tS4D60OUgXqKnktBr99NdYUnHHV9LgoY,7948
49
49
  fastapi/websockets.py,sha256=419uncYObEKZG0YcrXscfQQYLSWoE10jqxVMetGdR98,222
50
- fastapi-0.115.3.dist-info/RECORD,,
50
+ fastapi-0.115.5.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: pdm-backend (2.4.2)
2
+ Generator: pdm-backend (2.4.3)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any