Skip to content

Commit 4b93c00

Browse files
use anyhttpurl legacy
1 parent 97854a0 commit 4b93c00

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

packages/service-library/src/servicelib/fastapi/long_running_tasks/_client.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
import warnings
55
from typing import Any, Awaitable, Callable, Final
66

7+
from common_library.pydantic_networks_extension import AnyHttpUrlLegacy
78
from fastapi import FastAPI, status
89
from httpx import AsyncClient, HTTPError
9-
from pydantic import AnyHttpUrl, PositiveFloat, TypeAdapter
10+
from pydantic import PositiveFloat, TypeAdapter
1011
from tenacity import RetryCallState
1112
from tenacity.asyncio import AsyncRetrying
1213
from tenacity.retry import retry_if_exception_type
@@ -23,7 +24,7 @@
2324

2425
DEFAULT_HTTP_REQUESTS_TIMEOUT: Final[PositiveFloat] = 15
2526

26-
_ANY_HTTP_URL_ADAPTER: TypeAdapter[AnyHttpUrl] = TypeAdapter(AnyHttpUrl)
27+
_ANY_HTTP_URL_LEGACY_ADAPTER: TypeAdapter[AnyHttpUrlLegacy] = TypeAdapter(AnyHttpUrlLegacy)
2728

2829
logger = logging.getLogger(__name__)
2930

@@ -115,7 +116,7 @@ class Client:
115116
status, result and/or cancel of a long running task.
116117
"""
117118

118-
def __init__(self, app: FastAPI, async_client: AsyncClient, base_url: AnyHttpUrl):
119+
def __init__(self, app: FastAPI, async_client: AsyncClient, base_url: str):
119120
"""
120121
`app`: used byt the `Client` to recover the `ClientConfiguration`
121122
`async_client`: an AsyncClient instance used by `Client`
@@ -130,8 +131,8 @@ def _client_configuration(self) -> ClientConfiguration:
130131
output: ClientConfiguration = self.app.state.long_running_client_configuration
131132
return output
132133

133-
def _get_url(self, path: str) -> AnyHttpUrl:
134-
return _ANY_HTTP_URL_ADAPTER.validate_python(
134+
def _get_url(self, path: str) -> str:
135+
return _ANY_HTTP_URL_LEGACY_ADAPTER.validate_python(
135136
f"{self._base_url}{self._client_configuration.router_prefix}{path}",
136137
)
137138

@@ -141,7 +142,7 @@ async def get_task_status(
141142
) -> TaskStatus:
142143
timeout = timeout or self._client_configuration.default_timeout
143144
result = await self._async_client.get(
144-
str(self._get_url(f"/task/{task_id}")),
145+
self._get_url(f"/task/{task_id}"),
145146
timeout=timeout,
146147
)
147148
if result.status_code != status.HTTP_200_OK:
@@ -160,7 +161,7 @@ async def get_task_result(
160161
) -> Any | None:
161162
timeout = timeout or self._client_configuration.default_timeout
162163
result = await self._async_client.get(
163-
str(self._get_url(f"/task/{task_id}/result")),
164+
self._get_url(f"/task/{task_id}/result"),
164165
timeout=timeout,
165166
)
166167
if result.status_code != status.HTTP_200_OK:
@@ -182,7 +183,7 @@ async def cancel_and_delete_task(
182183
) -> None:
183184
timeout = timeout or self._client_configuration.default_timeout
184185
result = await self._async_client.delete(
185-
str(self._get_url(f"/task/{task_id}")),
186+
self._get_url(f"/task/{task_id}"),
186187
timeout=timeout,
187188
)
188189

packages/service-library/tests/fastapi/long_running_tasks/test_long_running_tasks_context_manager.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
import asyncio
55
from typing import AsyncIterable, Final
66

7+
from common_library.pydantic_networks_extension import AnyHttpUrlLegacy
78
import pytest
89
from asgi_lifespan import LifespanManager
910
from fastapi import APIRouter, Depends, FastAPI, status
1011
from httpx import AsyncClient
11-
from pydantic import AnyHttpUrl, PositiveFloat, TypeAdapter
12+
from pydantic import PositiveFloat, TypeAdapter
1213
from servicelib.fastapi.long_running_tasks._context_manager import _ProgressManager
1314
from servicelib.fastapi.long_running_tasks.client import (
1415
Client,
@@ -100,7 +101,7 @@ async def test_task_result(
100101
assert result.status_code == status.HTTP_200_OK, result.text
101102
task_id = result.json()
102103

103-
url = TypeAdapter(AnyHttpUrl).validate_python("http://backgroud.testserver.io")
104+
url = TypeAdapter(AnyHttpUrlLegacy).validate_python("http://backgroud.testserver.io")
104105
client = Client(app=bg_task_app, async_client=async_client, base_url=url)
105106
async with periodic_task_result(
106107
client,
@@ -120,7 +121,7 @@ async def test_task_result_times_out(
120121
assert result.status_code == status.HTTP_200_OK, result.text
121122
task_id = result.json()
122123

123-
url = TypeAdapter(AnyHttpUrl).validate_python("http://backgroud.testserver.io")
124+
url = TypeAdapter(AnyHttpUrlLegacy).validate_python("http://backgroud.testserver.io")
124125
client = Client(app=bg_task_app, async_client=async_client, base_url=url)
125126
timeout = TASK_SLEEP_INTERVAL / 10
126127
with pytest.raises(TaskClientTimeoutError) as exec_info:
@@ -146,7 +147,7 @@ async def test_task_result_task_result_is_an_error(
146147
assert result.status_code == status.HTTP_200_OK, result.text
147148
task_id = result.json()
148149

149-
url = TypeAdapter(AnyHttpUrl).validate_python("http://backgroud.testserver.io")
150+
url = TypeAdapter(AnyHttpUrlLegacy).validate_python("http://backgroud.testserver.io")
150151
client = Client(app=bg_task_app, async_client=async_client, base_url=url)
151152
with pytest.raises(TaskClientResultError) as exec_info:
152153
async with periodic_task_result(
@@ -185,13 +186,13 @@ async def progress_update(
185186
assert received == ("", None)
186187

187188
for _ in range(repeat):
188-
await progress_updater.update(mock_task_id, percent=ProgressPercent(0.0))
189+
await progress_updater.update(mock_task_id, percent=TypeAdapter(ProgressPercent).validate_python(0.0))
189190
assert counter == 2
190191
assert received == ("", 0.0)
191192

192193
for _ in range(repeat):
193194
await progress_updater.update(
194-
mock_task_id, percent=ProgressPercent(1.0), message="done"
195+
mock_task_id, percent=TypeAdapter(ProgressPercent).validate_python(1.0), message="done"
195196
)
196197
assert counter == 3
197198
assert received == ("done", 1.0)

0 commit comments

Comments
 (0)