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:
Klaas van Schelven
2025-10-26 22:56:08 +01:00
parent 2b5d2f90ba
commit 8ad7f97380

View File

@@ -15,12 +15,20 @@ def parse_timestamp(value):
> 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.
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):
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):