Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions curl_cffi/requests/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from concurrent.futures import Future
from typing import Any, Optional, Union
from collections.abc import Awaitable, Callable
from datetime import timedelta

from ..curl import Curl
from ..utils import CurlCffiWarning
Expand Down Expand Up @@ -54,7 +55,7 @@ class Response:
ok: is status_code in [200, 400)?
headers: response headers.
cookies: response cookies.
elapsed: how many seconds the request cost.
elapsed: timedelta of the request duration.
encoding: http body encoding.
charset: alias for encoding.
primary_ip: primary ip of the server.
Expand Down Expand Up @@ -86,7 +87,7 @@ def __init__(self, curl: Optional[Curl] = None, request: Optional[Request] = Non
self.ok = True
self.headers = Headers()
self.cookies = Cookies()
self.elapsed = 0.0
self.elapsed: timedelta = timedelta()
self.default_encoding: Union[str, Callable[[bytes], str]] = "utf-8"
self.redirect_count = 0
self.redirect_url = ""
Expand Down
3 changes: 2 additions & 1 deletion curl_cffi/requests/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
cast,
)
from urllib.parse import urlparse
from datetime import timedelta

from ..aio import AsyncCurl
from ..const import CurlHttpVersion, CurlInfo, CurlOpt
Expand Down Expand Up @@ -304,7 +305,7 @@ def _parse_response(
rsp.local_ip = cast(bytes, c.getinfo(CurlInfo.LOCAL_IP)).decode()
rsp.local_port = cast(int, c.getinfo(CurlInfo.LOCAL_PORT))
rsp.default_encoding = default_encoding
rsp.elapsed = cast(float, c.getinfo(CurlInfo.TOTAL_TIME))
rsp.elapsed = timedelta(seconds=cast(float, c.getinfo(CurlInfo.TOTAL_TIME)))
rsp.redirect_count = cast(int, c.getinfo(CurlInfo.REDIRECT_COUNT))
redirect_url_bytes = cast(bytes, c.getinfo(CurlInfo.REDIRECT_URL))
try:
Expand Down
2 changes: 1 addition & 1 deletion tests/unittest/test_async_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ async def test_response_cookies(server):
async def test_elapsed(server):
async with AsyncSession() as s:
r = await s.get(str(server.url.copy_with(path="/slow_response")))
assert r.elapsed > 0.1
assert r.elapsed.total_seconds() > 0.1


async def test_reason(server):
Expand Down
2 changes: 1 addition & 1 deletion tests/unittest/test_requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -496,7 +496,7 @@ def test_response_cookies(server):

def test_elapsed(server):
r = requests.get(str(server.url.copy_with(path="/slow_response")))
assert r.elapsed > 0.1
assert r.elapsed.total_seconds() > 0.1


def test_reason(server):
Expand Down
Loading