Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
7383550
feat: updating protos to separate transformation
franciscojavierarceo Mar 17, 2024
6bcff8d
fixed stuff...i think
franciscojavierarceo Mar 17, 2024
ea58ace
updated tests and registry diff function
franciscojavierarceo Mar 18, 2024
1713313
updated base registry
franciscojavierarceo Mar 18, 2024
4a00c12
updated react component
franciscojavierarceo Mar 18, 2024
97a8bb6
formatted
franciscojavierarceo Mar 18, 2024
5190d6c
updated stream feature view proto
franciscojavierarceo Mar 18, 2024
23ae349
making the proto changes backwards compatable
franciscojavierarceo Mar 18, 2024
1d598d2
trying to make this backwards compatible
franciscojavierarceo Mar 20, 2024
81c6f82
caught a bug and fixed the linter
franciscojavierarceo Mar 20, 2024
7687e23
actually linted
franciscojavierarceo Mar 20, 2024
6507808
updated ui component
franciscojavierarceo Mar 20, 2024
f44c227
accidentally commented out fixtures
franciscojavierarceo Mar 20, 2024
dd2a5ca
Updated
franciscojavierarceo Mar 22, 2024
9ac6793
incrementing protos
franciscojavierarceo Mar 22, 2024
5a1db09
updated tests
franciscojavierarceo Mar 22, 2024
e6bf1e9
fixed linting issue and made backwards compatible
franciscojavierarceo Mar 22, 2024
0daf027
feat: Renaming OnDemandTransformations to Transformations
franciscojavierarceo Mar 24, 2024
9417006
updated proto name
franciscojavierarceo Mar 24, 2024
eff1497
renamed substrait proto
franciscojavierarceo Mar 24, 2024
ae19919
renamed substrait proto
franciscojavierarceo Mar 24, 2024
e34b604
updated
franciscojavierarceo Mar 24, 2024
9cd0ebe
updated
franciscojavierarceo Mar 25, 2024
7b9f180
updated integration test
franciscojavierarceo Mar 25, 2024
19544f4
missed one
franciscojavierarceo Mar 25, 2024
41524c9
updated to include Substrait type
franciscojavierarceo Mar 25, 2024
7de39ab
linter
franciscojavierarceo Mar 25, 2024
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
updated tests
Signed-off-by: Francisco Javier Arceo <franciscojavierarceo@users.noreply.github.com>
  • Loading branch information
franciscojavierarceo committed Mar 24, 2024
commit 5a1db096e95b9cee533147f78e693a36ec253ffb
8 changes: 8 additions & 0 deletions sdk/python/feast/on_demand_feature_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,14 @@ def from_proto(cls, on_demand_feature_view_proto: OnDemandFeatureViewProto):
transformation = OnDemandSubstraitTransformation.from_proto(
on_demand_feature_view_proto.spec.feature_transformation.on_demand_substrait_transformation
)
elif (
hasattr(on_demand_feature_view_proto.spec, "user_defined_function")
and on_demand_feature_view_proto.spec.feature_transformation.user_defined_function.body_text
== ""
):
transformation = OnDemandPandasTransformation.from_proto(
on_demand_feature_view_proto.spec.user_defined_function
)
else:
raise Exception("At least one transformation type needs to be provided")

Expand Down
62 changes: 62 additions & 0 deletions sdk/python/tests/unit/test_on_demand_feature_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,3 +133,65 @@ def test_hash():
on_demand_feature_view_5.feature_transformation
== on_demand_feature_view_5.transformation
)


@pytest.mark.filterwarnings("ignore:udf and udf_string parameters are deprecated")
def test_from_proto_backwards_compatable_udf():
file_source = FileSource(name="my-file-source", path="test.parquet")
feature_view = FeatureView(
name="my-feature-view",
entities=[],
schema=[
Field(name="feature1", dtype=Float32),
Field(name="feature2", dtype=Float32),
],
source=file_source,
)
sources = [feature_view]
on_demand_feature_view = OnDemandFeatureView(
name="my-on-demand-feature-view",
sources=sources,
schema=[
Field(name="output1", dtype=Float32),
Field(name="output2", dtype=Float32),
],
transformation=OnDemandPandasTransformation(
udf=udf1, udf_string="udf1 source code"
),
)

# We need a proto with the "udf1 source code" in the user_defined_function.body_text
# and to populate it in feature_transformation
proto = on_demand_feature_view.to_proto()
assert (
on_demand_feature_view.transformation.udf_string
== proto.spec.feature_transformation.user_defined_function.body_text
)
# Because of the current set of code this is just confirming it is empty
assert proto.spec.user_defined_function.body_text == ""
assert proto.spec.user_defined_function.body == b""
assert proto.spec.user_defined_function.name == ""

# Assuming we pull it from the registry we set it to the feature_transformation proto values
proto.spec.user_defined_function.name = (
proto.spec.feature_transformation.user_defined_function.name
)
proto.spec.user_defined_function.body = (
proto.spec.feature_transformation.user_defined_function.body
)
proto.spec.user_defined_function.body_text = (
proto.spec.feature_transformation.user_defined_function.body_text
)

# And now we're going to null the feature_transformation proto object before reserializing the entire proto
# proto.spec.user_defined_function.body_text = on_demand_feature_view.transformation.udf_string
proto.spec.feature_transformation.user_defined_function.name = ""
proto.spec.feature_transformation.user_defined_function.body = b""
proto.spec.feature_transformation.user_defined_function.body_text = ""

# And now we expect the to get the same object back under feature_transformation
reserialized_proto = OnDemandFeatureView.from_proto(proto)
assert (
reserialized_proto.feature_transformation.udf_string
== on_demand_feature_view.feature_transformation.udf_string
)