Skip to content

Commit 29dee4d

Browse files
authored
fix: ValueError: Invalid isoformat string on Python 3.10 (#168)
1 parent 32ff50b commit 29dee4d

File tree

5 files changed

+29
-6
lines changed

5 files changed

+29
-6
lines changed

flagsmith/mappers.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
StreamEvent,
2929
TraitConfig,
3030
)
31+
from flagsmith.utils.datetime import fromisoformat
3132

3233
OverrideKey = typing.Tuple[
3334
int,
@@ -69,9 +70,7 @@ def map_sse_event_to_stream_event(event: sseclient.Event) -> StreamEvent:
6970
def map_environment_document_to_environment_updated_at(
7071
environment_document: dict[str, typing.Any],
7172
) -> datetime:
72-
if (
73-
updated_at := datetime.fromisoformat(environment_document["updated_at"])
74-
).tzinfo is None:
73+
if (updated_at := fromisoformat(environment_document["updated_at"])).tzinfo is None:
7574
return updated_at.replace(tzinfo=timezone.utc)
7675
return updated_at.astimezone(tz=timezone.utc)
7776

flagsmith/utils/datetime.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import sys
2+
3+
if sys.version_info >= (3, 11):
4+
from datetime import datetime
5+
6+
fromisoformat = datetime.fromisoformat
7+
else:
8+
import iso8601
9+
10+
fromisoformat = iso8601.parse_date

poetry.lock

Lines changed: 14 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ packages = [{ include = "flagsmith" }]
1111

1212
[tool.poetry.dependencies]
1313
flagsmith-flag-engine = "^10.0.0"
14+
iso8601 = { version = "^2.1.0", python = "<3.11" }
1415
python = ">=3.9,<4"
1516
requests = "^2.32.3"
1617
requests-futures = "^1.0.1"

tests/data/environment.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,13 @@
5454
"enabled": true
5555
}
5656
],
57-
"updated_at": "2023-07-14 16:12:00.000000",
57+
"updated_at": "2023-07-14T16:12:00.000000Z",
5858
"identity_overrides": [
5959
{
6060
"identifier": "overridden-id",
6161
"identity_uuid": "0f21cde8-63c5-4e50-baca-87897fa6cd01",
6262
"created_date": "2019-08-27T14:53:45.698555Z",
63-
"updated_at": "2023-07-14 16:12:00.000000",
63+
"updated_at": "2023-07-14T16:12:00.000000Z",
6464
"environment_api_key": "B62qaMZNwfiqT76p38ggrQ",
6565
"identity_features": [
6666
{

0 commit comments

Comments
 (0)