From 32cb9db8835a0580ab1d8875a2beed68b15d37d2 Mon Sep 17 00:00:00 2001 From: anders-albert Date: Wed, 4 Sep 2024 08:43:15 +0200 Subject: [PATCH] =?UTF-8?q?=C3=83refactor:=20update?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data_modeling/typed_instances.py | 5 ++--- cognite/client/utils/_time.py | 17 -------------- tests/tests_unit/test_utils/test_time.py | 22 ------------------- 3 files changed, 2 insertions(+), 42 deletions(-) diff --git a/cognite/client/data_classes/data_modeling/typed_instances.py b/cognite/client/data_classes/data_modeling/typed_instances.py index dbf7e973b7..8faa59e724 100644 --- a/cognite/client/data_classes/data_modeling/typed_instances.py +++ b/cognite/client/data_classes/data_modeling/typed_instances.py @@ -3,7 +3,7 @@ import inspect from abc import ABC from collections.abc import Iterable -from datetime import date +from datetime import date, datetime from typing import TYPE_CHECKING, Any, cast from typing_extensions import Self @@ -20,7 +20,6 @@ _serialize_property_value, ) from cognite.client.utils._text import to_camel_case -from cognite.client.utils._time import timestamp_str_to_datetime if TYPE_CHECKING: from cognite.client import CogniteClient @@ -305,7 +304,7 @@ def _deserialize_value(value: Any, parameter: inspect.Parameter) -> Any: return value annotation = str(parameter.annotation) if "datetime" in annotation and isinstance(value, str): - return timestamp_str_to_datetime(value) + return datetime.strptime(value, "%Y-%m-%dT%H:%M:%S.%f%z") elif "date" in annotation and isinstance(value, str): return date.fromisoformat(value) elif DirectRelationReference.__name__ in annotation and isinstance(value, dict): diff --git a/cognite/client/utils/_time.py b/cognite/client/utils/_time.py index 370ba68996..7c46ea778c 100644 --- a/cognite/client/utils/_time.py +++ b/cognite/client/utils/_time.py @@ -178,23 +178,6 @@ def datetime_to_ms_iso_timestamp(dt: datetime) -> str: raise TypeError(f"Expected datetime object, got {type(dt)}") -def timestamp_str_to_datetime(timestamp: str) -> datetime: - """Converts a timestamp string in ISO 8601 format to a datetime object. - - Args: - timestamp (str): Timestamp string in ISO 8601 format - - Returns: - datetime: Datetime object - """ - try: - return datetime.fromisoformat(timestamp) - except ValueError: - # Typically hits if the timestamp is missing milliseconds - # For example, "2021-01-01T00:00:00.17+00:00", i.e. missing the last digit - return datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S.%f%z") - - def split_granularity_into_quantity_and_normalized_unit(granularity: str) -> tuple[int, str]: """A normalized unit is any unit accepted by the API""" if match := re.match(r"(\d+)(.*)", granularity): diff --git a/tests/tests_unit/test_utils/test_time.py b/tests/tests_unit/test_utils/test_time.py index 1204448ed3..b55250d308 100644 --- a/tests/tests_unit/test_utils/test_time.py +++ b/tests/tests_unit/test_utils/test_time.py @@ -27,7 +27,6 @@ parse_str_timezone, parse_str_timezone_offset, split_time_range, - timestamp_str_to_datetime, timestamp_to_ms, to_fixed_utc_intervals, to_pandas_freq, @@ -231,27 +230,6 @@ def test_negative(self, t): timestamp_to_ms(t) -class TestTimestampStrToDatetime: - @pytest.mark.parametrize( - "timestamp_str, expected", - [ - ("2021-01-01T00:00:00.000+00:00", datetime(2021, 1, 1, 0, 0, 0, 0, tzinfo=timezone.utc)), - ("2021-01-01T00:00:00.000+01:00", datetime(2021, 1, 1, 0, 0, 0, 0, tzinfo=timezone(timedelta(hours=1)))), - ( - "2021-01-01T00:00:00.000+01:15", - datetime(2021, 1, 1, 0, 0, 0, 0, tzinfo=timezone(timedelta(hours=1, minutes=15))), - ), - ( - "2021-01-01T00:00:00.000-01:15", - datetime(2021, 1, 1, 0, 0, 0, 0, tzinfo=timezone(timedelta(hours=-1, minutes=-15))), - ), - ("2024-09-03T09:36:01.17+00:00", datetime(2024, 9, 3, 9, 36, 1, 170000, tzinfo=timezone.utc)), - ], - ) - def test_valid_timestamp_str(self, timestamp_str: str, expected: datetime) -> None: - assert expected == timestamp_str_to_datetime(timestamp_str) - - class TestGranularityToMs: @pytest.mark.parametrize( "granularity, expected_ms",