Skip to content

Commit 86e4999

Browse files
committed
Problem: Filtering by start_date or end_date would fail assertion
Solution: Cast to string in date field conversion
1 parent 7f1b06d commit 86e4999

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

src/aleph/sdk/query/filters.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from aleph_message.models import MessageType
55

6-
from ..utils import _date_field_to_float, serialize_list
6+
from ..utils import _date_field_to_timestamp, serialize_list
77

88

99
class MessageFilter:
@@ -79,8 +79,8 @@ def as_http_params(self) -> Dict[str, str]:
7979
"hashes": serialize_list(self.hashes),
8080
"channels": serialize_list(self.channels),
8181
"chains": serialize_list(self.chains),
82-
"startDate": _date_field_to_float(self.start_date),
83-
"endDate": _date_field_to_float(self.end_date),
82+
"startDate": _date_field_to_timestamp(self.start_date),
83+
"endDate": _date_field_to_timestamp(self.end_date),
8484
}
8585

8686
# Ensure all values are strings.
@@ -146,8 +146,8 @@ def as_http_params(self) -> Dict[str, str]:
146146
"hashes": serialize_list(self.hashes),
147147
"channels": serialize_list(self.channels),
148148
"chains": serialize_list(self.chains),
149-
"startDate": _date_field_to_float(self.start_date),
150-
"endDate": _date_field_to_float(self.end_date),
149+
"startDate": _date_field_to_timestamp(self.start_date),
150+
"endDate": _date_field_to_timestamp(self.end_date),
151151
}
152152

153153
# Ensure all values are strings.

src/aleph/sdk/utils.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -126,12 +126,12 @@ def serialize_list(values: Optional[Iterable[str]]) -> Optional[str]:
126126
return None
127127

128128

129-
def _date_field_to_float(date: Optional[Union[datetime, float]]) -> Optional[float]:
129+
def _date_field_to_timestamp(date: Optional[Union[datetime, float]]) -> Optional[str]:
130130
if date is None:
131131
return None
132132
elif isinstance(date, float):
133-
return date
133+
return str(date)
134134
elif hasattr(date, "timestamp"):
135-
return date.timestamp()
135+
return str(date.timestamp())
136136
else:
137137
raise TypeError(f"Invalid type: `{type(date)}`")

tests/unit/test_asynchronous_get.py

+3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import unittest
2+
from datetime import datetime
23
from typing import Any, Dict
34
from unittest.mock import AsyncMock
45

@@ -75,6 +76,7 @@ async def test_get_posts():
7576
page_size=2,
7677
post_filter=PostFilter(
7778
channels=["TEST"],
79+
start_date=datetime(2021, 1, 1),
7880
),
7981
)
8082

@@ -89,6 +91,7 @@ async def test_get_messages():
8991
page_size=2,
9092
message_filter=MessageFilter(
9193
message_types=[MessageType.post],
94+
start_date=datetime(2021, 1, 1),
9295
),
9396
)
9497

0 commit comments

Comments
 (0)