diff --git a/CHANGELOG.md b/CHANGELOG.md index 0eb128ef..d7a3a503 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ## 1.44.0 [unreleased] +### Features +1. [#657](https://github.com/influxdata/influxdb-client-python/pull/657): Prefer datetime.fromisoformat over dateutil.parse in Python 3.11+ + ## 1.43.0 [2024-05-17] ### Bug Fixes diff --git a/influxdb_client/client/util/date_utils.py b/influxdb_client/client/util/date_utils.py index 11baecb5..7b6750c8 100644 --- a/influxdb_client/client/util/date_utils.py +++ b/influxdb_client/client/util/date_utils.py @@ -1,5 +1,6 @@ """Utils to get right Date parsing function.""" import datetime +from sys import version_info import threading from datetime import timezone as tz @@ -78,7 +79,8 @@ def get_date_helper() -> DateHelper: """ Return DateHelper with proper implementation. - If there is a 'ciso8601' than use 'ciso8601.parse_datetime' else use 'dateutil.parse'. + If there is a 'ciso8601' than use 'ciso8601.parse_datetime' else + use 'datetime.fromisoformat' (Python >= 3.11) or 'dateutil.parse' (Python < 3.11). """ global date_helper if date_helper is None: @@ -90,7 +92,10 @@ def get_date_helper() -> DateHelper: import ciso8601 _date_helper.parse_date = ciso8601.parse_datetime except ModuleNotFoundError: - _date_helper.parse_date = parser.parse + if (version_info.major, version_info.minor) >= (3, 11): + _date_helper.parse_date = datetime.datetime.fromisoformat + else: + _date_helper.parse_date = parser.parse date_helper = _date_helper return date_helper