Skip to content

Commit 86fe831

Browse files
committed
Fix deprecated useage of FastAPI Depends
fast-api-non-annotated-dependency (FAST002) Derived from the **FastAPI** linter. Fix is sometimes available. Identifies FastAPI routes with deprecated uses of `Depends` or similar. The [FastAPI documentation] recommends the use of [`typing.Annotated`][typing-annotated] for defining route dependencies and parameters, rather than using `Depends`, `Query` or similar as a default value for a parameter. Using this approach everywhere helps ensure consistency and clarity in defining dependencies and parameters. `Annotated` was added to the `typing` module in Python 3.9; however, the third-party [`typing_extensions`][typing-extensions] package provides a backport that can be used on older versions of Python.
1 parent 78cae26 commit 86fe831

File tree

5 files changed

+19
-11
lines changed

5 files changed

+19
-11
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ select = [
205205
"E", # pycodestyle
206206
"F", # pyflakes
207207
"FA",
208+
"FAST",
208209
"FURB", # refurb
209210
"G", # logging-format
210211
"I", # isort

src/ert/dark_storage/endpoints/compute/misfits.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import json
22
from datetime import datetime
3-
from typing import Any
3+
from typing import Annotated, Any
44
from uuid import UUID
55

66
import pandas as pd
@@ -36,7 +36,9 @@ async def get_response_misfits(
3636
response_name: str,
3737
realization_index: int | None = None,
3838
summary_misfits: bool = False,
39-
filter_on: str | None = Query(None, description="JSON string with filters"),
39+
filter_on: Annotated[
40+
str | None, Query(description="JSON string with filters")
41+
] = None,
4042
) -> Response:
4143
ensemble = storage.get_ensemble(ensemble_id)
4244
dataframe = data_for_response(

src/ert/dark_storage/endpoints/experiment_server.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import uuid
1010
from base64 import b64decode
1111
from queue import SimpleQueue
12+
from typing import Annotated
1213

1314
from fastapi import (
1415
APIRouter,
@@ -153,7 +154,7 @@ def _log(request: Request) -> None:
153154

154155
@router.get("/")
155156
def get_status(
156-
request: Request, credentials: HTTPBasicCredentials = Depends(security)
157+
request: Request, credentials: Annotated[HTTPBasicCredentials, Depends(security)]
157158
) -> PlainTextResponse:
158159
_log(request)
159160
_check_user(credentials)
@@ -162,7 +163,7 @@ def get_status(
162163

163164
@router.get("/status")
164165
def experiment_status(
165-
request: Request, credentials: HTTPBasicCredentials = Depends(security)
166+
request: Request, credentials: Annotated[HTTPBasicCredentials, Depends(security)]
166167
) -> ExperimentStatus:
167168
_log(request)
168169
_check_user(credentials)
@@ -171,7 +172,7 @@ def experiment_status(
171172

172173
@router.post("/" + EverEndpoints.stop)
173174
def stop(
174-
request: Request, credentials: HTTPBasicCredentials = Depends(security)
175+
request: Request, credentials: Annotated[HTTPBasicCredentials, Depends(security)]
175176
) -> Response:
176177
_log(request)
177178
_check_user(credentials)
@@ -185,7 +186,7 @@ def stop(
185186
async def start_experiment(
186187
request: Request,
187188
background_tasks: BackgroundTasks,
188-
credentials: HTTPBasicCredentials = Depends(security),
189+
credentials: Annotated[HTTPBasicCredentials, Depends(security)],
189190
) -> Response:
190191
_log(request)
191192
_check_user(credentials)
@@ -218,7 +219,7 @@ async def start_experiment(
218219

219220
@router.get("/" + EverEndpoints.config_path)
220221
async def config_path(
221-
request: Request, credentials: HTTPBasicCredentials = Depends(security)
222+
request: Request, credentials: Annotated[HTTPBasicCredentials, Depends(security)]
222223
) -> JSONResponse:
223224
_log(request)
224225
_check_user(credentials)
@@ -237,7 +238,7 @@ async def config_path(
237238

238239
@router.get("/" + EverEndpoints.start_time)
239240
async def start_time(
240-
request: Request, credentials: HTTPBasicCredentials = Depends(security)
241+
request: Request, credentials: Annotated[HTTPBasicCredentials, Depends(security)]
241242
) -> Response:
242243
_log(request)
243244
_check_user(credentials)

src/ert/dark_storage/endpoints/observations.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import json
22
import logging
33
import operator
4-
from typing import Any
4+
from typing import Annotated, Any
55
from urllib.parse import unquote
66
from uuid import UUID, uuid4
77

@@ -57,7 +57,9 @@ async def get_observations_for_response(
5757
storage: Storage = DEFAULT_STORAGE,
5858
ensemble_id: UUID,
5959
response_key: str,
60-
filter_on: str | None = Query(None, description="JSON string with filters"),
60+
filter_on: Annotated[
61+
str | None, Query(description="JSON string with filters")
62+
] = None,
6163
) -> list[js.ObservationOut]:
6264
response_key = unquote(response_key)
6365
try:

src/ert/dark_storage/endpoints/responses.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ async def get_response(
4545
storage: Storage = DEFAULT_STORAGE,
4646
ensemble_id: UUID,
4747
response_key: str,
48-
filter_on: str | None = Query(None, description="JSON string with filters"),
48+
filter_on: Annotated[
49+
str | None, Query(description="JSON string with filters")
50+
] = None,
4951
accept: Annotated[str | None, Header()] = None,
5052
) -> Response:
5153
try:

0 commit comments

Comments
 (0)