← 返回首页
feat: Make udf optional if agg defined (#5689) by nquinn408 · Pull Request #6328 · feast-dev/feast · GitHub
Skip to content

Navigation Menu

Toggle navigation
Sign in
Appearance settings
Search or jump to...

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Resetting focus
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension .py  (5) .pyi  (9) All 2 file types selected Viewed files
Conversations
Failed to load comments. Retry
Loading
Jump to
Jump to file
Failed to load files. Retry
Loading
Diff view
Unified
Split
Hide whitespace
Apply and reload
Show whitespace
Diff view
Unified
Split
Hide whitespace
Apply and reload
2 changes: 1 addition & 1 deletion sdk/python/feast/entity.py
Show comments View file Edit file Delete file Open in desktop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ def to_proto(self) -> EntityProto:

spec = EntitySpecProto(
name=self.name,
value_type=self.value_type.value,
value_type=self.value_type.value, # type: ignore[arg-type]
join_key=self.join_key,
description=self.description,
tags=self.tags,
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/feast/field.py
Show comments View file Edit file Delete file Open in desktop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ def to_proto(self) -> FieldProto:
tags[NESTED_COLLECTION_INNER_TYPE_TAG] = _feast_type_to_str(self.dtype)
return FieldProto(
name=self.name,
value_type=value_type.value,
value_type=value_type.value, # type: ignore[arg-type]
description=self.description,
tags=tags,
vector_index=self.vector_index,
Expand Down
2 changes: 1 addition & 1 deletion sdk/python/feast/infra/online_stores/remote.py
Show comments View file Edit file Delete file Open in desktop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -501,7 +501,7 @@ def _construct_online_read_api_json_request(
for row in entity_keys:
entity_key = row.join_keys[0]
entity_values.append(
getattr(row.entity_values[0], row.entity_values[0].WhichOneof("val"))
getattr(row.entity_values[0], row.entity_values[0].WhichOneof("val")) # type: ignore[arg-type]
)

return {
Expand Down
13 changes: 13 additions & 0 deletions sdk/python/feast/on_demand_feature_view.py
Show comments View file Edit file Delete file Open in desktop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,10 @@ def _validate_sources_config(self) -> None:

def _validate_transformation_config(self) -> None:
"""Validate transformation configuration."""
# Aggregations provide their own transformation; no udf/feature_transformation required.
if self.aggregations:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment
Suggested change
if self.aggregations:
if self.aggregations and not self.feature_transformation:

to avoid skipping mode validation when both aggregations and a transformation are provided

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment

also, optionally may be good to have check

if self.aggregations and self.feature_transformation: raise ValueError( "Combining aggregations with a udf/feature_transformation is not yet supported. )

return
Comment thread
nquinn408 marked this conversation as resolved.
Show resolved Hide resolved
Comment thread
nquinn408 marked this conversation as resolved.
Show resolved Hide resolved

if not self.feature_transformation:
raise ValueError(ODFVErrorMessages.no_transformation_provided())

Expand Down Expand Up @@ -783,6 +787,8 @@ def _parse_transformation_from_proto(
feature_transformation.substrait_transformation
)
elif transformation_type is None:
if proto.spec.aggregations:
return None
# Handle backward compatibility case where feature_transformation is cleared
return cls._handle_backward_compatible_udf(proto)
else:
Expand Down Expand Up @@ -1113,6 +1119,13 @@ def _preprocess_feature_dict(
return preprocessed_dict, columns_to_cleanup

def infer_features(self) -> None:
if self.aggregations and not self.feature_transformation:
if not self.features:
raise RegistryInferenceFailure(
"OnDemandFeatureView",
f"Could not infer Features for the feature view '{self.name}'.",
)
return
assert self.feature_transformation is not None
random_input = self._construct_random_input(singleton=self.singleton)
inferred_features = self.feature_transformation.infer_features(
Expand Down
10 changes: 5 additions & 5 deletions sdk/python/feast/protos/feast/core/DataSource_pb2.pyi
Show comments View file Edit file Delete file Open in desktop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import builtins
import collections.abc
import feast.core.DataFormat_pb2
import feast.core.Feature_pb2
import feast.types.Value_pb2
from feast.protos.feast.types import Value_pb2 as _feast_types_Value_pb2
import google.protobuf.descriptor
import google.protobuf.duration_pb2
import google.protobuf.internal.containers
Expand Down Expand Up @@ -424,26 +424,26 @@ class DataSource(google.protobuf.message.Message):
KEY_FIELD_NUMBER: builtins.int
VALUE_FIELD_NUMBER: builtins.int
key: builtins.str
value: feast.types.Value_pb2.ValueType.Enum.ValueType
value: _feast_types_Value_pb2.ValueType.Enum.ValueType
def __init__(
self,
*,
key: builtins.str = ...,
value: feast.types.Value_pb2.ValueType.Enum.ValueType = ...,
value: _feast_types_Value_pb2.ValueType.Enum.ValueType = ...,
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

DEPRECATED_SCHEMA_FIELD_NUMBER: builtins.int
SCHEMA_FIELD_NUMBER: builtins.int
@property
def deprecated_schema(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, feast.types.Value_pb2.ValueType.Enum.ValueType]:
def deprecated_schema(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, _feast_types_Value_pb2.ValueType.Enum.ValueType]:
"""Mapping of feature name to type"""
@property
def schema(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Feature_pb2.FeatureSpecV2]: ...
def __init__(
self,
*,
deprecated_schema: collections.abc.Mapping[builtins.str, feast.types.Value_pb2.ValueType.Enum.ValueType] | None = ...,
deprecated_schema: collections.abc.Mapping[builtins.str, _feast_types_Value_pb2.ValueType.Enum.ValueType] | None = ...,
schema: collections.abc.Iterable[feast.core.Feature_pb2.FeatureSpecV2] | None = ...,
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["deprecated_schema", b"deprecated_schema", "schema", b"schema"]) -> None: ...
Expand Down
6 changes: 3 additions & 3 deletions sdk/python/feast/protos/feast/core/Entity_pb2.pyi
Show comments View file Edit file Delete file Open in desktop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ isort:skip_file
"""
import builtins
import collections.abc
import feast.types.Value_pb2
from feast.protos.feast.types import Value_pb2 as _feast_types_Value_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
Expand Down Expand Up @@ -83,7 +83,7 @@ class EntitySpecV2(google.protobuf.message.Message):
"""Name of the entity."""
project: builtins.str
"""Name of Feast project that this feature table belongs to."""
value_type: feast.types.Value_pb2.ValueType.Enum.ValueType
value_type: _feast_types_Value_pb2.ValueType.Enum.ValueType
"""Type of the entity."""
description: builtins.str
"""Description of the entity."""
Expand All @@ -99,7 +99,7 @@ class EntitySpecV2(google.protobuf.message.Message):
*,
name: builtins.str = ...,
project: builtins.str = ...,
value_type: feast.types.Value_pb2.ValueType.Enum.ValueType = ...,
value_type: _feast_types_Value_pb2.ValueType.Enum.ValueType = ...,
description: builtins.str = ...,
join_key: builtins.str = ...,
tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
Expand Down
6 changes: 3 additions & 3 deletions sdk/python/feast/protos/feast/core/Feature_pb2.pyi
Show comments View file Edit file Delete file Open in desktop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ limitations under the License.
"""
import builtins
import collections.abc
import feast.types.Value_pb2
from feast.protos.feast.types import Value_pb2 as _feast_types_Value_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
Expand Down Expand Up @@ -58,7 +58,7 @@ class FeatureSpecV2(google.protobuf.message.Message):
VECTOR_LENGTH_FIELD_NUMBER: builtins.int
name: builtins.str
"""Name of the feature. Not updatable."""
value_type: feast.types.Value_pb2.ValueType.Enum.ValueType
value_type: _feast_types_Value_pb2.ValueType.Enum.ValueType
"""Value type of the feature. Not updatable."""
@property
def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
Expand All @@ -75,7 +75,7 @@ class FeatureSpecV2(google.protobuf.message.Message):
self,
*,
name: builtins.str = ...,
value_type: feast.types.Value_pb2.ValueType.Enum.ValueType = ...,
value_type: _feast_types_Value_pb2.ValueType.Enum.ValueType = ...,
tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
description: builtins.str = ...,
vector_index: builtins.bool = ...,
Expand Down
6 changes: 3 additions & 3 deletions sdk/python/feast/protos/feast/serving/Connector_pb2.pyi
Show comments View file Edit file Delete file Open in desktop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import builtins
import collections.abc
import feast.serving.ServingService_pb2
import feast.types.EntityKey_pb2
import feast.types.Value_pb2
from feast.protos.feast.types import Value_pb2 as _feast_types_Value_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
Expand All @@ -31,13 +31,13 @@ class ConnectorFeature(google.protobuf.message.Message):
@property
def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
@property
def value(self) -> feast.types.Value_pb2.Value: ...
def value(self) -> _feast_types_Value_pb2.Value: ...
def __init__(
self,
*,
reference: feast.serving.ServingService_pb2.FeatureReferenceV2 | None = ...,
timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
value: feast.types.Value_pb2.Value | None = ...,
value: _feast_types_Value_pb2.Value | None = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["reference", b"reference", "timestamp", b"timestamp", "value", b"value"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["reference", b"reference", "timestamp", b"timestamp", "value", b"value"]) -> None: ...
Expand Down
18 changes: 9 additions & 9 deletions sdk/python/feast/protos/feast/serving/GrpcServer_pb2.pyi
Show comments View file Edit file Delete file Open in desktop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ isort:skip_file
"""
import builtins
import collections.abc
import feast.types.Value_pb2
from feast.protos.feast.types import Value_pb2 as _feast_types_Value_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
Expand Down Expand Up @@ -42,12 +42,12 @@ class PushRequest(google.protobuf.message.Message):
VALUE_FIELD_NUMBER: builtins.int
key: builtins.str
@property
def value(self) -> feast.types.Value_pb2.Value: ...
def value(self) -> _feast_types_Value_pb2.Value: ...
def __init__(
self,
*,
key: builtins.str = ...,
value: feast.types.Value_pb2.Value | None = ...,
value: _feast_types_Value_pb2.Value | None = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...
Expand All @@ -63,15 +63,15 @@ class PushRequest(google.protobuf.message.Message):
allow_registry_cache: builtins.bool
to: builtins.str
@property
def typed_features(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, feast.types.Value_pb2.Value]: ...
def typed_features(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, _feast_types_Value_pb2.Value]: ...
def __init__(
self,
*,
features: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
stream_feature_view: builtins.str = ...,
allow_registry_cache: builtins.bool = ...,
to: builtins.str = ...,
typed_features: collections.abc.Mapping[builtins.str, feast.types.Value_pb2.Value] | None = ...,
typed_features: collections.abc.Mapping[builtins.str, _feast_types_Value_pb2.Value] | None = ...,
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["allow_registry_cache", b"allow_registry_cache", "features", b"features", "stream_feature_view", b"stream_feature_view", "to", b"to", "typed_features", b"typed_features"]) -> None: ...

Expand Down Expand Up @@ -116,12 +116,12 @@ class WriteToOnlineStoreRequest(google.protobuf.message.Message):
VALUE_FIELD_NUMBER: builtins.int
key: builtins.str
@property
def value(self) -> feast.types.Value_pb2.Value: ...
def value(self) -> _feast_types_Value_pb2.Value: ...
def __init__(
self,
*,
key: builtins.str = ...,
value: feast.types.Value_pb2.Value | None = ...,
value: _feast_types_Value_pb2.Value | None = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...
Expand All @@ -135,14 +135,14 @@ class WriteToOnlineStoreRequest(google.protobuf.message.Message):
feature_view_name: builtins.str
allow_registry_cache: builtins.bool
@property
def typed_features(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, feast.types.Value_pb2.Value]: ...
def typed_features(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, _feast_types_Value_pb2.Value]: ...
def __init__(
self,
*,
features: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
feature_view_name: builtins.str = ...,
allow_registry_cache: builtins.bool = ...,
typed_features: collections.abc.Mapping[builtins.str, feast.types.Value_pb2.Value] | None = ...,
typed_features: collections.abc.Mapping[builtins.str, _feast_types_Value_pb2.Value] | None = ...,
) -> None: ...
def ClearField(self, field_name: typing_extensions.Literal["allow_registry_cache", b"allow_registry_cache", "feature_view_name", b"feature_view_name", "features", b"features", "typed_features", b"typed_features"]) -> None: ...

Expand Down
30 changes: 15 additions & 15 deletions sdk/python/feast/protos/feast/serving/ServingService_pb2.pyi
Show comments View file Edit file Delete file Open in desktop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ limitations under the License.
"""
import builtins
import collections.abc
import feast.types.Value_pb2
from feast.protos.feast.types import Value_pb2 as _feast_types_Value_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
Expand Down Expand Up @@ -137,12 +137,12 @@ class GetOnlineFeaturesRequestV2(google.protobuf.message.Message):
VALUE_FIELD_NUMBER: builtins.int
key: builtins.str
@property
def value(self) -> feast.types.Value_pb2.Value: ...
def value(self) -> _feast_types_Value_pb2.Value: ...
def __init__(
self,
*,
key: builtins.str = ...,
value: feast.types.Value_pb2.Value | None = ...,
value: _feast_types_Value_pb2.Value | None = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...
Expand All @@ -155,13 +155,13 @@ class GetOnlineFeaturesRequestV2(google.protobuf.message.Message):
together with maxAge, to determine feature staleness.
"""
@property
def fields(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, feast.types.Value_pb2.Value]:
def fields(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, _feast_types_Value_pb2.Value]:
"""Map containing mapping of entity name to entity value."""
def __init__(
self,
*,
timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
fields: collections.abc.Mapping[builtins.str, feast.types.Value_pb2.Value] | None = ...,
fields: collections.abc.Mapping[builtins.str, _feast_types_Value_pb2.Value] | None = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["timestamp", b"timestamp"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["fields", b"fields", "timestamp", b"timestamp"]) -> None: ...
Expand Down Expand Up @@ -221,12 +221,12 @@ class GetOnlineFeaturesRequest(google.protobuf.message.Message):
VALUE_FIELD_NUMBER: builtins.int
key: builtins.str
@property
def value(self) -> feast.types.Value_pb2.RepeatedValue: ...
def value(self) -> _feast_types_Value_pb2.RepeatedValue: ...
def __init__(
self,
*,
key: builtins.str = ...,
value: feast.types.Value_pb2.RepeatedValue | None = ...,
value: _feast_types_Value_pb2.RepeatedValue | None = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...
Expand All @@ -238,12 +238,12 @@ class GetOnlineFeaturesRequest(google.protobuf.message.Message):
VALUE_FIELD_NUMBER: builtins.int
key: builtins.str
@property
def value(self) -> feast.types.Value_pb2.RepeatedValue: ...
def value(self) -> _feast_types_Value_pb2.RepeatedValue: ...
def __init__(
self,
*,
key: builtins.str = ...,
value: feast.types.Value_pb2.RepeatedValue | None = ...,
value: _feast_types_Value_pb2.RepeatedValue | None = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...
Expand All @@ -258,13 +258,13 @@ class GetOnlineFeaturesRequest(google.protobuf.message.Message):
@property
def features(self) -> global___FeatureList: ...
@property
def entities(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, feast.types.Value_pb2.RepeatedValue]:
def entities(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, _feast_types_Value_pb2.RepeatedValue]:
"""The entity data is specified in a columnar format
A map of entity name -> list of values
"""
full_feature_names: builtins.bool
@property
def request_context(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, feast.types.Value_pb2.RepeatedValue]:
def request_context(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, _feast_types_Value_pb2.RepeatedValue]:
"""Context for OnDemand Feature Transformation
(was moved to dedicated parameter to avoid unnecessary separation logic on serving side)
A map of variable name -> list of values
Expand All @@ -276,9 +276,9 @@ class GetOnlineFeaturesRequest(google.protobuf.message.Message):
*,
feature_service: builtins.str = ...,
features: global___FeatureList | None = ...,
entities: collections.abc.Mapping[builtins.str, feast.types.Value_pb2.RepeatedValue] | None = ...,
entities: collections.abc.Mapping[builtins.str, _feast_types_Value_pb2.RepeatedValue] | None = ...,
full_feature_names: builtins.bool = ...,
request_context: collections.abc.Mapping[builtins.str, feast.types.Value_pb2.RepeatedValue] | None = ...,
request_context: collections.abc.Mapping[builtins.str, _feast_types_Value_pb2.RepeatedValue] | None = ...,
include_feature_view_version_metadata: builtins.bool = ...,
) -> None: ...
def HasField(self, field_name: typing_extensions.Literal["feature_service", b"feature_service", "features", b"features", "kind", b"kind"]) -> builtins.bool: ...
Expand All @@ -297,15 +297,15 @@ class GetOnlineFeaturesResponse(google.protobuf.message.Message):
STATUSES_FIELD_NUMBER: builtins.int
EVENT_TIMESTAMPS_FIELD_NUMBER: builtins.int
@property
def values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.types.Value_pb2.Value]: ...
def values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[_feast_types_Value_pb2.Value]: ...
@property
def statuses(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___FieldStatus.ValueType]: ...
@property
def event_timestamps(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[google.protobuf.timestamp_pb2.Timestamp]: ...
def __init__(
self,
*,
values: collections.abc.Iterable[feast.types.Value_pb2.Value] | None = ...,
values: collections.abc.Iterable[_feast_types_Value_pb2.Value] | None = ...,
statuses: collections.abc.Iterable[global___FieldStatus.ValueType] | None = ...,
event_timestamps: collections.abc.Iterable[google.protobuf.timestamp_pb2.Timestamp] | None = ...,
) -> None: ...
Expand Down
Loading
Loading
Toggle all file notes Toggle all file annotations

Footer

© 2026 GitHub, Inc.