in azure/functions/meta.py [0:0]
def _parse_datetime(
cls, datetime_str: Optional[str]) -> Optional[datetime.datetime]:
if not datetime_str:
return None
too_fractional = re.match(
r'(.*\.\d{6})(\d+)(Z|[\+|-]\d{1,2}:\d{1,2}){0,1}', datetime_str)
if too_fractional:
# The supplied value contains seven digits in the
# fractional second part, whereas Python expects
# a maxium of six, so strip it.
# https://github.com/Azure/azure-functions-python-worker/issues/269
datetime_str = too_fractional.group(1) + (
too_fractional.group(3) or '')
# Try parse time
utc_time, utc_time_error = cls._parse_datetime_utc(datetime_str)
if not utc_time_error and utc_time:
return utc_time.replace(tzinfo=datetime.timezone.utc)
local_time, local_time_error = cls._parse_datetime_local(datetime_str)
if not local_time_error and local_time:
return local_time.replace(tzinfo=None)
# Report error
if utc_time_error:
raise utc_time_error
elif local_time_error:
raise local_time_error
else:
return None