From 52c9363b538d435d841c24b70ccc02002037b034 Mon Sep 17 00:00:00 2001 From: Paul Sanders Date: Mon, 21 Nov 2022 20:57:19 -0500 Subject: [PATCH] Add option to use Client in task functions --- meilisearch_python_async/task.py | 16 +++++++---- tests/test_task.py | 48 ++++++++++++++++---------------- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/meilisearch_python_async/task.py b/meilisearch_python_async/task.py index 411bc09f..77906656 100644 --- a/meilisearch_python_async/task.py +++ b/meilisearch_python_async/task.py @@ -16,7 +16,7 @@ async def cancel_tasks( - http_client: AsyncClient, + client: AsyncClient | Client, *, uids: list[str] | None = None, index_uids: list[str] | None = None, @@ -33,6 +33,7 @@ async def cancel_tasks( Args: + client: An httpx AsyncClient or meilisearch_python_async Client instance. uids: A list of task UIDs to cancel. index_uids: A list of index UIDs for which to cancel tasks. statuses: A list of statuses to cancel. @@ -58,7 +59,7 @@ async def cancel_tasks( >>> from meilisearch_python_async.task import cancel_tasks >>> >>> async with Client("http://localhost.com", "masterKey") as client: - >>> await cancel_tasks(client.http_client, uids=[1, 2]) + >>> await cancel_tasks(client, uids=[1, 2]) """ parameters = {} if uids: @@ -83,13 +84,14 @@ async def cancel_tasks( parameters["statuses"] = "enqueued,processing" url = f"tasks/cancel?{urlencode(parameters)}" - response = await http_client.post(url) + client_ = _get_client(client) + response = await client_.post(url) return TaskInfo(**response.json()) async def delete_tasks( - http_client: AsyncClient, + client: AsyncClient | Client, *, uids: list[str] | None = None, index_uids: list[str] | None = None, @@ -106,6 +108,7 @@ async def delete_tasks( Args: + client: An httpx AsyncClient or meilisearch_python_async Client instance. uids: A list of task UIDs to cancel. index_uids: A list of index UIDs for which to cancel tasks. statuses: A list of statuses to cancel. @@ -131,7 +134,7 @@ async def delete_tasks( >>> from meilisearch_python_async.task import delete_tasks >>> >>> async with Client("http://localhost.com", "masterKey") as client: - >>> await delete_tasks(client.http_client, uids=[1, 2]) + >>> await delete_tasks(client, uids=[1, 2]) """ parameters = {} if uids: @@ -156,7 +159,8 @@ async def delete_tasks( parameters["statuses"] = "canceled,enqueued,failed,processing,succeeded" url = f"tasks?{urlencode(parameters)}" - response = await http_client.delete(url) + client_ = _get_client(client) + response = await client_.delete(url) return TaskInfo(**response.json()) diff --git a/tests/test_task.py b/tests/test_task.py index 26506929..97b523eb 100644 --- a/tests/test_task.py +++ b/tests/test_task.py @@ -22,10 +22,10 @@ async def create_tasks(empty_index, small_movies): @pytest.mark.usefixtures("create_tasks") async def test_cancel_statuses(test_client): - task = await cancel_tasks(test_client.http_client, statuses=["enqueued", "processing"]) - await wait_for_task(test_client.http_client, task.task_uid) - completed_task = await get_task(test_client.http_client, task.task_uid) - tasks = await get_tasks(test_client.http_client, types="taskCancelation") + task = await cancel_tasks(test_client, statuses=["enqueued", "processing"]) + await wait_for_task(test_client, task.task_uid) + completed_task = await get_task(test_client, task.task_uid) + tasks = await get_tasks(test_client, types="taskCancelation") assert completed_task.index_uids is None assert completed_task.status == "succeeded" @@ -36,10 +36,10 @@ async def test_cancel_statuses(test_client): @pytest.mark.usefixtures("create_tasks") async def test_cancel_tasks(test_client): - task = await cancel_tasks(test_client.http_client, uids=["1", "2"]) - await wait_for_task(test_client.http_client, task.task_uid) - completed_task = await get_task(test_client.http_client, task.task_uid) - tasks = await get_tasks(test_client.http_client, types="taskCancelation") + task = await cancel_tasks(test_client, uids=["1", "2"]) + await wait_for_task(test_client, task.task_uid) + completed_task = await get_task(test_client, task.task_uid) + tasks = await get_tasks(test_client, types="taskCancelation") assert completed_task.status == "succeeded" assert completed_task.task_type == "taskCancelation" @@ -49,10 +49,10 @@ async def test_cancel_tasks(test_client): @pytest.mark.usefixtures("create_tasks") async def test_cancel_task_no_params(test_client): - task = await cancel_tasks(test_client.http_client) - await wait_for_task(test_client.http_client, task.task_uid) - completed_task = await get_task(test_client.http_client, task.task_uid) - tasks = await get_tasks(test_client.http_client, types="taskCancelation") + task = await cancel_tasks(test_client) + await wait_for_task(test_client, task.task_uid) + completed_task = await get_task(test_client, task.task_uid) + tasks = await get_tasks(test_client, types="taskCancelation") assert completed_task.status == "succeeded" assert completed_task.task_type == "taskCancelation" @@ -62,10 +62,10 @@ async def test_cancel_task_no_params(test_client): @pytest.mark.usefixtures("create_tasks") async def test_delete_statuses(test_client): - task = await delete_tasks(test_client.http_client, statuses=["enqueued", "processing"]) - await wait_for_task(test_client.http_client, task.task_uid) - deleted_tasks = await get_task(test_client.http_client, task.task_uid) - tasks = await get_tasks(test_client.http_client, types="taskDeletion") + task = await delete_tasks(test_client, statuses=["enqueued", "processing"]) + await wait_for_task(test_client, task.task_uid) + deleted_tasks = await get_task(test_client, task.task_uid) + tasks = await get_tasks(test_client, types="taskDeletion") assert deleted_tasks.status == "succeeded" assert deleted_tasks.task_type == "taskDeletion" @@ -75,10 +75,10 @@ async def test_delete_statuses(test_client): @pytest.mark.usefixtures("create_tasks") async def test_delete_tasks(test_client): - task = await delete_tasks(test_client.http_client, uids=["1", "2"]) - await wait_for_task(test_client.http_client, task.task_uid) - completed_task = await get_task(test_client.http_client, task.task_uid) - tasks = await get_tasks(test_client.http_client, types="taskDeletion") + task = await delete_tasks(test_client, uids=["1", "2"]) + await wait_for_task(test_client, task.task_uid) + completed_task = await get_task(test_client, task.task_uid) + tasks = await get_tasks(test_client, types="taskDeletion") assert completed_task.status == "succeeded" assert completed_task.task_type == "taskDeletion" @@ -88,10 +88,10 @@ async def test_delete_tasks(test_client): @pytest.mark.usefixtures("create_tasks") async def test_delete_no_params(test_client): - task = await delete_tasks(test_client.http_client) - await wait_for_task(test_client.http_client, task.task_uid) - deleted_tasks = await get_task(test_client.http_client, task.task_uid) - tasks = await get_tasks(test_client.http_client, types="taskDeletion") + task = await delete_tasks(test_client) + await wait_for_task(test_client, task.task_uid) + deleted_tasks = await get_task(test_client, task.task_uid) + tasks = await get_tasks(test_client, types="taskDeletion") assert deleted_tasks.status == "succeeded" assert deleted_tasks.task_type == "taskDeletion"