diff --git a/src/CSET/_workflow_utils/fetch_data.py b/src/CSET/_workflow_utils/fetch_data.py index 1beee8c9f..6813ac047 100755 --- a/src/CSET/_workflow_utils/fetch_data.py +++ b/src/CSET/_workflow_utils/fetch_data.py @@ -7,6 +7,7 @@ import logging import os import shutil +import sys from concurrent.futures import ThreadPoolExecutor from datetime import datetime, timedelta from typing import Literal @@ -85,10 +86,16 @@ def get_file(self, file_path: str, output_dir: str) -> None: def _get_needed_environment_variables() -> dict: """Load the needed variables from the environment.""" + # Python 3.10 and older don't fully support ISO 8601 datetime formats. + # TODO: Remove once we drop python 3.10. + if sys.version_info.minor < 11: + _fromisoformat = isodate.parse_datetime + else: + _fromisoformat = datetime.fromisoformat variables = { "raw_path": os.environ["DATA_PATH"], "date_type": os.environ["DATE_TYPE"], - "data_time": datetime.fromisoformat(os.environ["CYLC_TASK_CYCLE_POINT"]), + "data_time": _fromisoformat(os.environ["CYLC_TASK_CYCLE_POINT"]), "forecast_length": isodate.parse_duration(os.environ["CSET_ANALYSIS_PERIOD"]), "forecast_offset": isodate.parse_duration(os.environ["CSET_ANALYSIS_OFFSET"]), "share_dir": os.environ["CYLC_WORKFLOW_SHARE_DIR"],