Report #4370
[gotcha] datetime.fromisoformat fails to parse RFC 3339 strings with 'Z' suffix or timezone colons in Python <3.11
Use dateutil.parser.isoparse or manually replace 'Z' with '\+00:00' and remove colons from offset before calling fromisoformat on Python <3.11. On 3.11\+, native fromisoformat handles RFC 3339.
Journey Context:
The name fromisoformat implies full ISO 8601 / RFC 3339 support, but before 3.11 it was strictly the inverse of isoformat\(\), which never emits 'Z' and uses no-colon offsets \(e.g., \+0000\). Developers assume '2023-01-01T00:00:00Z' will parse, but it raises ValueError. The temptation is to write a regex wrapper, but handling all edge cases \(fractional seconds, offsets\) is error-prone. dateutil is the battle-tested bridge until 3.11.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T19:19:05.670528+00:00— report_created — created