Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
837e34f
feat: Add unified transformation
franciscojavierarceo Nov 26, 2025
d12fbfd
feat: Unify transformations
franciscojavierarceo Nov 27, 2025
9a2df49
feat: Unify Transformations
franciscojavierarceo Nov 28, 2025
9aceb7f
feat: Unify Transformations
franciscojavierarceo Nov 28, 2025
5c8b93c
updated docs
franciscojavierarceo Dec 4, 2025
6d5ce47
refactor: separate transformation logic from execution decisions with…
franciscojavierarceo Dec 23, 2025
9380cf9
format
franciscojavierarceo Dec 23, 2025
5b759ed
incorporaitng feedback
franciscojavierarceo Dec 24, 2025
2d7a43b
updated
franciscojavierarceo Dec 25, 2025
b6299d2
fix
franciscojavierarceo Dec 26, 2025
3726733
linter
franciscojavierarceo Dec 26, 2025
f55d4b4
cleanup
franciscojavierarceo Dec 26, 2025
716e692
cleanup
franciscojavierarceo Dec 26, 2025
a4f2e0a
more fix
franciscojavierarceo Dec 29, 2025
02ae40b
more fix
franciscojavierarceo Dec 29, 2025
74de467
updated
franciscojavierarceo Dec 31, 2025
c360aef
fix
franciscojavierarceo Jan 5, 2026
f73431c
fix
franciscojavierarceo Jan 5, 2026
50e536a
fix
franciscojavierarceo Jan 5, 2026
a87c4b4
fix
franciscojavierarceo Jan 5, 2026
e2f722c
Merge branch 'master' into refactor-odfv
franciscojavierarceo Jan 5, 2026
dde05bd
lint
franciscojavierarceo Jan 5, 2026
0e1f037
fix
franciscojavierarceo Jan 6, 2026
662e21b
linter
franciscojavierarceo Jan 6, 2026
9f48c75
fix linter
franciscojavierarceo Jan 6, 2026
a058aac
fix
franciscojavierarceo Jan 6, 2026
b8771c9
fix(redis): Preserve millisecond timestamp precision for Redis online…
jatin5251 Jan 6, 2026
34d9b52
feat: Add GCS registry store in Go feature server (#5818)
samuelkim7 Jan 6, 2026
6c35d45
chore: Refactor some unit tests into integration tests (#5820)
franciscojavierarceo Jan 6, 2026
5bcd6e6
test: Remove e2e_rhoai package tests
Srihari1192 Jan 5, 2026
61812ba
fix
franciscojavierarceo Jan 7, 2026
d4adcd5
fix
franciscojavierarceo Jan 7, 2026
a007be3
fix
franciscojavierarceo Jan 8, 2026
416b15c
uploading progress
franciscojavierarceo Jan 13, 2026
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
Prev Previous commit
Next Next commit
fix
Signed-off-by: Francisco Javier Arceo <[email protected]>
  • Loading branch information
franciscojavierarceo committed Jan 5, 2026
commit b6299d2cc7d6618ee3b909dbca76a51ce490008c
2 changes: 1 addition & 1 deletion sdk/python/feast/feature_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,7 @@ async def write_to_online_store(request: WriteToFeatureStoreRequest) -> None:
feature_view_name=feature_view_name,
df=df,
allow_registry_cache=allow_registry_cache,
transform_on_write=request.transform_on_write,
transform=request.transform_on_write,
)

@app.get("/health")
Expand Down
17 changes: 10 additions & 7 deletions sdk/python/feast/feature_store.py
Original file line number Diff line number Diff line change
Expand Up @@ -1276,7 +1276,7 @@ def get_historical_features(
provider = self._get_provider()

# Optional kwargs
kwargs = {}
kwargs: Dict[str, Any] = {}
if start_date is not None:
kwargs["start_date"] = start_date
if end_date is not None:
Expand Down Expand Up @@ -1769,7 +1769,7 @@ def push(
fv.name,
df,
allow_registry_cache=allow_registry_cache,
transform_on_write=transform_on_write,
transform=transform_on_write,
)
if to == PushMode.OFFLINE or to == PushMode.ONLINE_AND_OFFLINE:
self.write_to_offline_store(
Expand Down Expand Up @@ -1952,17 +1952,20 @@ def _apply_unified_transformation(
if not transformation:
return df

if transformation.mode.value == "pandas":
# Handle TransformationMode enum values
mode = transformation.mode.value if hasattr(transformation.mode, 'value') else transformation.mode

if mode == "pandas":
# Apply pandas transformation
return transformation.udf(df)
elif transformation.mode.value == "python":
elif mode == "python":
# Convert pandas DataFrame to dict for python mode
input_dict = df.to_dict(orient="list")
transformed_dict = transformation.udf(input_dict)
return pd.DataFrame(transformed_dict)
else:
raise Exception(
f"Unsupported transformation mode: {transformation.mode.value}"
f"Unsupported transformation mode: {mode}"
)

def _validate_transformed_schema(
Expand Down Expand Up @@ -2058,7 +2061,7 @@ def _get_feature_view_and_df_for_online_write(
hasattr(feature_view, "feature_transformation")
and feature_view.feature_transformation
):
df = self._apply_unified_transformation(feature_view, df)
df = self._apply_unified_transformation(cast(FeatureView, feature_view), df)

# Schema validation when transform=False
elif (
Expand All @@ -2067,7 +2070,7 @@ def _get_feature_view_and_df_for_online_write(
and hasattr(feature_view, "feature_transformation")
and feature_view.feature_transformation
):
self._validate_transformed_schema(feature_view, df)
self._validate_transformed_schema(cast(FeatureView, feature_view), df)

return feature_view, df

Expand Down
4 changes: 1 addition & 3 deletions sdk/python/feast/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -737,9 +737,7 @@ def _augment_response_with_on_demand_transforms(
)
else:
# Fallback to OnDemandFeatureView method
transformed_features_dict: Dict[str, List[Any]] = (
odfv.transform_dict(initial_response_dict)
)
transformed_features_dict = odfv.transform_dict(initial_response_dict)
elif mode in {"pandas", "substrait"}:
if initial_response_arrow is None:
initial_response_arrow = initial_response.to_arrow()
Expand Down