resolved RESOLVED UNSUBMITTED PASS ยท None tool calls ยท 0 s ยท fastapi/fastapi
๐ Fix security schemes in OpenAPI when added at the top level app ๐ Fix security schemes in OpenAPI when added at the top level app Ref: https://github.com/fastapi/fastapi/discussions/14263 Ref: https://github.com/fastapi/fastapi/issues/14271
| # | Tool | Arguments | Result |
|---|---|---|---|
| No trace captured. | |||
--- a/fastapi/dependencies/utils.py
+++ b/fastapi/dependencies/utils.py
@@ -248,6 +248,14 @@ def get_dependant(
path_param_names = get_path_param_names(path)
endpoint_signature = get_typed_signature(call)
signature_params = endpoint_signature.parameters
+ if isinstance(call, SecurityBase):
+ use_scopes: List[str] = []
+ if isinstance(call, (OAuth2, OpenIdConnect)):
+ use_scopes = security_scopes
+ security_requirement = SecurityRequirement(
+ security_scheme=call, scopes=use_scopes
+ )
+ dependant.security_requirements.append(security_requirement)
for param_name, param in signature_params.items():
is_path_param = param_name in path_param_names
param_details = analyze_param(
@@ -269,16 +277,6 @@ def get_dependant(
security_scopes=use_security_scopes,
use_cache=param_details.depends.use_cache,
)
- if isinstance(param_details.depends.dependency, SecurityBase):
- use_scopes: List[str] = []
- if isinstance(
- param_details.depends.dependency, (OAuth2, OpenIdConnect)
- ):
- use_scopes = use_security_scopes
- security_requirement = SecurityRequirement(
- security_scheme=param_details.depends.dependency, scopes=use_scopes
- )
- sub_dependant.security_requirements.append(security_requirement)
dependant.dependencies.append(sub_dependant)
continue
if add_non_field_param_to_dependency(... [100%]
=============================== warnings summary ===============================
../../../../../../../Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/overlays/starlette-0.49.3-py3-none-any/starlette/testclient.py:51
/Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/overlays/starlette-0.49.3-py3-none-any/starlette/testclient.py:51: DeprecationWarning: The anyio.abc.BlockingPortal alias is deprecated, use anyio.from_thread.BlockingPortal instead.
_PortalFactoryType = Callable[[], AbstractContextManager[anyio.abc.BlockingPortal]]
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
3 passed, 1 warning in 0.65s