Skip to content

Commit 8d9a0a1

Browse files
Use isoparse instead of datetime.fromisoformat (#116)
1 parent ead145c commit 8d9a0a1

4 files changed

Lines changed: 15 additions & 6 deletions

File tree

src/elimity_insights_client/api/_decode_query_results_page.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
from datetime import date, time
12
from json import loads
23
from typing import List
34

5+
from dateutil.parser import isoparse
46
from typing_extensions import TypedDict
57

68
from elimity_insights_client._util import map_list
@@ -18,7 +20,6 @@
1820
GroupByQueryResultsPage,
1921
GroupByQueryResult,
2022
)
21-
from datetime import date, datetime, time
2223

2324

2425
class EntityDict(TypedDict):
@@ -108,7 +109,7 @@ def _decode_value(dict: ValueDict) -> Value:
108109
return DateValue(date_value)
109110

110111
if type == "dateTime":
111-
date_time_value = datetime.fromisoformat(value)
112+
date_time_value = isoparse(value)
112113
return DateTimeValue(date_time_value)
113114

114115
if type == "number":

src/elimity_insights_client/api/_decode_source.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from typing import TypedDict, Optional
22

3+
from dateutil.parser import isoparse
34
from typing_extensions import NotRequired
45

56
from elimity_insights_client._decode_domain_graph_schema import (
@@ -12,7 +13,6 @@
1213
AbsentLastReloadTimestamp,
1314
PresentLastReloadTimestamp,
1415
)
15-
from datetime import datetime
1616

1717

1818
class SourceDict(TypedDict):
@@ -40,5 +40,5 @@ def decode_source(dict: SourceDict) -> Source:
4040
def _decode_last_reload_timestamp(value: Optional[str]) -> LastReloadTimestamp:
4141
if value is None:
4242
return AbsentLastReloadTimestamp()
43-
val = datetime.fromisoformat(value)
43+
val = isoparse(value)
4444
return PresentLastReloadTimestamp(val)

tests/elimity_insights_client/api/query-results-page.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
{
1212
"type": "boolean",
1313
"value": "false"
14+
},
15+
{
16+
"type": "dateTime",
17+
"value": "2006-05-04T03:02:01Z"
1418
}
1519
],
1620
"linkGroupByPages": [

tests/elimity_insights_client/api/test_decode_query_results_page.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from datetime import datetime, timezone
12
from importlib.resources import open_binary
23
from json import load
34
from typing import List
@@ -14,13 +15,16 @@
1415
QueryResult,
1516
QueryResultsPage,
1617
Value,
18+
DateTimeValue,
1719
)
1820

1921

2022
def test_decode_query_results_page() -> None:
2123
entity = Entity(True, "bar", "foo")
22-
inclusion: Value = BooleanValue(False)
23-
inclusions = [inclusion]
24+
inclusion1: Value = BooleanValue(False)
25+
dat = datetime(2006, 5, 4, 3, 2, 1, tzinfo=timezone.utc)
26+
inclusion2: Value = DateTimeValue(dat)
27+
inclusions = [inclusion1, inclusion2]
2428
label = NumberValue(42)
2529
sub_pages: List[GroupByQueryResultsPage] = []
2630
link_group_by_result = GroupByQueryResult(0, label, sub_pages)

0 commit comments

Comments
 (0)