fastapi_swagger2 0.3.0__tar.gz → 0.3.2__tar.gz

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.
Files changed (40) hide show
  1. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/PKG-INFO +4 -2
  2. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/README.md +2 -0
  3. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/pyproject.toml +1 -1
  4. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/src/fastapi_swagger2/__init__.py +1 -1
  5. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/src/fastapi_swagger2/utils.py +17 -9
  6. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/.flake8 +0 -0
  7. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/.gitignore +0 -0
  8. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/LICENSE +0 -0
  9. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/.git +0 -0
  10. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/.gitignore +0 -0
  11. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/LICENSE +0 -0
  12. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/README.md +0 -0
  13. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/pyproject.toml +0 -0
  14. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/requirements-dev.txt +0 -0
  15. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/requirements.txt +0 -0
  16. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/scripts/build.sh +0 -0
  17. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/scripts/clean.sh +0 -0
  18. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/scripts/format.sh +0 -0
  19. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/scripts/lint.sh +0 -0
  20. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/scripts/publish.sh +0 -0
  21. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/scripts/test.sh +0 -0
  22. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/setup.cfg +0 -0
  23. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/src/fastapi_swagger2/__init__.py +0 -0
  24. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/src/fastapi_swagger2/constants.py +0 -0
  25. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/src/fastapi_swagger2/models.py +0 -0
  26. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/fastapi_0.100.0/src/fastapi_swagger2/utils.py +0 -0
  27. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/requirements-dev.txt +0 -0
  28. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/requirements.txt +0 -0
  29. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/scripts/build.sh +0 -0
  30. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/scripts/clean.sh +0 -0
  31. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/scripts/format.sh +0 -0
  32. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/scripts/lint.sh +0 -0
  33. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/scripts/publish.sh +0 -0
  34. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/scripts/test.sh +0 -0
  35. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/setup.cfg +0 -0
  36. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/src/fastapi_swagger2/models.py +0 -0
  37. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/src/fastapi_swagger2_old/__init__.py +0 -0
  38. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/src/fastapi_swagger2_old/constants.py +0 -0
  39. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/src/fastapi_swagger2_old/models.py +0 -0
  40. {fastapi_swagger2-0.3.0 → fastapi_swagger2-0.3.2}/src/fastapi_swagger2_old/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi_swagger2
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Swagger2 support for FastAPI framework
5
5
  Project-URL: Homepage, https://github.com/virajkanwade/fastapi_swagger2
6
6
  Project-URL: Documentation, https://github.com/virajkanwade/fastapi_swagger2
@@ -53,7 +53,7 @@ Classifier: Topic :: Software Development :: Libraries
53
53
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
54
54
  Classifier: Typing :: Typed
55
55
  Requires-Python: >=3.9
56
- Requires-Dist: fastapi<=0.123.8,>=0.119.0
56
+ Requires-Dist: fastapi>=0.128.0
57
57
  Provides-Extra: all
58
58
  Requires-Dist: httpx>=0.28.1; extra == 'all'
59
59
  Provides-Extra: dev
@@ -98,6 +98,8 @@ Python 3.9+
98
98
  * 0.2.4 - FastAPI >= 0.100.0
99
99
  * 0.2.7 - FastAPI >= 0.100.0, < 0.119.0 + Pydantic v1/v2
100
100
  * 0.3.0 - FastAPI >= 0.119.0, <= 0.123.8 + Pydantic v1/v2
101
+ * 0.3.1 - FastAPI >= 0.123.9, <= 0.127.1 + Pydantic v1/v2 (Since FastAPI 0.126.1, Pydantic v1 is deprecated)
102
+ * 0.3.2 - FastAPI >= 0.128.0
101
103
 
102
104
  ## Installation
103
105
 
@@ -28,6 +28,8 @@ Python 3.9+
28
28
  * 0.2.4 - FastAPI >= 0.100.0
29
29
  * 0.2.7 - FastAPI >= 0.100.0, < 0.119.0 + Pydantic v1/v2
30
30
  * 0.3.0 - FastAPI >= 0.119.0, <= 0.123.8 + Pydantic v1/v2
