Skip to content

Commit 3cd0093

Browse files
fixed unit test and linter...i believe
Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
1 parent 8626762 commit 3cd0093

File tree

4 files changed

+32
-15
lines changed

4 files changed

+32
-15
lines changed

sdk/python/feast/feature_store.py

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@
8989
from feast.saved_dataset import SavedDataset, SavedDatasetStorage, ValidationReference
9090
from feast.ssl_ca_trust_store_setup import configure_ca_trust_store_env_variables
9191
from feast.stream_feature_view import StreamFeatureView
92+
from feast.transformation.pandas_transformation import PandasTransformation
93+
from feast.transformation.python_transformation import PythonTransformation
9294
from feast.utils import _utc_now
9395

9496
warnings.simplefilter("once", DeprecationWarning)
@@ -1552,7 +1554,13 @@ def _get_feature_view_and_df_for_online_write(
15521554
isinstance(feature_view, OnDemandFeatureView)
15531555
and feature_view.write_to_online_store
15541556
):
1555-
if feature_view.mode == "python":
1557+
if (
1558+
feature_view.mode == "python"
1559+
and isinstance(
1560+
feature_view.feature_transformation, PythonTransformation
1561+
)
1562+
and df is not None
1563+
):
15561564
input_dict = (
15571565
df.to_dict(orient="records")[0]
15581566
if feature_view.singleton
@@ -1561,7 +1569,8 @@ def _get_feature_view_and_df_for_online_write(
15611569
transformed_data = feature_view.feature_transformation.udf(input_dict)
15621570
if feature_view.write_to_online_store:
15631571
entities = [
1564-
self.get_entity(entity) for entity in feature_view.entities
1572+
self.get_entity(entity)
1573+
for entity in (feature_view.entities or [])
15651574
]
15661575
join_keys = [entity.join_key for entity in entities if entity]
15671576
join_keys = [k for k in join_keys if k in input_dict.keys()]
@@ -1585,11 +1594,14 @@ def _get_feature_view_and_df_for_online_write(
15851594
if k not in transformed_data:
15861595
transformed_data[k] = input_dict[k]
15871596
df = pd.DataFrame(transformed_data)
1588-
elif feature_view.mode == "pandas":
1597+
elif feature_view.mode == "pandas" and isinstance(
1598+
feature_view.feature_transformation, PandasTransformation
1599+
):
15891600
transformed_df = feature_view.feature_transformation.udf(df)
1590-
for col in df.columns:
1591-
transformed_df[col] = df[col]
1592-
df = transformed_df
1601+
if df is not None:
1602+
for col in df.columns:
1603+
transformed_df[col] = df[col]
1604+
df = transformed_df
15931605

15941606
else:
15951607
raise Exception("Unsupported OnDemandFeatureView mode")
@@ -1947,7 +1959,9 @@ def retrieve_online_documents_v2(
19471959
for feature in features:
19481960
feature_view_name = feature.split(":")[0]
19491961
if feature_view_name in [fv.name for fv in available_odfv_views]:
1950-
feature_view = self.get_on_demand_feature_view(feature_view_name)
1962+
feature_view: Union[OnDemandFeatureView, FeatureView] = (
1963+
self.get_on_demand_feature_view(feature_view_name)
1964+
)
19511965
else:
19521966
feature_view = self.get_feature_view(feature_view_name)
19531967
feature_view_set.add(feature_view.name)
@@ -1957,7 +1971,7 @@ def retrieve_online_documents_v2(
19571971
f.split(":")[1] for f in features if isinstance(f, str) and ":" in f
19581972
]
19591973
if len(available_feature_views) == 0:
1960-
available_feature_views.extend(available_odfv_views)
1974+
available_feature_views.extend(available_odfv_views) # type: ignore[arg-type]
19611975

19621976
requested_feature_view = available_feature_views[0]
19631977
if not requested_feature_view:

sdk/python/feast/infra/passthrough_provider.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ def materialize_single_feature_view(
449449
def get_historical_features(
450450
self,
451451
config: RepoConfig,
452-
feature_views: List[FeatureView],
452+
feature_views: List[Union[FeatureView, OnDemandFeatureView]],
453453
feature_refs: List[str],
454454
entity_df: Union[pd.DataFrame, str],
455455
registry: BaseRegistry,

sdk/python/feast/infra/provider.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ def materialize_single_feature_view(
242242
def get_historical_features(
243243
self,
244244
config: RepoConfig,
245-
feature_views: List[FeatureView],
245+
feature_views: List[Union[FeatureView, OnDemandFeatureView]],
246246
feature_refs: List[str],
247247
entity_df: Union[pd.DataFrame, str],
248248
registry: BaseRegistry,

sdk/python/feast/utils.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ def _convert_arrow_odfv_to_proto(
373373
updated_table = pyarrow.RecordBatch.from_arrays(
374374
table.columns + [null_column],
375375
schema=table.schema.append(
376-
pyarrow.field(feature.name, null_column.type)
376+
pyarrow.field(feature.name, null_column.type) # type: ignore[attr-defined]
377377
),
378378
)
379379
proto_values_by_column[feature.name] = python_values_to_proto_values(
@@ -467,12 +467,15 @@ def _group_feature_refs(
467467
all_feature_views: List["FeatureView"],
468468
all_on_demand_feature_views: List["OnDemandFeatureView"],
469469
) -> Tuple[
470-
List[Tuple["FeatureView", List[str]]], List[Tuple["OnDemandFeatureView", List[str]]]
470+
List[Tuple[Union["FeatureView", "OnDemandFeatureView"], List[str]]],
471+
List[Tuple["OnDemandFeatureView", List[str]]],
471472
]:
472473
"""Get list of feature views and corresponding feature names based on feature references"""
473474

474475
# view name to view proto
475-
view_index = {view.projection.name_to_use(): view for view in all_feature_views}
476+
view_index: Dict[str, Union["FeatureView", "OnDemandFeatureView"]] = {
477+
view.projection.name_to_use(): view for view in all_feature_views
478+
}
476479

477480
# on demand view to on demand view proto
478481
on_demand_view_index: Dict[str, "OnDemandFeatureView"] = {}
@@ -517,7 +520,7 @@ def _group_feature_refs(
517520
else:
518521
raise FeatureViewNotFoundException(view_name)
519522

520-
fvs_result: List[Tuple["FeatureView", List[str]]] = []
523+
fvs_result: List[Tuple[Union["FeatureView", "OnDemandFeatureView"], List[str]]] = []
521524
odfvs_result: List[Tuple["OnDemandFeatureView", List[str]]] = []
522525

523526
for view_name, feature_names in views_features.items():
@@ -1148,7 +1151,7 @@ def _get_online_request_context(
11481151
entityless_case = DUMMY_ENTITY_NAME in [
11491152
entity_name
11501153
for feature_view in feature_views
1151-
for entity_name in feature_view.entities
1154+
for entity_name in (feature_view.entities or [])
11521155
]
11531156

11541157
return (

0 commit comments

Comments
 (0)