Skip to content

Commit 188f97c

Browse files
author
Andrei Neagu
committed
removed LegacyUrl
1 parent 777b469 commit 188f97c

File tree

4 files changed

+32
-27
lines changed

4 files changed

+32
-27
lines changed

packages/service-library/src/servicelib/aiohttp/long_running_tasks/_server.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66

77
from aiohttp import web
88
from common_library.json_serialization import json_dumps
9-
from common_library.pydantic_networks_extension import AnyHttpUrlLegacy
10-
from pydantic import PositiveFloat, TypeAdapter
9+
from pydantic import AnyHttpUrl, PositiveFloat, TypeAdapter
1110

1211
from ...aiohttp import status
1312
from ...long_running_tasks._models import TaskGet
@@ -68,13 +67,13 @@ async def start_long_running_task(
6867
ip_addr, port = request_.transport.get_extra_info(
6968
"sockname"
7069
) # https://docs.python.org/3/library/asyncio-protocol.html#asyncio.BaseTransport.get_extra_info
71-
status_url = TypeAdapter(AnyHttpUrlLegacy).validate_python(
70+
status_url = TypeAdapter(AnyHttpUrl).validate_python(
7271
f"http://{ip_addr}:{port}{request_.app.router['get_task_status'].url_for(task_id=task_id)}" # NOSONAR
7372
)
74-
result_url = TypeAdapter(AnyHttpUrlLegacy).validate_python(
73+
result_url = TypeAdapter(AnyHttpUrl).validate_python(
7574
f"http://{ip_addr}:{port}{request_.app.router['get_task_result'].url_for(task_id=task_id)}" # NOSONAR
7675
)
77-
abort_url = TypeAdapter(AnyHttpUrlLegacy).validate_python(
76+
abort_url = TypeAdapter(AnyHttpUrl).validate_python(
7877
f"http://{ip_addr}:{port}{request_.app.router['cancel_and_delete_task'].url_for(task_id=task_id)}" # NOSONAR
7978
)
8079
task_get = TaskGet(

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

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

7-
from common_library.pydantic_networks_extension import AnyHttpUrlLegacy
87
from fastapi import FastAPI, status
98
from httpx import AsyncClient, HTTPError
10-
from pydantic import PositiveFloat, TypeAdapter
9+
from pydantic import AnyHttpUrl, PositiveFloat, TypeAdapter
1110
from tenacity import RetryCallState
1211
from tenacity.asyncio import AsyncRetrying
1312
from tenacity.retry import retry_if_exception_type
@@ -106,6 +105,9 @@ async def request_wrapper(zelf: "Client", *args, **kwargs) -> Any:
106105
with attempt:
107106
return await request_func(zelf, *args, **kwargs)
108107

108+
msg = "Unexpected"
109+
raise RuntimeError(msg)
110+
109111
return request_wrapper
110112

111113

@@ -131,16 +133,17 @@ def _client_configuration(self) -> ClientConfiguration:
131133
return output
132134

133135
def _get_url(self, path: str) -> str:
134-
url = f"{self._base_url}{self._client_configuration.router_prefix}{path}"
135-
return f"{TypeAdapter(AnyHttpUrlLegacy).validate_python(url)}"
136+
url_path = f"{self._client_configuration.router_prefix}{path}".lstrip("/")
137+
url = TypeAdapter(AnyHttpUrl).validate_python(f"{self._base_url}{url_path}")
138+
return f"{url}"
136139

137140
@retry_on_http_errors
138141
async def get_task_status(
139-
self, task_id: TaskId, *, timeout: PositiveFloat | None = None
142+
self, task_id: TaskId, *, timeout: PositiveFloat | None = None # noqa: ASYNC109
140143
) -> TaskStatus:
141144
timeout = timeout or self._client_configuration.default_timeout
142145
result = await self._async_client.get(
143-
self._get_url(f"task/{task_id}"),
146+
self._get_url(f"/task/{task_id}"),
144147
timeout=timeout,
145148
)
146149
if result.status_code != status.HTTP_200_OK:
@@ -155,11 +158,11 @@ async def get_task_status(
155158

156159
@retry_on_http_errors
157160
async def get_task_result(
158-
self, task_id: TaskId, *, timeout: PositiveFloat | None = None
161+
self, task_id: TaskId, *, timeout: PositiveFloat | None = None # noqa: ASYNC109
159162
) -> Any | None:
160163
timeout = timeout or self._client_configuration.default_timeout
161164
result = await self._async_client.get(
162-
self._get_url(f"task/{task_id}/result"),
165+
self._get_url(f"/task/{task_id}/result"),
163166
timeout=timeout,
164167
)
165168
if result.status_code != status.HTTP_200_OK:
@@ -177,11 +180,11 @@ async def get_task_result(
177180

178181
@retry_on_http_errors
179182
async def cancel_and_delete_task(
180-
self, task_id: TaskId, *, timeout: PositiveFloat | None = None
183+
self, task_id: TaskId, *, timeout: PositiveFloat | None = None # noqa: ASYNC109
181184
) -> None:
182185
timeout = timeout or self._client_configuration.default_timeout
183186
result = await self._async_client.delete(
184-
self._get_url(f"task/{task_id}"),
187+
self._get_url(f"/task/{task_id}"),
185188
timeout=timeout,
186189
)
187190

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

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

7-
from common_library.pydantic_networks_extension import AnyHttpUrlLegacy
87
import pytest
98
from asgi_lifespan import LifespanManager
109
from fastapi import APIRouter, Depends, FastAPI, status
1110
from httpx import AsyncClient
12-
from pydantic import PositiveFloat, TypeAdapter
11+
from pydantic import AnyHttpUrl, PositiveFloat, TypeAdapter
1312
from servicelib.fastapi.long_running_tasks._context_manager import _ProgressManager
1413
from servicelib.fastapi.long_running_tasks.client import (
1514
Client,
@@ -50,7 +49,8 @@ async def a_test_task(task_progress: TaskProgress) -> int:
5049

5150
async def a_failing_test_task(task_progress: TaskProgress) -> None:
5251
await asyncio.sleep(TASK_SLEEP_INTERVAL)
53-
raise RuntimeError("I am failing as requested")
52+
msg = "I am failing as requested"
53+
raise RuntimeError(msg)
5454

5555

5656
@pytest.fixture
@@ -101,7 +101,7 @@ async def test_task_result(
101101
assert result.status_code == status.HTTP_200_OK, result.text
102102
task_id = result.json()
103103

104-
url = TypeAdapter(AnyHttpUrlLegacy).validate_python("http://backgroud.testserver.io")
104+
url = TypeAdapter(AnyHttpUrl).validate_python("http://backgroud.testserver.io/")
105105
client = Client(app=bg_task_app, async_client=async_client, base_url=url)
106106
async with periodic_task_result(
107107
client,
@@ -121,7 +121,7 @@ async def test_task_result_times_out(
121121
assert result.status_code == status.HTTP_200_OK, result.text
122122
task_id = result.json()
123123

124-
url = TypeAdapter(AnyHttpUrlLegacy).validate_python("http://backgroud.testserver.io")
124+
url = TypeAdapter(AnyHttpUrl).validate_python("http://backgroud.testserver.io/")
125125
client = Client(app=bg_task_app, async_client=async_client, base_url=url)
126126
timeout = TASK_SLEEP_INTERVAL / 10
127127
with pytest.raises(TaskClientTimeoutError) as exec_info:
@@ -147,7 +147,7 @@ async def test_task_result_task_result_is_an_error(
147147
assert result.status_code == status.HTTP_200_OK, result.text
148148
task_id = result.json()
149149

150-
url = TypeAdapter(AnyHttpUrlLegacy).validate_python("http://backgroud.testserver.io")
150+
url = TypeAdapter(AnyHttpUrl).validate_python("http://backgroud.testserver.io/")
151151
client = Client(app=bg_task_app, async_client=async_client, base_url=url)
152152
with pytest.raises(TaskClientResultError) as exec_info:
153153
async with periodic_task_result(
@@ -158,7 +158,7 @@ async def test_task_result_task_result_is_an_error(
158158
):
159159
pass
160160
assert f"{exec_info.value}".startswith(f"Task {task_id} finished with exception:")
161-
assert 'raise RuntimeError("I am failing as requested")' in f"{exec_info.value}"
161+
assert "I am failing as requested" in f"{exec_info.value}"
162162
await _assert_task_removed(async_client, task_id, router_prefix)
163163

164164

@@ -186,13 +186,17 @@ async def progress_update(
186186
assert received == ("", None)
187187

188188
for _ in range(repeat):
189-
await progress_updater.update(mock_task_id, percent=TypeAdapter(ProgressPercent).validate_python(0.0))
189+
await progress_updater.update(
190+
mock_task_id, percent=TypeAdapter(ProgressPercent).validate_python(0.0)
191+
)
190192
assert counter == 2
191193
assert received == ("", 0.0)
192194

193195
for _ in range(repeat):
194196
await progress_updater.update(
195-
mock_task_id, percent=TypeAdapter(ProgressPercent).validate_python(1.0), message="done"
197+
mock_task_id,
198+
percent=TypeAdapter(ProgressPercent).validate_python(1.0),
199+
message="done",
196200
)
197201
assert counter == 3
198202
assert received == ("done", 1.0)

packages/service-library/tests/fastapi/test_http_client_thin.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import arrow
88
import pytest
9-
from common_library.pydantic_networks_extension import AnyHttpUrlLegacy
109
from httpx import (
1110
HTTPError,
1211
PoolTimeout,
@@ -16,7 +15,7 @@
1615
TransportError,
1716
codes,
1817
)
19-
from pydantic import TypeAdapter
18+
from pydantic import AnyHttpUrl, TypeAdapter
2019
from respx import MockRouter
2120
from servicelib.fastapi.http_client_thin import (
2221
BaseThinClient,
@@ -78,7 +77,7 @@ async def thick_client(request_timeout: int) -> AsyncIterable[FakeThickClient]:
7877

7978
@pytest.fixture
8079
def test_url() -> str:
81-
url = TypeAdapter(AnyHttpUrlLegacy).validate_python("http://missing-host:1111")
80+
url = TypeAdapter(AnyHttpUrl).validate_python("http://missing-host:1111")
8281
return f"{url}"
8382

8483

0 commit comments

Comments
 (0)