Skip to content

Commit df22a8d

Browse files
committed
use tzdata for timezone funnies
1 parent 38295df commit df22a8d

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ name = "saluki"
77
dynamic = ["version"]
88
dependencies = [
99
"ess-streaming-data-types",
10-
"confluent-kafka"
10+
"confluent-kafka",
11+
"tzdata"
1112
]
1213
readme = {file = "README.md", content-type = "text/markdown"}
1314
license-files = ["LICENSE"]

src/saluki/utils.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import datetime
22
import logging
33
from typing import List, Tuple
4+
from zoneinfo import ZoneInfo
45

56
from confluent_kafka import Message
67
from streaming_data_types import DESERIALISERS
@@ -66,8 +67,10 @@ def _parse_timestamp(msg: Message) -> str:
6667
"""
6768
timestamp_type, timestamp_ms_from_epoch = msg.timestamp()
6869
if timestamp_type == 1: # TIMESTAMP_CREATE_TIME
69-
return datetime.datetime.fromtimestamp(timestamp_ms_from_epoch / 1000).strftime(
70-
"%Y-%m-%d %H:%M:%S.%f"
70+
return (
71+
datetime.datetime.fromtimestamp(timestamp_ms_from_epoch / 1000)
72+
.astimezone(ZoneInfo("UTC"))
73+
.strftime("%Y-%m-%d %H:%M:%S.%f")
7174
)
7275
else:
7376
# TIMESTAMP_NOT_AVAILABLE or TIMESTAMP_LOG_APPEND_TIME

tests/test_utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,11 @@ def test_deserialising_message_which_raises_does_not_stop_loop(mock_message):
6464
ok_message = Mock(spec=Message)
6565
ok_message.value.return_value = b""
6666
ok_message.error.return_value = False
67-
ok_message.timestamp.return_value = 1, 1
67+
ok_message.timestamp.return_value = 2, 1
6868

6969
mock_message.value.side_effect = Exception
7070
mock_message.error.return_value = False
71-
mock_message.timestamp.return_value = 1, 1
71+
mock_message.timestamp.return_value = 2, 1
7272

7373
_deserialise_and_print_messages([mock_message, ok_message], None)
7474
assert logger.info.call_count == 1
@@ -125,7 +125,7 @@ def test_message_that_has_valid_schema_and_valid_payload(mock_message):
125125

126126
def test_parse_timestamp_with_valid_timestamp(mock_message):
127127
mock_message.timestamp.return_value = (1, 1753434939336)
128-
assert _parse_timestamp(mock_message) == "2025-07-25 10:15:39.336000"
128+
assert _parse_timestamp(mock_message) == "2025-07-25 09:15:39.336000"
129129

130130

131131
def test_parse_timestamp_with_timestamp_not_available(mock_message):

0 commit comments

Comments
 (0)