diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 368571c..4dc2cfd 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -23,7 +23,7 @@ repos: # - id: no-commit-to-branch - repo: https://github.com/pre-commit/mirrors-mypy - rev: 'v2.1.0' + rev: 'v2.3.0' hooks: - id: mypy additional_dependencies: @@ -32,7 +32,7 @@ repos: - sqlalchemy - repo: https://github.com/astral-sh/ruff-pre-commit - rev: 'v0.15.20' + rev: 'v0.16.2' hooks: - id: ruff args: [--fix] diff --git a/src/routers/datasets.py b/src/routers/datasets.py index b23babd..177be32 100644 --- a/src/routers/datasets.py +++ b/src/routers/datasets.py @@ -185,6 +185,7 @@ def _quality_clause(quality: str, range_: str | None) -> str: @router.post(path="/list", description="Provided for convenience, same as `GET` endpoint.") @router.get(path="/list") async def list_datasets( # noqa: PLR0913, C901 + *, expdb_db: Annotated[AsyncSession, Depends(expdb_session)], pagination: Annotated[Pagination, Body(default_factory=Pagination)], data_name: Annotated[CasualString128 | None, Body()] = None, diff --git a/src/routers/tasks.py b/src/routers/tasks.py index 7e08e55..a57e3de 100644 --- a/src/routers/tasks.py +++ b/src/routers/tasks.py @@ -258,6 +258,7 @@ def _quality_clause(quality: str, range_: str | None) -> str: @router.post(path="/list", description="Provided for convenience, same as `GET` endpoint.") @router.get(path="/list") async def list_tasks( # noqa: PLR0913, PLR0912, C901, PLR0915 + *, expdb: Annotated[AsyncSession, Depends(expdb_session)], pagination: Annotated[Pagination, Body(default_factory=Pagination)], task_type_id: Annotated[Identifier | None, Body(description="Filter by task type id.")] = None, diff --git a/src/routers/tasktype.py b/src/routers/tasktype.py index a1a4c5a..4e86369 100644 --- a/src/routers/tasktype.py +++ b/src/routers/tasktype.py @@ -22,9 +22,9 @@ router = APIRouter(prefix="/tasktype", tags=["tasks"]) -def _normalize_task_type(task_type: Row[Any]) -> dict[str, str | None | list[Any]]: +def _normalize_task_type(task_type: Row[Any]) -> dict[str, str | list[Any] | None]: # Task types may contain multi-line fields which have either \r\n or \n line endings - ttype: dict[str, str | None | list[Any]] = { + ttype: dict[str, str | list[Any] | None] = { k: str(v).replace("\r\n", "\n").strip() if v is not None else v for k, v in task_type._mapping.items() # noqa: SLF001 if k != "id" @@ -40,10 +40,10 @@ async def list_task_types( expdb: Annotated[AsyncSession, Depends(expdb_session)], ) -> dict[ Literal["task_types"], - dict[Literal["task_type"], list[dict[str, str | None | list[Any]]]], + dict[Literal["task_type"], list[dict[str, str | list[Any] | None]]], ]: """Return a high level description of all task types.""" - task_types: list[dict[str, str | None | list[Any]]] = [ + task_types: list[dict[str, str | list[Any] | None]] = [ _normalize_task_type(ttype) for ttype in await get_task_types(expdb) ] return {"task_types": {"task_type": task_types}} @@ -53,7 +53,7 @@ async def list_task_types( async def get_task_type( task_type_id: Identifier, expdb: Annotated[AsyncSession, Depends(expdb_session)], -) -> dict[Literal["task_type"], dict[str, str | None | list[str] | list[dict[str, str]]]]: +) -> dict[Literal["task_type"], dict[str, str | list[str] | list[dict[str, str]] | None]]: """Return a detailed description for the given task type, including expected inputs.""" task_type_record = await db_get_task_type(task_type_id, expdb) if task_type_record is None: diff --git a/tests/routers/dataset_tag_test.py b/tests/routers/dataset_tag_test.py index 851e395..a1f1224 100644 --- a/tests/routers/dataset_tag_test.py +++ b/tests/routers/dataset_tag_test.py @@ -124,4 +124,11 @@ async def test_dataset_tag_response_is_identical( py_api: httpx.AsyncClient, php_api: httpx.AsyncClient, ) -> None: - await assert_tag_response_is_identical(dataset_id, tag, api_key, "dataset", py_api, php_api) + await assert_tag_response_is_identical( + identifier=dataset_id, + tag=tag, + api_key=api_key, + entity="dataset", + py_api=py_api, + php_api=php_api, + ) diff --git a/tests/routers/setups_tag_test.py b/tests/routers/setups_tag_test.py index e31077f..4258bd4 100644 --- a/tests/routers/setups_tag_test.py +++ b/tests/routers/setups_tag_test.py @@ -96,7 +96,7 @@ async def test_setup_tag_direct_success(expdb_session: AsyncSession) -> None: [[], ["some_other_tag"], ["foo_some_other_tag", "bar_some_other_tag"]], ids=["none", "one tag", "two tags"], ) -async def test_setup_tag_response_is_identical_when_tag_doesnt_exist( # noqa: PLR0913 +async def test_setup_tag_response_is_identical_when_tag_doesnt_exist( # noqa: PLR0913, PLR0917 api_key: str, other_tags: list[str], py_api: httpx.AsyncClient, diff --git a/tests/routers/tag_test_helper.py b/tests/routers/tag_test_helper.py index 95d4ca6..e054583 100644 --- a/tests/routers/tag_test_helper.py +++ b/tests/routers/tag_test_helper.py @@ -12,6 +12,7 @@ async def assert_tag_response_is_identical( # noqa: PLR0913 + *, identifier: Identifier, tag: str, api_key: str, diff --git a/tests/routers/task_tag_test.py b/tests/routers/task_tag_test.py index 13413e7..d6cc012 100644 --- a/tests/routers/task_tag_test.py +++ b/tests/routers/task_tag_test.py @@ -116,4 +116,6 @@ async def test_task_tag_response_is_identical( py_api: httpx.AsyncClient, php_api: httpx.AsyncClient, ) -> None: - await assert_tag_response_is_identical(task_id, tag, api_key, "task", py_api, php_api) + await assert_tag_response_is_identical( + identifier=task_id, tag=tag, api_key=api_key, entity="task", py_api=py_api, php_api=php_api + )