In Python 3.11+ datetime.datetime.fromisoformat()
accepts any number of decimal places
for the seconds component. If there are more than 6 then the resulting datetime object
is truncated (not rounded) to microsecond precision.
Python 3.11.8 (main, Feb 6 2024, 21:21:21) [Clang 15.0.0 (clang-1500.1.0.2.5)] on darwin
>>> import datetime
>>> datetime.datetime.fromisoformat('2011-11-04T00:05:23.12345Z')
datetime.datetime(2011, 11, 4, 0, 5, 23, 123450, tzinfo=datetime.timezone.utc)
>>> datetime.datetime.fromisoformat('2011-11-04T00:05:23.1234567Z')
datetime.datetime(2011, 11, 4, 0, 5, 23, 123456, tzinfo=datetime.timezone.utc)