diff --git a/requirements-http.txt b/requirements-http.txt --- a/requirements-http.txt +++ b/requirements-http.txt @@ -1,7 +1,6 @@ # requirements for swh.core.api aiohttp aiohttp_utils >= 3.1.1 -arrow decorator Flask iso8601 diff --git a/swh/core/api/serializers.py b/swh/core/api/serializers.py --- a/swh/core/api/serializers.py +++ b/swh/core/api/serializers.py @@ -12,7 +12,6 @@ from typing import Any, Callable, Dict, List, Optional, Tuple, Type, Union from uuid import UUID -import arrow import iso8601 import msgpack from requests import Response @@ -57,27 +56,25 @@ return getattr(temp, exc_dict["type"])(*exc_dict["args"]) -ENCODERS = [ - (arrow.Arrow, "arrow", arrow.Arrow.isoformat), +def encode_timedelta(td: datetime.timedelta) -> Dict[str, int]: + return { + "days": td.days, + "seconds": td.seconds, + "microseconds": td.microseconds, + } + + +ENCODERS: List[Tuple[type, str, Callable]] = [ (datetime.datetime, "datetime", encode_datetime), - ( - datetime.timedelta, - "timedelta", - lambda o: { - "days": o.days, - "seconds": o.seconds, - "microseconds": o.microseconds, - }, - ), (UUID, "uuid", str), + (datetime.timedelta, "timedelta", encode_timedelta), (PagedResult, "paged_result", _encode_paged_result), # Only for JSON: (bytes, "bytes", lambda o: base64.b85encode(o).decode("ascii")), (Exception, "exception", exception_to_dict), ] -DECODERS = { - "arrow": arrow.get, +DECODERS: Dict[str, Callable] = { "datetime": lambda d: iso8601.parse_date(d, default_timezone=None), "timedelta": lambda d: datetime.timedelta(**d), "uuid": UUID, diff --git a/swh/core/api/tests/test_serializers.py b/swh/core/api/tests/test_serializers.py --- a/swh/core/api/tests/test_serializers.py +++ b/swh/core/api/tests/test_serializers.py @@ -8,8 +8,6 @@ from typing import Any, Callable, List, Tuple, Union from uuid import UUID -import arrow -from arrow import Arrow import pytest import requests from requests.exceptions import ConnectionError @@ -66,9 +64,6 @@ "d": {"days": 64, "seconds": 0, "microseconds": 0}, } -DATA_ARROW = arrow.get("2018-04-25T16:17:53.533672+00:00") -ENCODED_DATA_ARROW = {"swhtype": "arrow", "d": "2018-04-25T16:17:53.533672+00:00"} - DATA_UUID = UUID("cdd8f804-9db6-40c3-93ab-5955d3836234") ENCODED_DATA_UUID = {"swhtype": "uuid", "d": "cdd8f804-9db6-40c3-93ab-5955d3836234"} @@ -89,16 +84,18 @@ "swhtype": "paged_result", } -TestPagedResultTuple = PagedResult[Union[str, bytes, Arrow], List[Union[str, UUID]]] +TestPagedResultTuple = PagedResult[ + Union[str, bytes, datetime.datetime], List[Union[str, UUID]] +] DATA_PAGED_RESULT2 = TestPagedResultTuple( - results=["data0", DATA_BYTES, DATA_ARROW], next_page_token=["10", DATA_UUID], + results=["data0", DATA_BYTES, DATA_DATETIME], next_page_token=["10", DATA_UUID], ) ENCODED_DATA_PAGED_RESULT2 = { "d": { - "results": ["data0", ENCODED_DATA_BYTES, ENCODED_DATA_ARROW,], + "results": ["data0", ENCODED_DATA_BYTES, ENCODED_DATA_DATETIME,], "next_page_token": ["10", ENCODED_DATA_UUID], }, "swhtype": "paged_result", @@ -111,7 +108,6 @@ 2015, 3, 4, 18, 25, 13, 1234, tzinfo=datetime.timezone.utc ), "datetime_delta": DATA_TIMEDELTA, - "arrow_date": DATA_ARROW, "swhtype": "fake", "swh_dict": {"swhtype": 42, "d": "test"}, "random_dict": {"swhtype": 43}, @@ -125,7 +121,6 @@ "datetime_tz": ENCODED_DATA_DATETIME, "datetime_utc": {"swhtype": "datetime", "d": "2015-03-04T18:25:13.001234+00:00",}, "datetime_delta": ENCODED_DATA_TIMEDELTA, - "arrow_date": ENCODED_DATA_ARROW, "swhtype": "fake", "swh_dict": {"swhtype": 42, "d": "test"}, "random_dict": {"swhtype": 43},