mirror of
https://github.com/jlengrand/bugsink.git
synced 2026-03-10 08:01:17 +00:00
parse_timestamp: _actually_ parse as UTC when timezone not provided
See https://github.com/Sija/raven.cr/issues/100 for the thing that triggered this Caused by spotting this in the (shared on discord) logs of one of our users: ``` RuntimeWarning: DateTimeField Event.timestamp received a naive datetime (2025-10-26 16:01:08) while time zone support is active. ```
This commit is contained in:
@@ -15,12 +15,20 @@ def parse_timestamp(value):
|
|||||||
> in our systems). With that caveat in mind, just send whatever is easiest to produce.
|
> in our systems). With that caveat in mind, just send whatever is easiest to produce.
|
||||||
|
|
||||||
> All timestamps in the event protocol are formatted this way.
|
> All timestamps in the event protocol are formatted this way.
|
||||||
|
|
||||||
|
This function returns None for invalid input.
|
||||||
"""
|
"""
|
||||||
|
# NOTE: the fact that we return None for invalid input strikes me as surprising when revisiting this code; but ATM
|
||||||
|
# I don't have the time to go through all the callsites to see if they may have become to depend on this behavior.
|
||||||
|
|
||||||
if isinstance(value, int) or isinstance(value, float):
|
if isinstance(value, int) or isinstance(value, float):
|
||||||
return datetime.datetime.fromtimestamp(value, tz=datetime.timezone.utc)
|
return datetime.datetime.fromtimestamp(value, tz=datetime.timezone.utc)
|
||||||
|
|
||||||
return parse_datetime(value)
|
result = parse_datetime(value)
|
||||||
|
if result is not None and result.tzinfo is None:
|
||||||
|
return result.replace(tzinfo=datetime.timezone.utc)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
def format_timestamp(value):
|
def format_timestamp(value):
|
||||||
|
|||||||
Reference in New Issue
Block a user