From f3205dfe028cf301f3029fbe1d252f715d747606 Mon Sep 17 00:00:00 2001 From: Matt Green Date: Wed, 27 Nov 2024 11:55:06 -0800 Subject: [PATCH 1/3] fix: sqlite adapter deprecation warning Signed-off-by: Matt Green --- sdk/python/feast/driver_test_data.py | 2 +- .../feast/infra/online_stores/sqlite.py | 42 ++++++++++++++++++- sdk/python/tests/data/data_creator.py | 2 +- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/sdk/python/feast/driver_test_data.py b/sdk/python/feast/driver_test_data.py index d96c9c6d387..23f1f124774 100644 --- a/sdk/python/feast/driver_test_data.py +++ b/sdk/python/feast/driver_test_data.py @@ -2,10 +2,10 @@ import itertools from datetime import timedelta, timezone from enum import Enum -from zoneinfo import ZoneInfo import numpy as np import pandas as pd +from zoneinfo import ZoneInfo from feast.infra.offline_stores.offline_utils import ( DEFAULT_ENTITY_DF_EVENT_TIMESTAMP_COL, diff --git a/sdk/python/feast/infra/online_stores/sqlite.py b/sdk/python/feast/infra/online_stores/sqlite.py index 1b79b1a94ba..e2eeb038d00 100644 --- a/sdk/python/feast/infra/online_stores/sqlite.py +++ b/sdk/python/feast/infra/online_stores/sqlite.py @@ -17,7 +17,7 @@ import sqlite3 import struct import sys -from datetime import datetime +from datetime import date, datetime from pathlib import Path from typing import Any, Callable, Dict, List, Literal, Optional, Sequence, Tuple, Union @@ -39,6 +39,46 @@ from feast.utils import _build_retrieve_online_document_record, to_naive_utc +def adapt_date_iso(val: date): + """Adapt datetime.date to ISO 8601 date.""" + return val.isoformat() + + +def adapt_datetime_iso(val: datetime): + """Adapt datetime.datetime to timezone-naive ISO 8601 date.""" + return val.isoformat() + + +def adapt_datetime_epoch(val: datetime): + """Adapt datetime.datetime to Unix timestamp.""" + return int(val.timestamp()) + + +sqlite3.register_adapter(date, adapt_date_iso) +sqlite3.register_adapter(datetime, adapt_datetime_iso) +sqlite3.register_adapter(datetime, adapt_datetime_epoch) + + +def convert_date(val: bytes): + """Convert ISO 8601 date to datetime.date object.""" + return date.fromisoformat(val.decode()) + + +def convert_datetime(val: bytes): + """Convert ISO 8601 datetime to datetime.datetime object.""" + return datetime.fromisoformat(val.decode()) + + +def convert_timestamp(val: bytes): + """Convert Unix epoch timestamp to datetime.datetime object.""" + return datetime.fromtimestamp(int(val)) + + +sqlite3.register_converter("date", convert_date) +sqlite3.register_converter("datetime", convert_datetime) +sqlite3.register_converter("timestamp", convert_timestamp) + + class SqliteOnlineStoreConfig(FeastConfigBaseModel, VectorStoreConfig): """Online store config for local (SQLite-based) store""" diff --git a/sdk/python/tests/data/data_creator.py b/sdk/python/tests/data/data_creator.py index 6b0984f799d..5d6cffeb9df 100644 --- a/sdk/python/tests/data/data_creator.py +++ b/sdk/python/tests/data/data_creator.py @@ -1,8 +1,8 @@ from datetime import datetime, timedelta, timezone from typing import Dict, List, Optional -from zoneinfo import ZoneInfo import pandas as pd +from zoneinfo import ZoneInfo from feast.types import FeastType, Float32, Int32, Int64, String from feast.utils import _utc_now From 0ba06d661a2b314a0fe01373f12f49af358b4eb2 Mon Sep 17 00:00:00 2001 From: Matt Green Date: Wed, 27 Nov 2024 12:08:35 -0800 Subject: [PATCH 2/3] fix: remove duplicate folder definition in ruff config Signed-off-by: Matt Green --- sdk/python/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/python/pyproject.toml b/sdk/python/pyproject.toml index 10ad007fa90..8a1c5b70c3b 100644 --- a/sdk/python/pyproject.toml +++ b/sdk/python/pyproject.toml @@ -6,7 +6,7 @@ select = ["E","F","W","I"] ignore = ["E203", "E266", "E501", "E721"] [tool.ruff.lint.isort] -known-first-party = ["feast", "feast", "feast_serving_server", "feast_core_server"] +known-first-party = ["feast", "feast_serving_server", "feast_core_server"] default-section = "third-party" [tool.mypy] From d22ee0fbd563e84544fcfff5b9d6a356cfa4ef13 Mon Sep 17 00:00:00 2001 From: Matt Green Date: Wed, 27 Nov 2024 12:21:53 -0800 Subject: [PATCH 3/3] update minimum ruff version and format files Signed-off-by: Matt Green --- sdk/python/feast/driver_test_data.py | 2 +- sdk/python/tests/data/data_creator.py | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/python/feast/driver_test_data.py b/sdk/python/feast/driver_test_data.py index 23f1f124774..d96c9c6d387 100644 --- a/sdk/python/feast/driver_test_data.py +++ b/sdk/python/feast/driver_test_data.py @@ -2,10 +2,10 @@ import itertools from datetime import timedelta, timezone from enum import Enum +from zoneinfo import ZoneInfo import numpy as np import pandas as pd -from zoneinfo import ZoneInfo from feast.infra.offline_stores.offline_utils import ( DEFAULT_ENTITY_DF_EVENT_TIMESTAMP_COL, diff --git a/sdk/python/tests/data/data_creator.py b/sdk/python/tests/data/data_creator.py index 5d6cffeb9df..6b0984f799d 100644 --- a/sdk/python/tests/data/data_creator.py +++ b/sdk/python/tests/data/data_creator.py @@ -1,8 +1,8 @@ from datetime import datetime, timedelta, timezone from typing import Dict, List, Optional +from zoneinfo import ZoneInfo import pandas as pd -from zoneinfo import ZoneInfo from feast.types import FeastType, Float32, Int32, Int64, String from feast.utils import _utc_now diff --git a/setup.py b/setup.py index 5ee1e891bc4..05f57f60539 100644 --- a/setup.py +++ b/setup.py @@ -155,7 +155,7 @@ "build", "virtualenv==20.23.0", "cryptography>=35.0,<43", - "ruff>=0.3.3", + "ruff>=0.8.0", "mypy-protobuf>=3.1", "grpcio-tools>=1.56.2,<2", "grpcio-testing>=1.56.2,<2",