Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
fix: sqlite adapter deprecation warning
Signed-off-by: Matt Green <emgeee@users.noreply.github.com>
  • Loading branch information
emgeee committed Nov 27, 2024
commit f3205dfe028cf301f3029fbe1d252f715d747606
2 changes: 1 addition & 1 deletion sdk/python/feast/driver_test_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
42 changes: 41 additions & 1 deletion sdk/python/feast/infra/online_stores/sqlite.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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"""

Expand Down
2 changes: 1 addition & 1 deletion sdk/python/tests/data/data_creator.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down