def _ingest_test_getfeaturetable_mocked_resp(file_url: str, date_partition_col: str = None): return GetFeatureTableResponse(table=FeatureTableProto( spec=FeatureTableSpecProto( name="ingest_featuretable", max_age=Duration(seconds=3600), features=[ FeatureSpecProto( name="dev_feature_float", value_type=ValueProto.ValueType.FLOAT, ), FeatureSpecProto( name="dev_feature_string", value_type=ValueProto.ValueType.STRING, ), ], entities=["dev_entity"], batch_source=DataSourceProto( file_options=DataSourceProto.FileOptions( file_format=ParquetFormat().to_proto(), file_url=file_url), event_timestamp_column="datetime", created_timestamp_column="timestamp", date_partition_column=date_partition_col if date_partition_col is not None else None, ), ), meta=FeatureTableMetaProto(), ))
def test_list_features(self, test_client, mocker): mocker.patch.object( test_client, "_core_service_stub", return_value=Core.CoreServiceStub(grpc.insecure_channel("")), ) feature1_proto = FeatureSpecProto( name="feature_1", value_type=ValueProto.ValueType.FLOAT) feature2_proto = FeatureSpecProto( name="feature_2", value_type=ValueProto.ValueType.STRING) mocker.patch.object( test_client._core_service_stub, "ListFeatures", return_value=ListFeaturesResponse( features={ "driver_car:feature_1": feature1_proto, "driver_car:feature_2": feature2_proto, }), ) features = test_client.list_features_by_ref(project="test") assert len(features) == 2 native_feature_list = [] for _, feature_proto in features.items(): native_feature_list.append(feature_proto) assert sorted(native_feature_list) == sorted([ Feature.from_proto(feature1_proto), Feature.from_proto(feature2_proto) ])
def to_proto(self) -> FeatureSpecProto: """Converts Feature object to its Protocol Buffer representation""" value_type = ValueTypeProto.ValueType.Enum.Value(self.dtype.name) return FeatureSpecProto( name=self.name, value_type=value_type, labels=self.labels, )