31
+ * 0.3.1 - FastAPI >= 0.123.9, <= 0.127.1 + Pydantic v1/v2 (Since FastAPI 0.126.1, Pydantic v1 is deprecated)
32
+ * 0.3.2 - FastAPI >= 0.128.0
31
33
 
32
34
  ## Installation
33
35
 
@@ -39,7 +39,7 @@ classifiers = [
39
39
  "Topic :: Internet :: WWW/HTTP",
40
40
  ]
41
41
  dependencies = [
42
- "fastapi >=0.119.0,<=0.123.8",
42
+ "fastapi >=0.128.0",
43
43
  ]
44
44
  dynamic = ["version"]
45
45
 
@@ -1,4 +1,4 @@
1
- __version__ = "0.3.0"
1
+ __version__ = "0.3.2"
2
2
 
3
3
  from typing import Any, Dict, List, Optional, TypeVar
4
4
 
@@ -4,7 +4,6 @@ from typing import Any, Dict, List, Optional, Sequence, Set, Tuple, Type, Union
4
4
 
5
5
  from fastapi import routing
6
6
  from fastapi._compat import (
7
- JsonSchemaValue,
8
7
  ModelField,
9
8
  get_compat_model_name_map,
10
9
  get_definitions,
@@ -209,10 +208,11 @@ def get_swagger2_security_definitions(
209
208
  }
210
209
 
211
210
  security_definitions = {}
212
- operation_security = []
213
- for security_requirement in flat_dependant.security_requirements:
211
+ # Use a dict to merge scopes for same security scheme
212
+ operation_security_dict: Dict[str, List[str]] = {}
213
+ for security_dependency in flat_dependant._security_dependencies:
214
214
  security_definition = jsonable_encoder(
215
- security_requirement.security_scheme.model,
215
+ security_dependency._security_scheme.model,
216
216
  by_alias=True,
217
217
  exclude_none=True,
218
218
  )
@@ -234,7 +234,7 @@ def get_swagger2_security_definitions(
234
234
  if not flows:
235
235
  continue
236
236
 
237
- security_name = security_requirement.security_scheme.scheme_name
237
+ security_name = security_dependency._security_scheme.scheme_name
238
238
 
239
239
  for flow_key, flow_data in flows.items():
240
240
  swagger2_flow_key = oauth2_flows_keys_map.get(flow_key)
@@ -246,14 +246,22 @@ def get_swagger2_security_definitions(
246
246
 
247
247
  suffixed_name = f"{security_name}_{swagger2_flow_key}"
248
248
  security_definitions[suffixed_name] = mapped_security
249
- operation_security.append({suffixed_name: security_requirement.scopes})
249
+ for scope in security_dependency.oauth_scopes or []:
250
+ if scope not in operation_security_dict.setdefault(suffixed_name, []):
251
+ operation_security_dict[suffixed_name].append(scope)
250
252
 
251
253
  continue
252
254
  # swagger2 logic - end
253
255
 
254
- security_name = security_requirement.security_scheme.scheme_name
256
+ security_name = security_dependency._security_scheme.scheme_name
255
257
  security_definitions[security_name] = security_definition
256
- operation_security.append({security_name: security_requirement.scopes})
258
+ # Merge scopes for the same security scheme
259
+ if security_name not in operation_security_dict:
260
+ operation_security_dict[security_name] = []
261
+ for scope in security_dependency.oauth_scopes or []:
262
+ if scope not in operation_security_dict[security_name]:
263
+ operation_security_dict[security_name].append(scope)
264
+ operation_security = [{name: scopes} for name, scopes in operation_security_dict.items()]
257
265
  return security_definitions, operation_security
258
266
 
259
267
 
@@ -262,7 +270,7 @@ def get_swagger2_path(
262
270
  route: routing.APIRoute,
263
271
  operation_ids: Set[str],
264
272
  model_name_map: ModelNameMap,
265
- field_mapping: Dict[Tuple[ModelField, Literal["validation", "serialization"]], JsonSchemaValue],
273
+ field_mapping: Dict[Tuple[ModelField, Literal["validation", "serialization"]], dict[str, Any]],
266
274
  separate_input_output_schemas: bool = True,
267
275
  ) -> Tuple[Dict[str, Any], Dict[str, Any], Dict[str, Any]]:
268
276
  path: Dict[str, Any] = {}