diff --git a/.dockerignore b/.dockerignore
index e9401f0cc9e..0e3b22687d0 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,2 +1,3 @@
docs
+!docs/coverage
charts
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5c9db512dd4..b4766d27753 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,20 @@
# Changelog
+## [v0.3.8](https://github.com/feast-dev/feast/tree/v0.3.8) (2020-06-10)
+
+[Full Changelog](https://github.com/feast-dev/feast/compare/v0.3.7...v0.3.8)
+
+**Implemented enhancements:**
+
+- v0.3 backport: Add feature and feature set labels [\#737](https://github.com/feast-dev/feast/pull/737) ([ches](https://github.com/ches))
+
+**Merged pull requests:**
+
+- v0.3 backport: Add Java coverage reporting [\#734](https://github.com/feast-dev/feast/pull/734) ([ches](https://github.com/ches))
+
## [v0.3.7](https://github.com/gojek/feast/tree/v0.3.7) (2020-05-01)
-[Full Changelog](https://github.com/gojek/feast/compare/v0.4.7...v0.3.7)
+[Full Changelog](https://github.com/gojek/feast/compare/v0.3.6...v0.3.7)
**Merged pull requests:**
@@ -15,7 +27,7 @@
[Full Changelog](https://github.com/gojek/feast/compare/v0.3.5...v0.3.6)
-- Add support for file paths for providing entity rows during batch retrieval [\#375](https://github.com/gojek/feast/pull/376) ([voonhous](https://github.com/voonhous))
+- Add support for file paths for providing entity rows during batch retrieval [\#375](https://github.com/gojek/feast/pull/375) ([voonhous](https://github.com/voonhous))
## [v0.3.5](https://github.com/gojek/feast/tree/v0.3.5) (2019-12-26)
diff --git a/Makefile b/Makefile
index 9f0742b2e6c..2994af900ab 100644
--- a/Makefile
+++ b/Makefile
@@ -31,6 +31,9 @@ build-cli:
$(MAKE) build-proto
$(MAKE) -C cli build-all
+test-java-with-coverage:
+ mvn test jacoco:report-aggregate
+
build-java:
mvn clean verify
@@ -48,4 +51,4 @@ clean-html:
build-html:
mkdir -p $(PROJECT_ROOT)/dist/python
- cp -r $(PROJECT_ROOT)/sdk/python/docs/html/* $(PROJECT_ROOT)/dist/python
\ No newline at end of file
+ cp -r $(PROJECT_ROOT)/sdk/python/docs/html/* $(PROJECT_ROOT)/dist/python
diff --git a/core/pom.xml b/core/pom.xml
index b56f74dea2e..6a1a20622f0 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -32,6 +32,11 @@
+
+ org.jacoco
+ jacoco-maven-plugin
+
+
org.springframework.boot
spring-boot-maven-plugin
@@ -183,7 +188,6 @@
org.mockito
mockito-core
- 2.23.0
test
diff --git a/core/src/main/java/feast/core/model/FeatureSet.java b/core/src/main/java/feast/core/model/FeatureSet.java
index 755ef687e32..6a6a7d91367 100644
--- a/core/src/main/java/feast/core/model/FeatureSet.java
+++ b/core/src/main/java/feast/core/model/FeatureSet.java
@@ -21,6 +21,7 @@
import feast.core.FeatureSetProto.EntitySpec;
import feast.core.FeatureSetProto.FeatureSetSpec;
import feast.core.FeatureSetProto.FeatureSpec;
+import feast.core.util.TypeConversion;
import feast.types.ValueProto.ValueType;
import java.util.ArrayList;
import java.util.HashMap;
@@ -79,6 +80,10 @@ public class FeatureSet extends AbstractTimestampEntity implements Comparable entities,
List features,
- Source source) {
+ Source source,
+ Map labels) {
this.id = String.format("%s:%s", name, version);
this.name = name;
this.version = version;
@@ -97,6 +103,7 @@ public FeatureSet(
this.entities = entities;
this.features = features;
this.source = source;
+ this.labels = TypeConversion.convertMapToJsonString(labels);
}
public static FeatureSet fromProto(FeatureSetSpec featureSetSpec) {
@@ -104,7 +111,8 @@ public static FeatureSet fromProto(FeatureSetSpec featureSetSpec) {
String id = String.format("%s:%d", featureSetSpec.getName(), featureSetSpec.getVersion());
List features = new ArrayList<>();
for (FeatureSpec feature : featureSetSpec.getFeaturesList()) {
- features.add(new Field(id, feature.getName(), feature.getValueType()));
+ features.add(
+ new Field(id, feature.getName(), feature.getValueType(), feature.getLabelsMap()));
}
List entities = new ArrayList<>();
for (EntitySpec entity : featureSetSpec.getEntitiesList()) {
@@ -117,7 +125,8 @@ public static FeatureSet fromProto(FeatureSetSpec featureSetSpec) {
featureSetSpec.getMaxAge().getSeconds(),
entities,
features,
- source);
+ source,
+ featureSetSpec.getLabelsMap());
}
public FeatureSetSpec toProto() throws InvalidProtocolBufferException {
@@ -136,6 +145,7 @@ public FeatureSetSpec toProto() throws InvalidProtocolBufferException {
FeatureSpec.newBuilder()
.setName(feature.getName())
.setValueType(ValueType.Enum.valueOf(feature.getType()))
+ .putAllLabels(feature.getLabels())
.build());
}
return FeatureSetSpec.newBuilder()
@@ -145,6 +155,7 @@ public FeatureSetSpec toProto() throws InvalidProtocolBufferException {
.addAllEntities(entitySpecs)
.addAllFeatures(featureSpecs)
.setSource(source.toProto())
+ .putAllLabels(TypeConversion.convertJsonStringToMap(labels))
.build();
}
@@ -209,4 +220,17 @@ public boolean equalTo(FeatureSet other) {
public int compareTo(FeatureSet o) {
return Integer.compare(version, o.version);
}
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof FeatureSet)) {
+ return false;
+ }
+ FeatureSet other = (FeatureSet) obj;
+
+ return this.equalTo(other) && labels.equals(other.labels);
+ }
}
diff --git a/core/src/main/java/feast/core/model/Field.java b/core/src/main/java/feast/core/model/Field.java
index 3eaeb93e27a..5c031513d38 100644
--- a/core/src/main/java/feast/core/model/Field.java
+++ b/core/src/main/java/feast/core/model/Field.java
@@ -16,7 +16,9 @@
*/
package feast.core.model;
+import feast.core.util.TypeConversion;
import feast.types.ValueProto.ValueType;
+import java.util.Map;
import java.util.Objects;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -52,11 +54,15 @@ public class Field {
@Column(name = "type", nullable = false)
private String type;
+ // Labels that this field belongs to
+ @Column(name = "labels", columnDefinition = "text")
+ private String labels;
+
public Field() {
super();
}
- public Field(String featureSetId, String name, ValueType.Enum type) {
+ public Field(String featureSetId, String name, ValueType.Enum type, Map labels) {
// TODO: Remove all mention of feature sets inside of this class!
FeatureSet featureSet = new FeatureSet();
featureSet.setId(featureSetId);
@@ -64,6 +70,15 @@ public Field(String featureSetId, String name, ValueType.Enum type) {
this.id = String.format("%s:%s", featureSetId, name);
this.name = name;
this.type = type.toString();
+ this.labels = TypeConversion.convertMapToJsonString(labels);
+ }
+
+ public Field(String featureSetId, String name, ValueType.Enum type) {
+ this(featureSetId, name, type, null);
+ }
+
+ public Map getLabels() {
+ return TypeConversion.convertJsonStringToMap(this.labels);
}
@Override
@@ -75,11 +90,13 @@ public boolean equals(Object o) {
return false;
}
Field field = (Field) o;
- return name.equals(field.getName()) && type.equals(field.getType());
+ return name.equals(field.getName())
+ && type.equals(field.getType())
+ && labels.equals(field.labels);
}
@Override
public int hashCode() {
- return Objects.hash(super.hashCode(), id, featureSet, name, type);
+ return Objects.hash(super.hashCode(), id, featureSet, name, type, labels);
}
}
diff --git a/core/src/main/java/feast/core/util/TypeConversion.java b/core/src/main/java/feast/core/util/TypeConversion.java
index 5fe69819476..226c8a114a3 100644
--- a/core/src/main/java/feast/core/util/TypeConversion.java
+++ b/core/src/main/java/feast/core/util/TypeConversion.java
@@ -69,9 +69,6 @@ public static Map convertJsonStringToMap(String jsonString) {
* @return json string corresponding to given map
*/
public static String convertMapToJsonString(Map map) {
- if (map.isEmpty()) {
- return "{}";
- }
return gson.toJson(map);
}
diff --git a/core/src/main/java/feast/core/validators/FeatureSetValidator.java b/core/src/main/java/feast/core/validators/FeatureSetValidator.java
index e14fde72cb7..a6fa4f47c5a 100644
--- a/core/src/main/java/feast/core/validators/FeatureSetValidator.java
+++ b/core/src/main/java/feast/core/validators/FeatureSetValidator.java
@@ -28,6 +28,9 @@
public class FeatureSetValidator {
public static void validateSpec(FeatureSetSpec featureSetSpec) {
+ if (featureSetSpec.getLabelsMap().containsKey("")) {
+ throw new IllegalArgumentException("Feature set label keys must not be empty");
+ }
checkValidCharacters(featureSetSpec.getName(), "name");
checkUniqueColumns(featureSetSpec.getEntitiesList(), featureSetSpec.getFeaturesList());
for (EntitySpec entitySpec : featureSetSpec.getEntitiesList()) {
@@ -35,6 +38,9 @@ public static void validateSpec(FeatureSetSpec featureSetSpec) {
}
for (FeatureSpec featureSpec : featureSetSpec.getFeaturesList()) {
checkValidCharacters(featureSpec.getName(), "features::name");
+ if (featureSpec.getLabelsMap().containsKey("")) {
+ throw new IllegalArgumentException("Feature label keys must not be empty");
+ }
}
}
diff --git a/core/src/test/java/feast/core/service/SpecServiceTest.java b/core/src/test/java/feast/core/service/SpecServiceTest.java
index 6d112676350..6dbe940e0c5 100644
--- a/core/src/test/java/feast/core/service/SpecServiceTest.java
+++ b/core/src/test/java/feast/core/service/SpecServiceTest.java
@@ -36,10 +36,9 @@
import feast.core.CoreServiceProto.UpdateStoreRequest;
import feast.core.CoreServiceProto.UpdateStoreResponse;
import feast.core.FeatureSetProto;
+import feast.core.FeatureSetProto.EntitySpec;
import feast.core.FeatureSetProto.FeatureSetSpec;
import feast.core.FeatureSetProto.FeatureSpec;
-import feast.core.SourceProto.KafkaSourceConfig;
-import feast.core.SourceProto.SourceType;
import feast.core.StoreProto;
import feast.core.StoreProto.Store.RedisConfig;
import feast.core.StoreProto.Store.StoreType;
@@ -53,10 +52,7 @@
import feast.core.model.Store;
import feast.types.ValueProto.ValueType.Enum;
import io.grpc.StatusRuntimeException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
import java.util.stream.Collectors;
import org.junit.Before;
import org.junit.Rule;
@@ -82,26 +78,18 @@ public class SpecServiceTest {
@Before
public void setUp() {
initMocks(this);
- defaultSource =
- new Source(
- SourceType.KAFKA,
- KafkaSourceConfig.newBuilder()
- .setBootstrapServers("kafka:9092")
- .setTopic("my-topic")
- .build(),
- true);
+ defaultSource = TestObjectFactory.defaultSource;
FeatureSet featureSet1v1 = newDummyFeatureSet("f1", 1);
FeatureSet featureSet1v2 = newDummyFeatureSet("f1", 2);
FeatureSet featureSet1v3 = newDummyFeatureSet("f1", 3);
FeatureSet featureSet2v1 = newDummyFeatureSet("f2", 1);
- Field f3f1 = new Field("f3", "f3f1", Enum.INT64);
- Field f3f2 = new Field("f3", "f3f2", Enum.INT64);
- Field f3e1 = new Field("f3", "f3e1", Enum.STRING);
+ Field f3f1 = TestObjectFactory.CreateFeatureField("f3", "f3f1", Enum.INT64);
+ Field f3f2 = TestObjectFactory.CreateFeatureField("f3", "f3f2", Enum.INT64);
+ Field f3e1 = TestObjectFactory.CreateEntityField("f3", "f3e1", Enum.STRING);
FeatureSet featureSet3v1 =
- new FeatureSet(
- "f3", 1, 100L, Arrays.asList(f3e1), Arrays.asList(f3f2, f3f1), defaultSource);
+ TestObjectFactory.CreateFeatureSet("f3", 1, Arrays.asList(f3e1), Arrays.asList(f3f2, f3f1));
featureSets =
Arrays.asList(featureSet1v1, featureSet1v2, featureSet1v3, featureSet2v1, featureSet3v1);
@@ -349,12 +337,12 @@ public void applyFeatureSetShouldIncrementFeatureSetVersionIfAlreadyExists()
public void applyFeatureSetShouldNotCreateFeatureSetIfFieldsUnordered()
throws InvalidProtocolBufferException {
- Field f3f1 = new Field("f3", "f3f1", Enum.INT64);
- Field f3f2 = new Field("f3", "f3f2", Enum.INT64);
- Field f3e1 = new Field("f3", "f3e1", Enum.STRING);
+ Field f3f1 = TestObjectFactory.CreateFeatureField("f3", "f3f1", Enum.INT64);
+ Field f3f2 = TestObjectFactory.CreateFeatureField("f3", "f3f2", Enum.INT64);
+ Field f3e1 = TestObjectFactory.CreateEntityField("f3", "f3e1", Enum.STRING);
FeatureSetProto.FeatureSetSpec incomingFeatureSet =
- (new FeatureSet(
- "f3", 5, 100L, Arrays.asList(f3e1), Arrays.asList(f3f2, f3f1), defaultSource))
+ (TestObjectFactory.CreateFeatureSet(
+ "f3", 5, Arrays.asList(f3e1), Arrays.asList(f3f2, f3f1)))
.toProto();
FeatureSetSpec expected = incomingFeatureSet;
@@ -367,6 +355,100 @@ public void applyFeatureSetShouldNotCreateFeatureSetIfFieldsUnordered()
assertThat(applyFeatureSetResponse.getFeatureSet().getName(), equalTo(expected.getName()));
}
+ @Test
+ public void applyFeatureSetShouldAcceptFeatureLabels() throws InvalidProtocolBufferException {
+ List entitySpecs = new ArrayList<>();
+ entitySpecs.add(
+ FeatureSetProto.EntitySpec.newBuilder()
+ .setName("entity1")
+ .setValueType(Enum.INT64)
+ .build());
+
+ Map featureLabels0 =
+ new HashMap() {
+ {
+ put("label1", "feast1");
+ }
+ };
+
+ Map featureLabels1 =
+ new HashMap() {
+ {
+ put("label1", "feast1");
+ put("label2", "feast2");
+ }
+ };
+
+ List
+
+
+ org.jacoco
+ jacoco-maven-plugin
+
diff --git a/pom.xml b/pom.xml
index e352aff2ad7..f9e7ede68c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,10 +33,11 @@
core
serving
sdk/java
+ docs/coverage/java
- 0.3.7
+ 0.3.8
https://github.com/gojek/feast
UTF-8
@@ -432,9 +433,9 @@
org.apache.maven.plugins
maven-surefire-plugin
- 2.22.1
+ 3.0.0-M4
- -Xms2048m -Xmx2048m -Djdk.net.URLClassPath.disableClassPathURLCheck=true
+ @{argLine} -Xms2048m -Xmx2048m -Djdk.net.URLClassPath.disableClassPathURLCheck=true
IntegrationTest
@@ -556,6 +557,18 @@
false
+
+ org.jacoco
+ jacoco-maven-plugin
+ 0.8.5
+
+
+
+ prepare-agent
+
+
+
+
org.springframework.boot
spring-boot-maven-plugin
diff --git a/protos/feast/core/FeatureSet.proto b/protos/feast/core/FeatureSet.proto
index a80ae36f088..9300020a3d0 100644
--- a/protos/feast/core/FeatureSet.proto
+++ b/protos/feast/core/FeatureSet.proto
@@ -42,14 +42,17 @@ message FeatureSetSpec {
// List of features contained within this featureSet.
repeated FeatureSpec features = 4;
- // Features in this feature set will only be retrieved if they are found
- // after [time - max_age]. Missing or older feature values will be returned
+ // Features in this feature set will only be retrieved if they are found
+ // after [time - max_age]. Missing or older feature values will be returned
// as nulls and indicated to end user
google.protobuf.Duration max_age = 5;
// Optional. Source on which feature rows can be found.
// If not set, source will be set to the default value configured in Feast Core.
Source source = 6;
+
+ // User defined metadata
+ map labels = 8;
}
message EntitySpec {
@@ -66,4 +69,11 @@ message FeatureSpec {
// Value type of the feature.
feast.types.ValueType.Enum value_type = 2;
+
+ // Reserve field numbers 15 and below for fields that will almost always be set
+ // https://developers.google.com/protocol-buffers/docs/proto3#assigning-field-numbers
+ reserved 3 to 15;
+
+ // Labels for user defined metadata on a feature
+ map labels = 16;
}
diff --git a/sdk/java/pom.xml b/sdk/java/pom.xml
index e8a82a485fc..75d82edcc01 100644
--- a/sdk/java/pom.xml
+++ b/sdk/java/pom.xml
@@ -94,12 +94,8 @@
- maven-surefire-plugin
- 2.22.2
-
-
- maven-failsafe-plugin
- 2.22.2
+ org.jacoco
+ jacoco-maven-plugin
diff --git a/sdk/python/feast/core/CoreService_pb2.py b/sdk/python/feast/core/CoreService_pb2.py
index 69a5498d879..c7c288414cd 100644
--- a/sdk/python/feast/core/CoreService_pb2.py
+++ b/sdk/python/feast/core/CoreService_pb2.py
@@ -2,8 +2,6 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: feast/core/CoreService.proto
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -21,8 +19,8 @@
name='feast/core/CoreService.proto',
package='feast.core',
syntax='proto3',
- serialized_options=_b('\n\nfeast.coreB\020CoreServiceProtoZ/github.com/gojek/feast/sdk/go/protos/feast/core'),
- serialized_pb=_b('\n\x1c\x66\x65\x61st/core/CoreService.proto\x12\nfeast.core\x1a\x1b\x66\x65\x61st/core/FeatureSet.proto\x1a\x16\x66\x65\x61st/core/Store.proto\"5\n\x14GetFeatureSetRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\"H\n\x15GetFeatureSetResponse\x12/\n\x0b\x66\x65\x61ture_set\x18\x01 \x01(\x0b\x32\x1a.feast.core.FeatureSetSpec\"\x94\x01\n\x16ListFeatureSetsRequest\x12\x39\n\x06\x66ilter\x18\x01 \x01(\x0b\x32).feast.core.ListFeatureSetsRequest.Filter\x1a?\n\x06\x46ilter\x12\x18\n\x10\x66\x65\x61ture_set_name\x18\x01 \x01(\t\x12\x1b\n\x13\x66\x65\x61ture_set_version\x18\x02 \x01(\t\"K\n\x17ListFeatureSetsResponse\x12\x30\n\x0c\x66\x65\x61ture_sets\x18\x01 \x03(\x0b\x32\x1a.feast.core.FeatureSetSpec\"a\n\x11ListStoresRequest\x12\x34\n\x06\x66ilter\x18\x01 \x01(\x0b\x32$.feast.core.ListStoresRequest.Filter\x1a\x16\n\x06\x46ilter\x12\x0c\n\x04name\x18\x01 \x01(\t\"6\n\x12ListStoresResponse\x12 \n\x05store\x18\x01 \x03(\x0b\x32\x11.feast.core.Store\"I\n\x16\x41pplyFeatureSetRequest\x12/\n\x0b\x66\x65\x61ture_set\x18\x01 \x01(\x0b\x32\x1a.feast.core.FeatureSetSpec\"\xb7\x01\n\x17\x41pplyFeatureSetResponse\x12/\n\x0b\x66\x65\x61ture_set\x18\x01 \x01(\x0b\x32\x1a.feast.core.FeatureSetSpec\x12:\n\x06status\x18\x02 \x01(\x0e\x32*.feast.core.ApplyFeatureSetResponse.Status\"/\n\x06Status\x12\r\n\tNO_CHANGE\x10\x00\x12\x0b\n\x07\x43REATED\x10\x01\x12\t\n\x05\x45RROR\x10\x02\"\x1c\n\x1aGetFeastCoreVersionRequest\".\n\x1bGetFeastCoreVersionResponse\x12\x0f\n\x07version\x18\x01 \x01(\t\"6\n\x12UpdateStoreRequest\x12 \n\x05store\x18\x01 \x01(\x0b\x32\x11.feast.core.Store\"\x95\x01\n\x13UpdateStoreResponse\x12 \n\x05store\x18\x01 \x01(\x0b\x32\x11.feast.core.Store\x12\x36\n\x06status\x18\x02 \x01(\x0e\x32&.feast.core.UpdateStoreResponse.Status\"$\n\x06Status\x12\r\n\tNO_CHANGE\x10\x00\x12\x0b\n\x07UPDATED\x10\x01\x32\xa0\x04\n\x0b\x43oreService\x12\x66\n\x13GetFeastCoreVersion\x12&.feast.core.GetFeastCoreVersionRequest\x1a\'.feast.core.GetFeastCoreVersionResponse\x12T\n\rGetFeatureSet\x12 .feast.core.GetFeatureSetRequest\x1a!.feast.core.GetFeatureSetResponse\x12Z\n\x0fListFeatureSets\x12\".feast.core.ListFeatureSetsRequest\x1a#.feast.core.ListFeatureSetsResponse\x12K\n\nListStores\x12\x1d.feast.core.ListStoresRequest\x1a\x1e.feast.core.ListStoresResponse\x12Z\n\x0f\x41pplyFeatureSet\x12\".feast.core.ApplyFeatureSetRequest\x1a#.feast.core.ApplyFeatureSetResponse\x12N\n\x0bUpdateStore\x12\x1e.feast.core.UpdateStoreRequest\x1a\x1f.feast.core.UpdateStoreResponseBO\n\nfeast.coreB\x10\x43oreServiceProtoZ/github.com/gojek/feast/sdk/go/protos/feast/coreb\x06proto3')
+ serialized_options=b'\n\nfeast.coreB\020CoreServiceProtoZ/github.com/gojek/feast/sdk/go/protos/feast/core',
+ serialized_pb=b'\n\x1c\x66\x65\x61st/core/CoreService.proto\x12\nfeast.core\x1a\x1b\x66\x65\x61st/core/FeatureSet.proto\x1a\x16\x66\x65\x61st/core/Store.proto\"5\n\x14GetFeatureSetRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\"H\n\x15GetFeatureSetResponse\x12/\n\x0b\x66\x65\x61ture_set\x18\x01 \x01(\x0b\x32\x1a.feast.core.FeatureSetSpec\"\x94\x01\n\x16ListFeatureSetsRequest\x12\x39\n\x06\x66ilter\x18\x01 \x01(\x0b\x32).feast.core.ListFeatureSetsRequest.Filter\x1a?\n\x06\x46ilter\x12\x18\n\x10\x66\x65\x61ture_set_name\x18\x01 \x01(\t\x12\x1b\n\x13\x66\x65\x61ture_set_version\x18\x02 \x01(\t\"K\n\x17ListFeatureSetsResponse\x12\x30\n\x0c\x66\x65\x61ture_sets\x18\x01 \x03(\x0b\x32\x1a.feast.core.FeatureSetSpec\"a\n\x11ListStoresRequest\x12\x34\n\x06\x66ilter\x18\x01 \x01(\x0b\x32$.feast.core.ListStoresRequest.Filter\x1a\x16\n\x06\x46ilter\x12\x0c\n\x04name\x18\x01 \x01(\t\"6\n\x12ListStoresResponse\x12 \n\x05store\x18\x01 \x03(\x0b\x32\x11.feast.core.Store\"I\n\x16\x41pplyFeatureSetRequest\x12/\n\x0b\x66\x65\x61ture_set\x18\x01 \x01(\x0b\x32\x1a.feast.core.FeatureSetSpec\"\xb7\x01\n\x17\x41pplyFeatureSetResponse\x12/\n\x0b\x66\x65\x61ture_set\x18\x01 \x01(\x0b\x32\x1a.feast.core.FeatureSetSpec\x12:\n\x06status\x18\x02 \x01(\x0e\x32*.feast.core.ApplyFeatureSetResponse.Status\"/\n\x06Status\x12\r\n\tNO_CHANGE\x10\x00\x12\x0b\n\x07\x43REATED\x10\x01\x12\t\n\x05\x45RROR\x10\x02\"\x1c\n\x1aGetFeastCoreVersionRequest\".\n\x1bGetFeastCoreVersionResponse\x12\x0f\n\x07version\x18\x01 \x01(\t\"6\n\x12UpdateStoreRequest\x12 \n\x05store\x18\x01 \x01(\x0b\x32\x11.feast.core.Store\"\x95\x01\n\x13UpdateStoreResponse\x12 \n\x05store\x18\x01 \x01(\x0b\x32\x11.feast.core.Store\x12\x36\n\x06status\x18\x02 \x01(\x0e\x32&.feast.core.UpdateStoreResponse.Status\"$\n\x06Status\x12\r\n\tNO_CHANGE\x10\x00\x12\x0b\n\x07UPDATED\x10\x01\x32\xa0\x04\n\x0b\x43oreService\x12\x66\n\x13GetFeastCoreVersion\x12&.feast.core.GetFeastCoreVersionRequest\x1a\'.feast.core.GetFeastCoreVersionResponse\x12T\n\rGetFeatureSet\x12 .feast.core.GetFeatureSetRequest\x1a!.feast.core.GetFeatureSetResponse\x12Z\n\x0fListFeatureSets\x12\".feast.core.ListFeatureSetsRequest\x1a#.feast.core.ListFeatureSetsResponse\x12K\n\nListStores\x12\x1d.feast.core.ListStoresRequest\x1a\x1e.feast.core.ListStoresResponse\x12Z\n\x0f\x41pplyFeatureSet\x12\".feast.core.ApplyFeatureSetRequest\x1a#.feast.core.ApplyFeatureSetResponse\x12N\n\x0bUpdateStore\x12\x1e.feast.core.UpdateStoreRequest\x1a\x1f.feast.core.UpdateStoreResponseBO\n\nfeast.coreB\x10\x43oreServiceProtoZ/github.com/gojek/feast/sdk/go/protos/feast/coreb\x06proto3'
,
dependencies=[feast_dot_core_dot_FeatureSet__pb2.DESCRIPTOR,feast_dot_core_dot_Store__pb2.DESCRIPTOR,])
@@ -87,7 +85,7 @@
_descriptor.FieldDescriptor(
name='name', full_name='feast.core.GetFeatureSetRequest.name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -156,14 +154,14 @@
_descriptor.FieldDescriptor(
name='feature_set_name', full_name='feast.core.ListFeatureSetsRequest.Filter.feature_set_name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='feature_set_version', full_name='feast.core.ListFeatureSetsRequest.Filter.feature_set_version', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -255,7 +253,7 @@
_descriptor.FieldDescriptor(
name='name', full_name='feast.core.ListStoresRequest.Filter.name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -441,7 +439,7 @@
_descriptor.FieldDescriptor(
name='version', full_name='feast.core.GetFeastCoreVersionResponse.version', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
diff --git a/sdk/python/feast/core/CoreService_pb2.pyi b/sdk/python/feast/core/CoreService_pb2.pyi
index 0bf897000bc..325a1765ad6 100644
--- a/sdk/python/feast/core/CoreService_pb2.pyi
+++ b/sdk/python/feast/core/CoreService_pb2.pyi
@@ -27,6 +27,7 @@ from typing import (
Optional as typing___Optional,
Text as typing___Text,
Tuple as typing___Tuple,
+ Union as typing___Union,
cast as typing___cast,
)
@@ -35,24 +36,36 @@ from typing_extensions import (
)
+builtin___bool = bool
+builtin___bytes = bytes
+builtin___float = float
+builtin___int = int
+builtin___str = str
+if sys.version_info < (3,):
+ builtin___buffer = buffer
+ builtin___unicode = unicode
+
+
class GetFeatureSetRequest(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
name = ... # type: typing___Text
- version = ... # type: int
+ version = ... # type: builtin___int
def __init__(self,
*,
name : typing___Optional[typing___Text] = None,
- version : typing___Optional[int] = None,
+ version : typing___Optional[builtin___int] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetFeatureSetRequest: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"name",u"version"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetFeatureSetRequest: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"name",b"name",u"version",b"version"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetFeatureSetRequest: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"name",b"name",u"version",b"version"]) -> None: ...
+global___GetFeatureSetRequest = GetFeatureSetRequest
class GetFeatureSetResponse(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -64,16 +77,17 @@ class GetFeatureSetResponse(google___protobuf___message___Message):
*,
feature_set : typing___Optional[feast___core___FeatureSet_pb2___FeatureSetSpec] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetFeatureSetResponse: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"feature_set"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"feature_set"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetFeatureSetResponse: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"feature_set",b"feature_set"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"feature_set",b"feature_set"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetFeatureSetResponse: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"feature_set",b"feature_set"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"feature_set",b"feature_set"]) -> None: ...
+global___GetFeatureSetResponse = GetFeatureSetResponse
class ListFeatureSetsRequest(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -87,33 +101,36 @@ class ListFeatureSetsRequest(google___protobuf___message___Message):
feature_set_name : typing___Optional[typing___Text] = None,
feature_set_version : typing___Optional[typing___Text] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> ListFeatureSetsRequest.Filter: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"feature_set_name",u"feature_set_version"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> ListFeatureSetsRequest.Filter: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"feature_set_name",b"feature_set_name",u"feature_set_version",b"feature_set_version"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> ListFeatureSetsRequest.Filter: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"feature_set_name",b"feature_set_name",u"feature_set_version",b"feature_set_version"]) -> None: ...
+ global___Filter = Filter
@property
- def filter(self) -> ListFeatureSetsRequest.Filter: ...
+ def filter(self) -> global___ListFeatureSetsRequest.Filter: ...
def __init__(self,
*,
- filter : typing___Optional[ListFeatureSetsRequest.Filter] = None,
+ filter : typing___Optional[global___ListFeatureSetsRequest.Filter] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> ListFeatureSetsRequest: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"filter"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"filter"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> ListFeatureSetsRequest: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"filter",b"filter"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"filter",b"filter"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> ListFeatureSetsRequest: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"filter",b"filter"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"filter",b"filter"]) -> None: ...
+global___ListFeatureSetsRequest = ListFeatureSetsRequest
class ListFeatureSetsResponse(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -125,14 +142,16 @@ class ListFeatureSetsResponse(google___protobuf___message___Message):
*,
feature_sets : typing___Optional[typing___Iterable[feast___core___FeatureSet_pb2___FeatureSetSpec]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> ListFeatureSetsResponse: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"feature_sets"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> ListFeatureSetsResponse: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"feature_sets",b"feature_sets"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> ListFeatureSetsResponse: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"feature_sets",b"feature_sets"]) -> None: ...
+global___ListFeatureSetsResponse = ListFeatureSetsResponse
class ListStoresRequest(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -144,33 +163,36 @@ class ListStoresRequest(google___protobuf___message___Message):
*,
name : typing___Optional[typing___Text] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> ListStoresRequest.Filter: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"name"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> ListStoresRequest.Filter: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"name",b"name"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> ListStoresRequest.Filter: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"name",b"name"]) -> None: ...
+ global___Filter = Filter
@property
- def filter(self) -> ListStoresRequest.Filter: ...
+ def filter(self) -> global___ListStoresRequest.Filter: ...
def __init__(self,
*,
- filter : typing___Optional[ListStoresRequest.Filter] = None,
+ filter : typing___Optional[global___ListStoresRequest.Filter] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> ListStoresRequest: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"filter"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"filter"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> ListStoresRequest: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"filter",b"filter"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"filter",b"filter"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> ListStoresRequest: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"filter",b"filter"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"filter",b"filter"]) -> None: ...
+global___ListStoresRequest = ListStoresRequest
class ListStoresResponse(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -182,14 +204,16 @@ class ListStoresResponse(google___protobuf___message___Message):
*,
store : typing___Optional[typing___Iterable[feast___core___Store_pb2___Store]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> ListStoresResponse: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"store"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> ListStoresResponse: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"store",b"store"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> ListStoresResponse: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"store",b"store"]) -> None: ...
+global___ListStoresResponse = ListStoresResponse
class ApplyFeatureSetRequest(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -201,39 +225,41 @@ class ApplyFeatureSetRequest(google___protobuf___message___Message):
*,
feature_set : typing___Optional[feast___core___FeatureSet_pb2___FeatureSetSpec] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> ApplyFeatureSetRequest: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"feature_set"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"feature_set"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> ApplyFeatureSetRequest: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"feature_set",b"feature_set"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"feature_set",b"feature_set"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> ApplyFeatureSetRequest: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"feature_set",b"feature_set"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"feature_set",b"feature_set"]) -> None: ...
+global___ApplyFeatureSetRequest = ApplyFeatureSetRequest
class ApplyFeatureSetResponse(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
- class Status(int):
+ class Status(builtin___int):
DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
@classmethod
- def Name(cls, number: int) -> str: ...
+ def Name(cls, number: builtin___int) -> builtin___str: ...
@classmethod
- def Value(cls, name: str) -> ApplyFeatureSetResponse.Status: ...
+ def Value(cls, name: builtin___str) -> 'ApplyFeatureSetResponse.Status': ...
@classmethod
- def keys(cls) -> typing___List[str]: ...
+ def keys(cls) -> typing___List[builtin___str]: ...
@classmethod
- def values(cls) -> typing___List[ApplyFeatureSetResponse.Status]: ...
+ def values(cls) -> typing___List['ApplyFeatureSetResponse.Status']: ...
@classmethod
- def items(cls) -> typing___List[typing___Tuple[str, ApplyFeatureSetResponse.Status]]: ...
- NO_CHANGE = typing___cast(ApplyFeatureSetResponse.Status, 0)
- CREATED = typing___cast(ApplyFeatureSetResponse.Status, 1)
- ERROR = typing___cast(ApplyFeatureSetResponse.Status, 2)
- NO_CHANGE = typing___cast(ApplyFeatureSetResponse.Status, 0)
- CREATED = typing___cast(ApplyFeatureSetResponse.Status, 1)
- ERROR = typing___cast(ApplyFeatureSetResponse.Status, 2)
+ def items(cls) -> typing___List[typing___Tuple[builtin___str, 'ApplyFeatureSetResponse.Status']]: ...
+ NO_CHANGE = typing___cast('ApplyFeatureSetResponse.Status', 0)
+ CREATED = typing___cast('ApplyFeatureSetResponse.Status', 1)
+ ERROR = typing___cast('ApplyFeatureSetResponse.Status', 2)
+ NO_CHANGE = typing___cast('ApplyFeatureSetResponse.Status', 0)
+ CREATED = typing___cast('ApplyFeatureSetResponse.Status', 1)
+ ERROR = typing___cast('ApplyFeatureSetResponse.Status', 2)
+ global___Status = Status
- status = ... # type: ApplyFeatureSetResponse.Status
+ status = ... # type: global___ApplyFeatureSetResponse.Status
@property
def feature_set(self) -> feast___core___FeatureSet_pb2___FeatureSetSpec: ...
@@ -241,28 +267,34 @@ class ApplyFeatureSetResponse(google___protobuf___message___Message):
def __init__(self,
*,
feature_set : typing___Optional[feast___core___FeatureSet_pb2___FeatureSetSpec] = None,
- status : typing___Optional[ApplyFeatureSetResponse.Status] = None,
+ status : typing___Optional[global___ApplyFeatureSetResponse.Status] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> ApplyFeatureSetResponse: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"feature_set"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"feature_set",u"status"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> ApplyFeatureSetResponse: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"feature_set",b"feature_set"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"feature_set",b"feature_set",u"status",b"status"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> ApplyFeatureSetResponse: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"feature_set",b"feature_set"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"feature_set",b"feature_set",u"status",b"status"]) -> None: ...
+global___ApplyFeatureSetResponse = ApplyFeatureSetResponse
class GetFeastCoreVersionRequest(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
def __init__(self,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetFeastCoreVersionRequest: ...
+ if sys.version_info >= (3,):
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetFeastCoreVersionRequest: ...
+ else:
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetFeastCoreVersionRequest: ...
def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+global___GetFeastCoreVersionRequest = GetFeastCoreVersionRequest
class GetFeastCoreVersionResponse(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -272,14 +304,16 @@ class GetFeastCoreVersionResponse(google___protobuf___message___Message):
*,
version : typing___Optional[typing___Text] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetFeastCoreVersionResponse: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"version"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetFeastCoreVersionResponse: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"version",b"version"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetFeastCoreVersionResponse: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"version",b"version"]) -> None: ...
+global___GetFeastCoreVersionResponse = GetFeastCoreVersionResponse
class UpdateStoreRequest(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -291,37 +325,39 @@ class UpdateStoreRequest(google___protobuf___message___Message):
*,
store : typing___Optional[feast___core___Store_pb2___Store] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> UpdateStoreRequest: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"store"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"store"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> UpdateStoreRequest: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"store",b"store"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"store",b"store"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> UpdateStoreRequest: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"store",b"store"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"store",b"store"]) -> None: ...
+global___UpdateStoreRequest = UpdateStoreRequest
class UpdateStoreResponse(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
- class Status(int):
+ class Status(builtin___int):
DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
@classmethod
- def Name(cls, number: int) -> str: ...
+ def Name(cls, number: builtin___int) -> builtin___str: ...
@classmethod
- def Value(cls, name: str) -> UpdateStoreResponse.Status: ...
+ def Value(cls, name: builtin___str) -> 'UpdateStoreResponse.Status': ...
@classmethod
- def keys(cls) -> typing___List[str]: ...
+ def keys(cls) -> typing___List[builtin___str]: ...
@classmethod
- def values(cls) -> typing___List[UpdateStoreResponse.Status]: ...
+ def values(cls) -> typing___List['UpdateStoreResponse.Status']: ...
@classmethod
- def items(cls) -> typing___List[typing___Tuple[str, UpdateStoreResponse.Status]]: ...
- NO_CHANGE = typing___cast(UpdateStoreResponse.Status, 0)
- UPDATED = typing___cast(UpdateStoreResponse.Status, 1)
- NO_CHANGE = typing___cast(UpdateStoreResponse.Status, 0)
- UPDATED = typing___cast(UpdateStoreResponse.Status, 1)
+ def items(cls) -> typing___List[typing___Tuple[builtin___str, 'UpdateStoreResponse.Status']]: ...
+ NO_CHANGE = typing___cast('UpdateStoreResponse.Status', 0)
+ UPDATED = typing___cast('UpdateStoreResponse.Status', 1)
+ NO_CHANGE = typing___cast('UpdateStoreResponse.Status', 0)
+ UPDATED = typing___cast('UpdateStoreResponse.Status', 1)
+ global___Status = Status
- status = ... # type: UpdateStoreResponse.Status
+ status = ... # type: global___UpdateStoreResponse.Status
@property
def store(self) -> feast___core___Store_pb2___Store: ...
@@ -329,15 +365,16 @@ class UpdateStoreResponse(google___protobuf___message___Message):
def __init__(self,
*,
store : typing___Optional[feast___core___Store_pb2___Store] = None,
- status : typing___Optional[UpdateStoreResponse.Status] = None,
+ status : typing___Optional[global___UpdateStoreResponse.Status] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> UpdateStoreResponse: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"store"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"status",u"store"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> UpdateStoreResponse: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"store",b"store"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"status",b"status",u"store",b"store"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> UpdateStoreResponse: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"store",b"store"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"status",b"status",u"store",b"store"]) -> None: ...
+global___UpdateStoreResponse = UpdateStoreResponse
diff --git a/sdk/python/feast/core/CoreService_pb2_grpc.py b/sdk/python/feast/core/CoreService_pb2_grpc.py
index c4d28087791..cd924146a79 100644
--- a/sdk/python/feast/core/CoreService_pb2_grpc.py
+++ b/sdk/python/feast/core/CoreService_pb2_grpc.py
@@ -5,143 +5,242 @@
class CoreServiceStub(object):
- # missing associated documentation comment in .proto file
- pass
-
- def __init__(self, channel):
- """Constructor.
-
- Args:
- channel: A grpc.Channel.
- """
- self.GetFeastCoreVersion = channel.unary_unary(
- '/feast.core.CoreService/GetFeastCoreVersion',
- request_serializer=feast_dot_core_dot_CoreService__pb2.GetFeastCoreVersionRequest.SerializeToString,
- response_deserializer=feast_dot_core_dot_CoreService__pb2.GetFeastCoreVersionResponse.FromString,
- )
- self.GetFeatureSet = channel.unary_unary(
- '/feast.core.CoreService/GetFeatureSet',
- request_serializer=feast_dot_core_dot_CoreService__pb2.GetFeatureSetRequest.SerializeToString,
- response_deserializer=feast_dot_core_dot_CoreService__pb2.GetFeatureSetResponse.FromString,
- )
- self.ListFeatureSets = channel.unary_unary(
- '/feast.core.CoreService/ListFeatureSets',
- request_serializer=feast_dot_core_dot_CoreService__pb2.ListFeatureSetsRequest.SerializeToString,
- response_deserializer=feast_dot_core_dot_CoreService__pb2.ListFeatureSetsResponse.FromString,
- )
- self.ListStores = channel.unary_unary(
- '/feast.core.CoreService/ListStores',
- request_serializer=feast_dot_core_dot_CoreService__pb2.ListStoresRequest.SerializeToString,
- response_deserializer=feast_dot_core_dot_CoreService__pb2.ListStoresResponse.FromString,
- )
- self.ApplyFeatureSet = channel.unary_unary(
- '/feast.core.CoreService/ApplyFeatureSet',
- request_serializer=feast_dot_core_dot_CoreService__pb2.ApplyFeatureSetRequest.SerializeToString,
- response_deserializer=feast_dot_core_dot_CoreService__pb2.ApplyFeatureSetResponse.FromString,
- )
- self.UpdateStore = channel.unary_unary(
- '/feast.core.CoreService/UpdateStore',
- request_serializer=feast_dot_core_dot_CoreService__pb2.UpdateStoreRequest.SerializeToString,
- response_deserializer=feast_dot_core_dot_CoreService__pb2.UpdateStoreResponse.FromString,
- )
+ """Missing associated documentation comment in .proto file"""
+
+ def __init__(self, channel):
+ """Constructor.
+
+ Args:
+ channel: A grpc.Channel.
+ """
+ self.GetFeastCoreVersion = channel.unary_unary(
+ '/feast.core.CoreService/GetFeastCoreVersion',
+ request_serializer=feast_dot_core_dot_CoreService__pb2.GetFeastCoreVersionRequest.SerializeToString,
+ response_deserializer=feast_dot_core_dot_CoreService__pb2.GetFeastCoreVersionResponse.FromString,
+ )
+ self.GetFeatureSet = channel.unary_unary(
+ '/feast.core.CoreService/GetFeatureSet',
+ request_serializer=feast_dot_core_dot_CoreService__pb2.GetFeatureSetRequest.SerializeToString,
+ response_deserializer=feast_dot_core_dot_CoreService__pb2.GetFeatureSetResponse.FromString,
+ )
+ self.ListFeatureSets = channel.unary_unary(
+ '/feast.core.CoreService/ListFeatureSets',
+ request_serializer=feast_dot_core_dot_CoreService__pb2.ListFeatureSetsRequest.SerializeToString,
+ response_deserializer=feast_dot_core_dot_CoreService__pb2.ListFeatureSetsResponse.FromString,
+ )
+ self.ListStores = channel.unary_unary(
+ '/feast.core.CoreService/ListStores',
+ request_serializer=feast_dot_core_dot_CoreService__pb2.ListStoresRequest.SerializeToString,
+ response_deserializer=feast_dot_core_dot_CoreService__pb2.ListStoresResponse.FromString,
+ )
+ self.ApplyFeatureSet = channel.unary_unary(
+ '/feast.core.CoreService/ApplyFeatureSet',
+ request_serializer=feast_dot_core_dot_CoreService__pb2.ApplyFeatureSetRequest.SerializeToString,
+ response_deserializer=feast_dot_core_dot_CoreService__pb2.ApplyFeatureSetResponse.FromString,
+ )
+ self.UpdateStore = channel.unary_unary(
+ '/feast.core.CoreService/UpdateStore',
+ request_serializer=feast_dot_core_dot_CoreService__pb2.UpdateStoreRequest.SerializeToString,
+ response_deserializer=feast_dot_core_dot_CoreService__pb2.UpdateStoreResponse.FromString,
+ )
class CoreServiceServicer(object):
- # missing associated documentation comment in .proto file
- pass
-
- def GetFeastCoreVersion(self, request, context):
- """Retrieve version information about this Feast deployment
- """
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
- context.set_details('Method not implemented!')
- raise NotImplementedError('Method not implemented!')
-
- def GetFeatureSet(self, request, context):
- """Returns a specific feature set
- """
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
- context.set_details('Method not implemented!')
- raise NotImplementedError('Method not implemented!')
-
- def ListFeatureSets(self, request, context):
- """Retrieve feature set details given a filter.
-
- Returns all feature sets matching that filter. If none are found,
- an empty list will be returned.
- If no filter is provided in the request, the response will contain all the feature
- sets currently stored in the registry.
- """
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
- context.set_details('Method not implemented!')
- raise NotImplementedError('Method not implemented!')
-
- def ListStores(self, request, context):
- """Retrieve store details given a filter.
-
- Returns all stores matching that filter. If none are found, an empty list will be returned.
- If no filter is provided in the request, the response will contain all the stores currently
- stored in the registry.
- """
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
- context.set_details('Method not implemented!')
- raise NotImplementedError('Method not implemented!')
-
- def ApplyFeatureSet(self, request, context):
- """Create or update and existing feature set.
-
- This function is idempotent - it will not create a new feature set if schema does not change.
- If an existing feature set is updated, core will advance the version number, which will be
- returned in response.
- """
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
- context.set_details('Method not implemented!')
- raise NotImplementedError('Method not implemented!')
-
- def UpdateStore(self, request, context):
- """Updates core with the configuration of the store.
-
- If the changes are valid, core will return the given store configuration in response, and
- start or update the necessary feature population jobs for the updated store.
- """
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
- context.set_details('Method not implemented!')
- raise NotImplementedError('Method not implemented!')
+ """Missing associated documentation comment in .proto file"""
+
+ def GetFeastCoreVersion(self, request, context):
+ """Retrieve version information about this Feast deployment
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
+ def GetFeatureSet(self, request, context):
+ """Returns a specific feature set
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
+ def ListFeatureSets(self, request, context):
+ """Retrieve feature set details given a filter.
+
+ Returns all feature sets matching that filter. If none are found,
+ an empty list will be returned.
+ If no filter is provided in the request, the response will contain all the feature
+ sets currently stored in the registry.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
+ def ListStores(self, request, context):
+ """Retrieve store details given a filter.
+
+ Returns all stores matching that filter. If none are found, an empty list will be returned.
+ If no filter is provided in the request, the response will contain all the stores currently
+ stored in the registry.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
+ def ApplyFeatureSet(self, request, context):
+ """Create or update and existing feature set.
+
+ This function is idempotent - it will not create a new feature set if schema does not change.
+ If an existing feature set is updated, core will advance the version number, which will be
+ returned in response.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
+ def UpdateStore(self, request, context):
+ """Updates core with the configuration of the store.
+
+ If the changes are valid, core will return the given store configuration in response, and
+ start or update the necessary feature population jobs for the updated store.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
def add_CoreServiceServicer_to_server(servicer, server):
- rpc_method_handlers = {
- 'GetFeastCoreVersion': grpc.unary_unary_rpc_method_handler(
- servicer.GetFeastCoreVersion,
- request_deserializer=feast_dot_core_dot_CoreService__pb2.GetFeastCoreVersionRequest.FromString,
- response_serializer=feast_dot_core_dot_CoreService__pb2.GetFeastCoreVersionResponse.SerializeToString,
- ),
- 'GetFeatureSet': grpc.unary_unary_rpc_method_handler(
- servicer.GetFeatureSet,
- request_deserializer=feast_dot_core_dot_CoreService__pb2.GetFeatureSetRequest.FromString,
- response_serializer=feast_dot_core_dot_CoreService__pb2.GetFeatureSetResponse.SerializeToString,
- ),
- 'ListFeatureSets': grpc.unary_unary_rpc_method_handler(
- servicer.ListFeatureSets,
- request_deserializer=feast_dot_core_dot_CoreService__pb2.ListFeatureSetsRequest.FromString,
- response_serializer=feast_dot_core_dot_CoreService__pb2.ListFeatureSetsResponse.SerializeToString,
- ),
- 'ListStores': grpc.unary_unary_rpc_method_handler(
- servicer.ListStores,
- request_deserializer=feast_dot_core_dot_CoreService__pb2.ListStoresRequest.FromString,
- response_serializer=feast_dot_core_dot_CoreService__pb2.ListStoresResponse.SerializeToString,
- ),
- 'ApplyFeatureSet': grpc.unary_unary_rpc_method_handler(
- servicer.ApplyFeatureSet,
- request_deserializer=feast_dot_core_dot_CoreService__pb2.ApplyFeatureSetRequest.FromString,
- response_serializer=feast_dot_core_dot_CoreService__pb2.ApplyFeatureSetResponse.SerializeToString,
- ),
- 'UpdateStore': grpc.unary_unary_rpc_method_handler(
- servicer.UpdateStore,
- request_deserializer=feast_dot_core_dot_CoreService__pb2.UpdateStoreRequest.FromString,
- response_serializer=feast_dot_core_dot_CoreService__pb2.UpdateStoreResponse.SerializeToString,
- ),
- }
- generic_handler = grpc.method_handlers_generic_handler(
- 'feast.core.CoreService', rpc_method_handlers)
- server.add_generic_rpc_handlers((generic_handler,))
+ rpc_method_handlers = {
+ 'GetFeastCoreVersion': grpc.unary_unary_rpc_method_handler(
+ servicer.GetFeastCoreVersion,
+ request_deserializer=feast_dot_core_dot_CoreService__pb2.GetFeastCoreVersionRequest.FromString,
+ response_serializer=feast_dot_core_dot_CoreService__pb2.GetFeastCoreVersionResponse.SerializeToString,
+ ),
+ 'GetFeatureSet': grpc.unary_unary_rpc_method_handler(
+ servicer.GetFeatureSet,
+ request_deserializer=feast_dot_core_dot_CoreService__pb2.GetFeatureSetRequest.FromString,
+ response_serializer=feast_dot_core_dot_CoreService__pb2.GetFeatureSetResponse.SerializeToString,
+ ),
+ 'ListFeatureSets': grpc.unary_unary_rpc_method_handler(
+ servicer.ListFeatureSets,
+ request_deserializer=feast_dot_core_dot_CoreService__pb2.ListFeatureSetsRequest.FromString,
+ response_serializer=feast_dot_core_dot_CoreService__pb2.ListFeatureSetsResponse.SerializeToString,
+ ),
+ 'ListStores': grpc.unary_unary_rpc_method_handler(
+ servicer.ListStores,
+ request_deserializer=feast_dot_core_dot_CoreService__pb2.ListStoresRequest.FromString,
+ response_serializer=feast_dot_core_dot_CoreService__pb2.ListStoresResponse.SerializeToString,
+ ),
+ 'ApplyFeatureSet': grpc.unary_unary_rpc_method_handler(
+ servicer.ApplyFeatureSet,
+ request_deserializer=feast_dot_core_dot_CoreService__pb2.ApplyFeatureSetRequest.FromString,
+ response_serializer=feast_dot_core_dot_CoreService__pb2.ApplyFeatureSetResponse.SerializeToString,
+ ),
+ 'UpdateStore': grpc.unary_unary_rpc_method_handler(
+ servicer.UpdateStore,
+ request_deserializer=feast_dot_core_dot_CoreService__pb2.UpdateStoreRequest.FromString,
+ response_serializer=feast_dot_core_dot_CoreService__pb2.UpdateStoreResponse.SerializeToString,
+ ),
+ }
+ generic_handler = grpc.method_handlers_generic_handler(
+ 'feast.core.CoreService', rpc_method_handlers)
+ server.add_generic_rpc_handlers((generic_handler,))
+
+
+ # This class is part of an EXPERIMENTAL API.
+class CoreService(object):
+ """Missing associated documentation comment in .proto file"""
+
+ @staticmethod
+ def GetFeastCoreVersion(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ return grpc.experimental.unary_unary(request, target, '/feast.core.CoreService/GetFeastCoreVersion',
+ feast_dot_core_dot_CoreService__pb2.GetFeastCoreVersionRequest.SerializeToString,
+ feast_dot_core_dot_CoreService__pb2.GetFeastCoreVersionResponse.FromString,
+ options, channel_credentials,
+ call_credentials, compression, wait_for_ready, timeout, metadata)
+
+ @staticmethod
+ def GetFeatureSet(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ return grpc.experimental.unary_unary(request, target, '/feast.core.CoreService/GetFeatureSet',
+ feast_dot_core_dot_CoreService__pb2.GetFeatureSetRequest.SerializeToString,
+ feast_dot_core_dot_CoreService__pb2.GetFeatureSetResponse.FromString,
+ options, channel_credentials,
+ call_credentials, compression, wait_for_ready, timeout, metadata)
+
+ @staticmethod
+ def ListFeatureSets(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ return grpc.experimental.unary_unary(request, target, '/feast.core.CoreService/ListFeatureSets',
+ feast_dot_core_dot_CoreService__pb2.ListFeatureSetsRequest.SerializeToString,
+ feast_dot_core_dot_CoreService__pb2.ListFeatureSetsResponse.FromString,
+ options, channel_credentials,
+ call_credentials, compression, wait_for_ready, timeout, metadata)
+
+ @staticmethod
+ def ListStores(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ return grpc.experimental.unary_unary(request, target, '/feast.core.CoreService/ListStores',
+ feast_dot_core_dot_CoreService__pb2.ListStoresRequest.SerializeToString,
+ feast_dot_core_dot_CoreService__pb2.ListStoresResponse.FromString,
+ options, channel_credentials,
+ call_credentials, compression, wait_for_ready, timeout, metadata)
+
+ @staticmethod
+ def ApplyFeatureSet(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ return grpc.experimental.unary_unary(request, target, '/feast.core.CoreService/ApplyFeatureSet',
+ feast_dot_core_dot_CoreService__pb2.ApplyFeatureSetRequest.SerializeToString,
+ feast_dot_core_dot_CoreService__pb2.ApplyFeatureSetResponse.FromString,
+ options, channel_credentials,
+ call_credentials, compression, wait_for_ready, timeout, metadata)
+
+ @staticmethod
+ def UpdateStore(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ return grpc.experimental.unary_unary(request, target, '/feast.core.CoreService/UpdateStore',
+ feast_dot_core_dot_CoreService__pb2.UpdateStoreRequest.SerializeToString,
+ feast_dot_core_dot_CoreService__pb2.UpdateStoreResponse.FromString,
+ options, channel_credentials,
+ call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/sdk/python/feast/core/FeatureSet_pb2.py b/sdk/python/feast/core/FeatureSet_pb2.py
index 8c331db16b1..474a7c10ef9 100644
--- a/sdk/python/feast/core/FeatureSet_pb2.py
+++ b/sdk/python/feast/core/FeatureSet_pb2.py
@@ -2,8 +2,6 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: feast/core/FeatureSet.proto
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -22,14 +20,82 @@
name='feast/core/FeatureSet.proto',
package='feast.core',
syntax='proto3',
- serialized_options=_b('\n\nfeast.coreB\017FeatureSetProtoZ/github.com/gojek/feast/sdk/go/protos/feast/core'),
- serialized_pb=_b('\n\x1b\x66\x65\x61st/core/FeatureSet.proto\x12\nfeast.core\x1a\x17\x66\x65\x61st/types/Value.proto\x1a\x17\x66\x65\x61st/core/Source.proto\x1a\x1egoogle/protobuf/duration.proto\"\xd4\x01\n\x0e\x46\x65\x61tureSetSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\x12(\n\x08\x65ntities\x18\x03 \x03(\x0b\x32\x16.feast.core.EntitySpec\x12)\n\x08\x66\x65\x61tures\x18\x04 \x03(\x0b\x32\x17.feast.core.FeatureSpec\x12*\n\x07max_age\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\"\n\x06source\x18\x06 \x01(\x0b\x32\x12.feast.core.Source\"K\n\nEntitySpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12/\n\nvalue_type\x18\x02 \x01(\x0e\x32\x1b.feast.types.ValueType.Enum\"L\n\x0b\x46\x65\x61tureSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12/\n\nvalue_type\x18\x02 \x01(\x0e\x32\x1b.feast.types.ValueType.EnumBN\n\nfeast.coreB\x0f\x46\x65\x61tureSetProtoZ/github.com/gojek/feast/sdk/go/protos/feast/coreb\x06proto3')
+ serialized_options=b'\n\nfeast.coreB\017FeatureSetProtoZ/github.com/gojek/feast/sdk/go/protos/feast/core',
+ serialized_pb=b'\n\x1b\x66\x65\x61st/core/FeatureSet.proto\x12\nfeast.core\x1a\x17\x66\x65\x61st/types/Value.proto\x1a\x17\x66\x65\x61st/core/Source.proto\x1a\x1egoogle/protobuf/duration.proto\"K\n\x14SetOfFeatureSetSpecs\x12\x33\n\x0f\x66\x65\x61tureSetSpecs\x18\x01 \x03(\x0b\x32\x1a.feast.core.FeatureSetSpec\"\xbb\x02\n\x0e\x46\x65\x61tureSetSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\x12(\n\x08\x65ntities\x18\x03 \x03(\x0b\x32\x16.feast.core.EntitySpec\x12)\n\x08\x66\x65\x61tures\x18\x04 \x03(\x0b\x32\x17.feast.core.FeatureSpec\x12*\n\x07max_age\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\"\n\x06source\x18\x06 \x01(\x0b\x32\x12.feast.core.Source\x12\x36\n\x06labels\x18\x08 \x03(\x0b\x32&.feast.core.FeatureSetSpec.LabelsEntry\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"K\n\nEntitySpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12/\n\nvalue_type\x18\x02 \x01(\x0e\x32\x1b.feast.types.ValueType.Enum\"\xb0\x01\n\x0b\x46\x65\x61tureSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12/\n\nvalue_type\x18\x02 \x01(\x0e\x32\x1b.feast.types.ValueType.Enum\x12\x33\n\x06labels\x18\x10 \x03(\x0b\x32#.feast.core.FeatureSpec.LabelsEntry\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42N\n\nfeast.coreB\x0f\x46\x65\x61tureSetProtoZ/github.com/gojek/feast/sdk/go/protos/feast/coreb\x06proto3'
,
dependencies=[feast_dot_types_dot_Value__pb2.DESCRIPTOR,feast_dot_core_dot_Source__pb2.DESCRIPTOR,google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,])
+_SETOFFEATURESETSPECS = _descriptor.Descriptor(
+ name='SetOfFeatureSetSpecs',
+ full_name='feast.core.SetOfFeatureSetSpecs',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='featureSetSpecs', full_name='feast.core.SetOfFeatureSetSpecs.featureSetSpecs', index=0,
+ number=1, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=125,
+ serialized_end=200,
+)
+
+
+_FEATURESETSPEC_LABELSENTRY = _descriptor.Descriptor(
+ name='LabelsEntry',
+ full_name='feast.core.FeatureSetSpec.LabelsEntry',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='key', full_name='feast.core.FeatureSetSpec.LabelsEntry.key', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='value', full_name='feast.core.FeatureSetSpec.LabelsEntry.value', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=b'8\001',
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=473,
+ serialized_end=518,
+)
+
_FEATURESETSPEC = _descriptor.Descriptor(
name='FeatureSetSpec',
full_name='feast.core.FeatureSetSpec',
@@ -40,7 +106,7 @@
_descriptor.FieldDescriptor(
name='name', full_name='feast.core.FeatureSetSpec.name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -79,10 +145,17 @@
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='labels', full_name='feast.core.FeatureSetSpec.labels', index=6,
+ number=8, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
- nested_types=[],
+ nested_types=[_FEATURESETSPEC_LABELSENTRY, ],
enum_types=[
],
serialized_options=None,
@@ -91,8 +164,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=126,
- serialized_end=338,
+ serialized_start=203,
+ serialized_end=518,
)
@@ -106,7 +179,7 @@
_descriptor.FieldDescriptor(
name='name', full_name='feast.core.EntitySpec.name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -129,11 +202,48 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=340,
- serialized_end=415,
+ serialized_start=520,
+ serialized_end=595,
)
+_FEATURESPEC_LABELSENTRY = _descriptor.Descriptor(
+ name='LabelsEntry',
+ full_name='feast.core.FeatureSpec.LabelsEntry',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='key', full_name='feast.core.FeatureSpec.LabelsEntry.key', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='value', full_name='feast.core.FeatureSpec.LabelsEntry.value', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=b'8\001',
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=473,
+ serialized_end=518,
+)
+
_FEATURESPEC = _descriptor.Descriptor(
name='FeatureSpec',
full_name='feast.core.FeatureSpec',
@@ -144,7 +254,7 @@
_descriptor.FieldDescriptor(
name='name', full_name='feast.core.FeatureSpec.name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -155,10 +265,17 @@
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='labels', full_name='feast.core.FeatureSpec.labels', index=2,
+ number=16, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
- nested_types=[],
+ nested_types=[_FEATURESPEC_LABELSENTRY, ],
enum_types=[
],
serialized_options=None,
@@ -167,27 +284,48 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=417,
- serialized_end=493,
+ serialized_start=598,
+ serialized_end=774,
)
+_SETOFFEATURESETSPECS.fields_by_name['featureSetSpecs'].message_type = _FEATURESETSPEC
+_FEATURESETSPEC_LABELSENTRY.containing_type = _FEATURESETSPEC
_FEATURESETSPEC.fields_by_name['entities'].message_type = _ENTITYSPEC
_FEATURESETSPEC.fields_by_name['features'].message_type = _FEATURESPEC
_FEATURESETSPEC.fields_by_name['max_age'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
_FEATURESETSPEC.fields_by_name['source'].message_type = feast_dot_core_dot_Source__pb2._SOURCE
+_FEATURESETSPEC.fields_by_name['labels'].message_type = _FEATURESETSPEC_LABELSENTRY
_ENTITYSPEC.fields_by_name['value_type'].enum_type = feast_dot_types_dot_Value__pb2._VALUETYPE_ENUM
+_FEATURESPEC_LABELSENTRY.containing_type = _FEATURESPEC
_FEATURESPEC.fields_by_name['value_type'].enum_type = feast_dot_types_dot_Value__pb2._VALUETYPE_ENUM
+_FEATURESPEC.fields_by_name['labels'].message_type = _FEATURESPEC_LABELSENTRY
+DESCRIPTOR.message_types_by_name['SetOfFeatureSetSpecs'] = _SETOFFEATURESETSPECS
DESCRIPTOR.message_types_by_name['FeatureSetSpec'] = _FEATURESETSPEC
DESCRIPTOR.message_types_by_name['EntitySpec'] = _ENTITYSPEC
DESCRIPTOR.message_types_by_name['FeatureSpec'] = _FEATURESPEC
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+SetOfFeatureSetSpecs = _reflection.GeneratedProtocolMessageType('SetOfFeatureSetSpecs', (_message.Message,), {
+ 'DESCRIPTOR' : _SETOFFEATURESETSPECS,
+ '__module__' : 'feast.core.FeatureSet_pb2'
+ # @@protoc_insertion_point(class_scope:feast.core.SetOfFeatureSetSpecs)
+ })
+_sym_db.RegisterMessage(SetOfFeatureSetSpecs)
+
FeatureSetSpec = _reflection.GeneratedProtocolMessageType('FeatureSetSpec', (_message.Message,), {
+
+ 'LabelsEntry' : _reflection.GeneratedProtocolMessageType('LabelsEntry', (_message.Message,), {
+ 'DESCRIPTOR' : _FEATURESETSPEC_LABELSENTRY,
+ '__module__' : 'feast.core.FeatureSet_pb2'
+ # @@protoc_insertion_point(class_scope:feast.core.FeatureSetSpec.LabelsEntry)
+ })
+ ,
'DESCRIPTOR' : _FEATURESETSPEC,
'__module__' : 'feast.core.FeatureSet_pb2'
# @@protoc_insertion_point(class_scope:feast.core.FeatureSetSpec)
})
_sym_db.RegisterMessage(FeatureSetSpec)
+_sym_db.RegisterMessage(FeatureSetSpec.LabelsEntry)
EntitySpec = _reflection.GeneratedProtocolMessageType('EntitySpec', (_message.Message,), {
'DESCRIPTOR' : _ENTITYSPEC,
@@ -197,12 +335,22 @@
_sym_db.RegisterMessage(EntitySpec)
FeatureSpec = _reflection.GeneratedProtocolMessageType('FeatureSpec', (_message.Message,), {
+
+ 'LabelsEntry' : _reflection.GeneratedProtocolMessageType('LabelsEntry', (_message.Message,), {
+ 'DESCRIPTOR' : _FEATURESPEC_LABELSENTRY,
+ '__module__' : 'feast.core.FeatureSet_pb2'
+ # @@protoc_insertion_point(class_scope:feast.core.FeatureSpec.LabelsEntry)
+ })
+ ,
'DESCRIPTOR' : _FEATURESPEC,
'__module__' : 'feast.core.FeatureSet_pb2'
# @@protoc_insertion_point(class_scope:feast.core.FeatureSpec)
})
_sym_db.RegisterMessage(FeatureSpec)
+_sym_db.RegisterMessage(FeatureSpec.LabelsEntry)
DESCRIPTOR._options = None
+_FEATURESETSPEC_LABELSENTRY._options = None
+_FEATURESPEC_LABELSENTRY._options = None
# @@protoc_insertion_point(module_scope)
diff --git a/sdk/python/feast/core/FeatureSet_pb2.pyi b/sdk/python/feast/core/FeatureSet_pb2.pyi
index 5d93721fe16..01506cf6c4f 100644
--- a/sdk/python/feast/core/FeatureSet_pb2.pyi
+++ b/sdk/python/feast/core/FeatureSet_pb2.pyi
@@ -26,8 +26,11 @@ from google.protobuf.message import (
from typing import (
Iterable as typing___Iterable,
+ Mapping as typing___Mapping,
+ MutableMapping as typing___MutableMapping,
Optional as typing___Optional,
Text as typing___Text,
+ Union as typing___Union,
)
from typing_extensions import (
@@ -35,16 +38,67 @@ from typing_extensions import (
)
+builtin___bool = bool
+builtin___bytes = bytes
+builtin___float = float
+builtin___int = int
+if sys.version_info < (3,):
+ builtin___buffer = buffer
+ builtin___unicode = unicode
+
+
+class SetOfFeatureSetSpecs(google___protobuf___message___Message):
+ DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
+
+ @property
+ def featureSetSpecs(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[global___FeatureSetSpec]: ...
+
+ def __init__(self,
+ *,
+ featureSetSpecs : typing___Optional[typing___Iterable[global___FeatureSetSpec]] = None,
+ ) -> None: ...
+ if sys.version_info >= (3,):
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> SetOfFeatureSetSpecs: ...
+ else:
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> SetOfFeatureSetSpecs: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"featureSetSpecs",b"featureSetSpecs"]) -> None: ...
+global___SetOfFeatureSetSpecs = SetOfFeatureSetSpecs
+
class FeatureSetSpec(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
+ class LabelsEntry(google___protobuf___message___Message):
+ DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
+ key = ... # type: typing___Text
+ value = ... # type: typing___Text
+
+ def __init__(self,
+ *,
+ key : typing___Optional[typing___Text] = None,
+ value : typing___Optional[typing___Text] = None,
+ ) -> None: ...
+ if sys.version_info >= (3,):
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> FeatureSetSpec.LabelsEntry: ...
+ else:
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> FeatureSetSpec.LabelsEntry: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ...
+ global___LabelsEntry = LabelsEntry
+
name = ... # type: typing___Text
- version = ... # type: int
+ version = ... # type: builtin___int
@property
- def entities(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[EntitySpec]: ...
+ def entities(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[global___EntitySpec]: ...
@property
- def features(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[FeatureSpec]: ...
+ def features(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[global___FeatureSpec]: ...
@property
def max_age(self) -> google___protobuf___duration_pb2___Duration: ...
@@ -52,25 +106,30 @@ class FeatureSetSpec(google___protobuf___message___Message):
@property
def source(self) -> feast___core___Source_pb2___Source: ...
+ @property
+ def labels(self) -> typing___MutableMapping[typing___Text, typing___Text]: ...
+
def __init__(self,
*,
name : typing___Optional[typing___Text] = None,
- version : typing___Optional[int] = None,
- entities : typing___Optional[typing___Iterable[EntitySpec]] = None,
- features : typing___Optional[typing___Iterable[FeatureSpec]] = None,
+ version : typing___Optional[builtin___int] = None,
+ entities : typing___Optional[typing___Iterable[global___EntitySpec]] = None,
+ features : typing___Optional[typing___Iterable[global___FeatureSpec]] = None,
max_age : typing___Optional[google___protobuf___duration_pb2___Duration] = None,
source : typing___Optional[feast___core___Source_pb2___Source] = None,
+ labels : typing___Optional[typing___Mapping[typing___Text, typing___Text]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> FeatureSetSpec: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"max_age",u"source"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"entities",u"features",u"max_age",u"name",u"source",u"version"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> FeatureSetSpec: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"max_age",b"max_age",u"source",b"source"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"entities",b"entities",u"features",b"features",u"max_age",b"max_age",u"name",b"name",u"source",b"source",u"version",b"version"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> FeatureSetSpec: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"max_age",b"max_age",u"source",b"source"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"entities",b"entities",u"features",b"features",u"labels",b"labels",u"max_age",b"max_age",u"name",b"name",u"source",b"source",u"version",b"version"]) -> None: ...
+global___FeatureSetSpec = FeatureSetSpec
class EntitySpec(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -82,30 +141,59 @@ class EntitySpec(google___protobuf___message___Message):
name : typing___Optional[typing___Text] = None,
value_type : typing___Optional[feast___types___Value_pb2___ValueType.Enum] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> EntitySpec: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"name",u"value_type"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> EntitySpec: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"name",b"name",u"value_type",b"value_type"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> EntitySpec: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"name",b"name",u"value_type",b"value_type"]) -> None: ...
+global___EntitySpec = EntitySpec
class FeatureSpec(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
+ class LabelsEntry(google___protobuf___message___Message):
+ DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
+ key = ... # type: typing___Text
+ value = ... # type: typing___Text
+
+ def __init__(self,
+ *,
+ key : typing___Optional[typing___Text] = None,
+ value : typing___Optional[typing___Text] = None,
+ ) -> None: ...
+ if sys.version_info >= (3,):
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> FeatureSpec.LabelsEntry: ...
+ else:
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> FeatureSpec.LabelsEntry: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ...
+ global___LabelsEntry = LabelsEntry
+
name = ... # type: typing___Text
value_type = ... # type: feast___types___Value_pb2___ValueType.Enum
+ @property
+ def labels(self) -> typing___MutableMapping[typing___Text, typing___Text]: ...
+
def __init__(self,
*,
name : typing___Optional[typing___Text] = None,
value_type : typing___Optional[feast___types___Value_pb2___ValueType.Enum] = None,
+ labels : typing___Optional[typing___Mapping[typing___Text, typing___Text]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> FeatureSpec: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"name",u"value_type"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> FeatureSpec: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"name",b"name",u"value_type",b"value_type"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> FeatureSpec: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"labels",b"labels",u"name",b"name",u"value_type",b"value_type"]) -> None: ...
+global___FeatureSpec = FeatureSpec
diff --git a/sdk/python/feast/core/Source_pb2.py b/sdk/python/feast/core/Source_pb2.py
index e0d0dd64313..356a7df89c8 100644
--- a/sdk/python/feast/core/Source_pb2.py
+++ b/sdk/python/feast/core/Source_pb2.py
@@ -2,8 +2,6 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: feast/core/Source.proto
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
@@ -20,8 +18,8 @@
name='feast/core/Source.proto',
package='feast.core',
syntax='proto3',
- serialized_options=_b('\n\nfeast.coreB\013SourceProtoZ/github.com/gojek/feast/sdk/go/protos/feast/core'),
- serialized_pb=_b('\n\x17\x66\x65\x61st/core/Source.proto\x12\nfeast.core\"}\n\x06Source\x12$\n\x04type\x18\x01 \x01(\x0e\x32\x16.feast.core.SourceType\x12<\n\x13kafka_source_config\x18\x02 \x01(\x0b\x32\x1d.feast.core.KafkaSourceConfigH\x00\x42\x0f\n\rsource_config\"=\n\x11KafkaSourceConfig\x12\x19\n\x11\x62ootstrap_servers\x18\x01 \x01(\t\x12\r\n\x05topic\x18\x02 \x01(\t*$\n\nSourceType\x12\x0b\n\x07INVALID\x10\x00\x12\t\n\x05KAFKA\x10\x01\x42J\n\nfeast.coreB\x0bSourceProtoZ/github.com/gojek/feast/sdk/go/protos/feast/coreb\x06proto3')
+ serialized_options=b'\n\nfeast.coreB\013SourceProtoZ/github.com/gojek/feast/sdk/go/protos/feast/core',
+ serialized_pb=b'\n\x17\x66\x65\x61st/core/Source.proto\x12\nfeast.core\"}\n\x06Source\x12$\n\x04type\x18\x01 \x01(\x0e\x32\x16.feast.core.SourceType\x12<\n\x13kafka_source_config\x18\x02 \x01(\x0b\x32\x1d.feast.core.KafkaSourceConfigH\x00\x42\x0f\n\rsource_config\"=\n\x11KafkaSourceConfig\x12\x19\n\x11\x62ootstrap_servers\x18\x01 \x01(\t\x12\r\n\x05topic\x18\x02 \x01(\t*$\n\nSourceType\x12\x0b\n\x07INVALID\x10\x00\x12\t\n\x05KAFKA\x10\x01\x42J\n\nfeast.coreB\x0bSourceProtoZ/github.com/gojek/feast/sdk/go/protos/feast/coreb\x06proto3'
)
_SOURCETYPE = _descriptor.EnumDescriptor(
@@ -103,14 +101,14 @@
_descriptor.FieldDescriptor(
name='bootstrap_servers', full_name='feast.core.KafkaSourceConfig.bootstrap_servers', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='topic', full_name='feast.core.KafkaSourceConfig.topic', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
diff --git a/sdk/python/feast/core/Source_pb2.pyi b/sdk/python/feast/core/Source_pb2.pyi
index 0521ac34f80..1a0e87e7ba3 100644
--- a/sdk/python/feast/core/Source_pb2.pyi
+++ b/sdk/python/feast/core/Source_pb2.pyi
@@ -14,6 +14,7 @@ from typing import (
Optional as typing___Optional,
Text as typing___Text,
Tuple as typing___Tuple,
+ Union as typing___Union,
cast as typing___cast,
)
@@ -22,46 +23,58 @@ from typing_extensions import (
)
-class SourceType(int):
+builtin___bool = bool
+builtin___bytes = bytes
+builtin___float = float
+builtin___int = int
+builtin___str = str
+if sys.version_info < (3,):
+ builtin___buffer = buffer
+ builtin___unicode = unicode
+
+
+class SourceType(builtin___int):
DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
@classmethod
- def Name(cls, number: int) -> str: ...
+ def Name(cls, number: builtin___int) -> builtin___str: ...
@classmethod
- def Value(cls, name: str) -> SourceType: ...
+ def Value(cls, name: builtin___str) -> 'SourceType': ...
@classmethod
- def keys(cls) -> typing___List[str]: ...
+ def keys(cls) -> typing___List[builtin___str]: ...
@classmethod
- def values(cls) -> typing___List[SourceType]: ...
+ def values(cls) -> typing___List['SourceType']: ...
@classmethod
- def items(cls) -> typing___List[typing___Tuple[str, SourceType]]: ...
- INVALID = typing___cast(SourceType, 0)
- KAFKA = typing___cast(SourceType, 1)
-INVALID = typing___cast(SourceType, 0)
-KAFKA = typing___cast(SourceType, 1)
+ def items(cls) -> typing___List[typing___Tuple[builtin___str, 'SourceType']]: ...
+ INVALID = typing___cast('SourceType', 0)
+ KAFKA = typing___cast('SourceType', 1)
+INVALID = typing___cast('SourceType', 0)
+KAFKA = typing___cast('SourceType', 1)
+global___SourceType = SourceType
class Source(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
- type = ... # type: SourceType
+ type = ... # type: global___SourceType
@property
- def kafka_source_config(self) -> KafkaSourceConfig: ...
+ def kafka_source_config(self) -> global___KafkaSourceConfig: ...
def __init__(self,
*,
- type : typing___Optional[SourceType] = None,
- kafka_source_config : typing___Optional[KafkaSourceConfig] = None,
+ type : typing___Optional[global___SourceType] = None,
+ kafka_source_config : typing___Optional[global___KafkaSourceConfig] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> Source: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"kafka_source_config",u"source_config"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"kafka_source_config",u"source_config",u"type"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Source: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"kafka_source_config",b"kafka_source_config",u"source_config",b"source_config"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"kafka_source_config",b"kafka_source_config",u"source_config",b"source_config",u"type",b"type"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Source: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"kafka_source_config",b"kafka_source_config",u"source_config",b"source_config"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"kafka_source_config",b"kafka_source_config",u"source_config",b"source_config",u"type",b"type"]) -> None: ...
def WhichOneof(self, oneof_group: typing_extensions___Literal[u"source_config",b"source_config"]) -> typing_extensions___Literal["kafka_source_config"]: ...
+global___Source = Source
class KafkaSourceConfig(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -73,11 +86,13 @@ class KafkaSourceConfig(google___protobuf___message___Message):
bootstrap_servers : typing___Optional[typing___Text] = None,
topic : typing___Optional[typing___Text] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> KafkaSourceConfig: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"bootstrap_servers",u"topic"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> KafkaSourceConfig: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"bootstrap_servers",b"bootstrap_servers",u"topic",b"topic"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> KafkaSourceConfig: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"bootstrap_servers",b"bootstrap_servers",u"topic",b"topic"]) -> None: ...
+global___KafkaSourceConfig = KafkaSourceConfig
diff --git a/sdk/python/feast/core/Store_pb2.py b/sdk/python/feast/core/Store_pb2.py
index c7f9e07d871..ef8c339d61d 100644
--- a/sdk/python/feast/core/Store_pb2.py
+++ b/sdk/python/feast/core/Store_pb2.py
@@ -2,8 +2,6 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: feast/core/Store.proto
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -13,15 +11,17 @@
_sym_db = _symbol_database.Default()
+from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2
DESCRIPTOR = _descriptor.FileDescriptor(
name='feast/core/Store.proto',
package='feast.core',
syntax='proto3',
- serialized_options=_b('\n\nfeast.coreB\nStoreProtoZ/github.com/gojek/feast/sdk/go/protos/feast/core'),
- serialized_pb=_b('\n\x16\x66\x65\x61st/core/Store.proto\x12\nfeast.core\"\xb9\x04\n\x05Store\x12\x0c\n\x04name\x18\x01 \x01(\t\x12)\n\x04type\x18\x02 \x01(\x0e\x32\x1b.feast.core.Store.StoreType\x12\x35\n\rsubscriptions\x18\x04 \x03(\x0b\x32\x1e.feast.core.Store.Subscription\x12\x35\n\x0credis_config\x18\x0b \x01(\x0b\x32\x1d.feast.core.Store.RedisConfigH\x00\x12;\n\x0f\x62igquery_config\x18\x0c \x01(\x0b\x32 .feast.core.Store.BigQueryConfigH\x00\x12=\n\x10\x63\x61ssandra_config\x18\r \x01(\x0b\x32!.feast.core.Store.CassandraConfigH\x00\x1a)\n\x0bRedisConfig\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\x1a\x38\n\x0e\x42igQueryConfig\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x12\n\ndataset_id\x18\x02 \x01(\t\x1a-\n\x0f\x43\x61ssandraConfig\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\x1a-\n\x0cSubscription\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\"@\n\tStoreType\x12\x0b\n\x07INVALID\x10\x00\x12\t\n\x05REDIS\x10\x01\x12\x0c\n\x08\x42IGQUERY\x10\x02\x12\r\n\tCASSANDRA\x10\x03\x42\x08\n\x06\x63onfigBI\n\nfeast.coreB\nStoreProtoZ/github.com/gojek/feast/sdk/go/protos/feast/coreb\x06proto3')
-)
+ serialized_options=b'\n\nfeast.coreB\nStoreProtoZ/github.com/gojek/feast/sdk/go/protos/feast/core',
+ serialized_pb=b'\n\x16\x66\x65\x61st/core/Store.proto\x12\nfeast.core\x1a\x1egoogle/protobuf/duration.proto\"0\n\x0bSetOfStores\x12!\n\x06stores\x18\x01 \x03(\x0b\x32\x11.feast.core.Store\"\xff\x07\n\x05Store\x12\x0c\n\x04name\x18\x01 \x01(\t\x12)\n\x04type\x18\x02 \x01(\x0e\x32\x1b.feast.core.Store.StoreType\x12\x35\n\rsubscriptions\x18\x04 \x03(\x0b\x32\x1e.feast.core.Store.Subscription\x12\x35\n\x0credis_config\x18\x0b \x01(\x0b\x32\x1d.feast.core.Store.RedisConfigH\x00\x12;\n\x0f\x62igquery_config\x18\x0c \x01(\x0b\x32 .feast.core.Store.BigQueryConfigH\x00\x12=\n\x10\x63\x61ssandra_config\x18\r \x01(\x0b\x32!.feast.core.Store.CassandraConfigH\x00\x12\x33\n\x0bhive_config\x18\x0e \x01(\x0b\x32\x1c.feast.core.Store.HiveConfigH\x00\x1a)\n\x0bRedisConfig\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\x1a\x38\n\x0e\x42igQueryConfig\x12\x12\n\nproject_id\x18\x01 \x01(\t\x12\x12\n\ndataset_id\x18\x02 \x01(\t\x1a\xa1\x02\n\x0f\x43\x61ssandraConfig\x12\x17\n\x0f\x62ootstrap_hosts\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\x12\x10\n\x08keyspace\x18\x03 \x01(\t\x12\x12\n\ntable_name\x18\x04 \x01(\t\x12V\n\x13replication_options\x18\x05 \x03(\x0b\x32\x39.feast.core.Store.CassandraConfig.ReplicationOptionsEntry\x12.\n\x0b\x64\x65\x66\x61ult_ttl\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x39\n\x17ReplicationOptionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x8f\x01\n\nHiveConfig\x12\x15\n\rdatabase_name\x18\x01 \x01(\t\x12:\n\x07options\x18\x02 \x03(\x0b\x32).feast.core.Store.HiveConfig.OptionsEntry\x1a.\n\x0cOptionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a-\n\x0cSubscription\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\"J\n\tStoreType\x12\x0b\n\x07INVALID\x10\x00\x12\t\n\x05REDIS\x10\x01\x12\x0c\n\x08\x42IGQUERY\x10\x02\x12\r\n\tCASSANDRA\x10\x03\x12\x08\n\x04HIVE\x10\x04\x42\x08\n\x06\x63onfigBI\n\nfeast.coreB\nStoreProtoZ/github.com/gojek/feast/sdk/go/protos/feast/coreb\x06proto3'
+ ,
+ dependencies=[google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,])
@@ -47,15 +47,50 @@
name='CASSANDRA', index=3, number=3,
serialized_options=None,
type=None),
+ _descriptor.EnumValueDescriptor(
+ name='HIVE', index=4, number=4,
+ serialized_options=None,
+ type=None),
],
containing_type=None,
serialized_options=None,
- serialized_start=534,
- serialized_end=598,
+ serialized_start=1060,
+ serialized_end=1134,
)
_sym_db.RegisterEnumDescriptor(_STORE_STORETYPE)
+_SETOFSTORES = _descriptor.Descriptor(
+ name='SetOfStores',
+ full_name='feast.core.SetOfStores',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='stores', full_name='feast.core.SetOfStores.stores', index=0,
+ number=1, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=70,
+ serialized_end=118,
+)
+
+
_STORE_REDISCONFIG = _descriptor.Descriptor(
name='RedisConfig',
full_name='feast.core.Store.RedisConfig',
@@ -66,7 +101,7 @@
_descriptor.FieldDescriptor(
name='host', full_name='feast.core.Store.RedisConfig.host', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -89,8 +124,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=339,
- serialized_end=380,
+ serialized_start=474,
+ serialized_end=515,
)
_STORE_BIGQUERYCONFIG = _descriptor.Descriptor(
@@ -103,14 +138,14 @@
_descriptor.FieldDescriptor(
name='project_id', full_name='feast.core.Store.BigQueryConfig.project_id', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='dataset_id', full_name='feast.core.Store.BigQueryConfig.dataset_id', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -126,8 +161,45 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=382,
- serialized_end=438,
+ serialized_start=517,
+ serialized_end=573,
+)
+
+_STORE_CASSANDRACONFIG_REPLICATIONOPTIONSENTRY = _descriptor.Descriptor(
+ name='ReplicationOptionsEntry',
+ full_name='feast.core.Store.CassandraConfig.ReplicationOptionsEntry',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='key', full_name='feast.core.Store.CassandraConfig.ReplicationOptionsEntry.key', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='value', full_name='feast.core.Store.CassandraConfig.ReplicationOptionsEntry.value', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=b'8\001',
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=808,
+ serialized_end=865,
)
_STORE_CASSANDRACONFIG = _descriptor.Descriptor(
@@ -138,9 +210,9 @@
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
- name='host', full_name='feast.core.Store.CassandraConfig.host', index=0,
+ name='bootstrap_hosts', full_name='feast.core.Store.CassandraConfig.bootstrap_hosts', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -151,20 +223,122 @@
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='keyspace', full_name='feast.core.Store.CassandraConfig.keyspace', index=2,
+ number=3, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='table_name', full_name='feast.core.Store.CassandraConfig.table_name', index=3,
+ number=4, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='replication_options', full_name='feast.core.Store.CassandraConfig.replication_options', index=4,
+ number=5, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='default_ttl', full_name='feast.core.Store.CassandraConfig.default_ttl', index=5,
+ number=6, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[_STORE_CASSANDRACONFIG_REPLICATIONOPTIONSENTRY, ],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=576,
+ serialized_end=865,
+)
+
+_STORE_HIVECONFIG_OPTIONSENTRY = _descriptor.Descriptor(
+ name='OptionsEntry',
+ full_name='feast.core.Store.HiveConfig.OptionsEntry',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='key', full_name='feast.core.Store.HiveConfig.OptionsEntry.key', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='value', full_name='feast.core.Store.HiveConfig.OptionsEntry.value', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
nested_types=[],
enum_types=[
],
+ serialized_options=b'8\001',
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=965,
+ serialized_end=1011,
+)
+
+_STORE_HIVECONFIG = _descriptor.Descriptor(
+ name='HiveConfig',
+ full_name='feast.core.Store.HiveConfig',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='database_name', full_name='feast.core.Store.HiveConfig.database_name', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='options', full_name='feast.core.Store.HiveConfig.options', index=1,
+ number=2, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[_STORE_HIVECONFIG_OPTIONSENTRY, ],
+ enum_types=[
+ ],
serialized_options=None,
is_extendable=False,
syntax='proto3',
extension_ranges=[],
oneofs=[
],
- serialized_start=440,
- serialized_end=485,
+ serialized_start=868,
+ serialized_end=1011,
)
_STORE_SUBSCRIPTION = _descriptor.Descriptor(
@@ -177,14 +351,14 @@
_descriptor.FieldDescriptor(
name='name', full_name='feast.core.Store.Subscription.name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='version', full_name='feast.core.Store.Subscription.version', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -200,8 +374,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=487,
- serialized_end=532,
+ serialized_start=1013,
+ serialized_end=1058,
)
_STORE = _descriptor.Descriptor(
@@ -214,7 +388,7 @@
_descriptor.FieldDescriptor(
name='name', full_name='feast.core.Store.name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -253,10 +427,17 @@
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='hive_config', full_name='feast.core.Store.hive_config', index=6,
+ number=14, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
- nested_types=[_STORE_REDISCONFIG, _STORE_BIGQUERYCONFIG, _STORE_CASSANDRACONFIG, _STORE_SUBSCRIPTION, ],
+ nested_types=[_STORE_REDISCONFIG, _STORE_BIGQUERYCONFIG, _STORE_CASSANDRACONFIG, _STORE_HIVECONFIG, _STORE_SUBSCRIPTION, ],
enum_types=[
_STORE_STORETYPE,
],
@@ -269,19 +450,27 @@
name='config', full_name='feast.core.Store.config',
index=0, containing_type=None, fields=[]),
],
- serialized_start=39,
- serialized_end=608,
+ serialized_start=121,
+ serialized_end=1144,
)
+_SETOFSTORES.fields_by_name['stores'].message_type = _STORE
_STORE_REDISCONFIG.containing_type = _STORE
_STORE_BIGQUERYCONFIG.containing_type = _STORE
+_STORE_CASSANDRACONFIG_REPLICATIONOPTIONSENTRY.containing_type = _STORE_CASSANDRACONFIG
+_STORE_CASSANDRACONFIG.fields_by_name['replication_options'].message_type = _STORE_CASSANDRACONFIG_REPLICATIONOPTIONSENTRY
+_STORE_CASSANDRACONFIG.fields_by_name['default_ttl'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
_STORE_CASSANDRACONFIG.containing_type = _STORE
+_STORE_HIVECONFIG_OPTIONSENTRY.containing_type = _STORE_HIVECONFIG
+_STORE_HIVECONFIG.fields_by_name['options'].message_type = _STORE_HIVECONFIG_OPTIONSENTRY
+_STORE_HIVECONFIG.containing_type = _STORE
_STORE_SUBSCRIPTION.containing_type = _STORE
_STORE.fields_by_name['type'].enum_type = _STORE_STORETYPE
_STORE.fields_by_name['subscriptions'].message_type = _STORE_SUBSCRIPTION
_STORE.fields_by_name['redis_config'].message_type = _STORE_REDISCONFIG
_STORE.fields_by_name['bigquery_config'].message_type = _STORE_BIGQUERYCONFIG
_STORE.fields_by_name['cassandra_config'].message_type = _STORE_CASSANDRACONFIG
+_STORE.fields_by_name['hive_config'].message_type = _STORE_HIVECONFIG
_STORE_STORETYPE.containing_type = _STORE
_STORE.oneofs_by_name['config'].fields.append(
_STORE.fields_by_name['redis_config'])
@@ -292,9 +481,20 @@
_STORE.oneofs_by_name['config'].fields.append(
_STORE.fields_by_name['cassandra_config'])
_STORE.fields_by_name['cassandra_config'].containing_oneof = _STORE.oneofs_by_name['config']
+_STORE.oneofs_by_name['config'].fields.append(
+ _STORE.fields_by_name['hive_config'])
+_STORE.fields_by_name['hive_config'].containing_oneof = _STORE.oneofs_by_name['config']
+DESCRIPTOR.message_types_by_name['SetOfStores'] = _SETOFSTORES
DESCRIPTOR.message_types_by_name['Store'] = _STORE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+SetOfStores = _reflection.GeneratedProtocolMessageType('SetOfStores', (_message.Message,), {
+ 'DESCRIPTOR' : _SETOFSTORES,
+ '__module__' : 'feast.core.Store_pb2'
+ # @@protoc_insertion_point(class_scope:feast.core.SetOfStores)
+ })
+_sym_db.RegisterMessage(SetOfStores)
+
Store = _reflection.GeneratedProtocolMessageType('Store', (_message.Message,), {
'RedisConfig' : _reflection.GeneratedProtocolMessageType('RedisConfig', (_message.Message,), {
@@ -312,12 +512,33 @@
,
'CassandraConfig' : _reflection.GeneratedProtocolMessageType('CassandraConfig', (_message.Message,), {
+
+ 'ReplicationOptionsEntry' : _reflection.GeneratedProtocolMessageType('ReplicationOptionsEntry', (_message.Message,), {
+ 'DESCRIPTOR' : _STORE_CASSANDRACONFIG_REPLICATIONOPTIONSENTRY,
+ '__module__' : 'feast.core.Store_pb2'
+ # @@protoc_insertion_point(class_scope:feast.core.Store.CassandraConfig.ReplicationOptionsEntry)
+ })
+ ,
'DESCRIPTOR' : _STORE_CASSANDRACONFIG,
'__module__' : 'feast.core.Store_pb2'
# @@protoc_insertion_point(class_scope:feast.core.Store.CassandraConfig)
})
,
+ 'HiveConfig' : _reflection.GeneratedProtocolMessageType('HiveConfig', (_message.Message,), {
+
+ 'OptionsEntry' : _reflection.GeneratedProtocolMessageType('OptionsEntry', (_message.Message,), {
+ 'DESCRIPTOR' : _STORE_HIVECONFIG_OPTIONSENTRY,
+ '__module__' : 'feast.core.Store_pb2'
+ # @@protoc_insertion_point(class_scope:feast.core.Store.HiveConfig.OptionsEntry)
+ })
+ ,
+ 'DESCRIPTOR' : _STORE_HIVECONFIG,
+ '__module__' : 'feast.core.Store_pb2'
+ # @@protoc_insertion_point(class_scope:feast.core.Store.HiveConfig)
+ })
+ ,
+
'Subscription' : _reflection.GeneratedProtocolMessageType('Subscription', (_message.Message,), {
'DESCRIPTOR' : _STORE_SUBSCRIPTION,
'__module__' : 'feast.core.Store_pb2'
@@ -332,8 +553,13 @@
_sym_db.RegisterMessage(Store.RedisConfig)
_sym_db.RegisterMessage(Store.BigQueryConfig)
_sym_db.RegisterMessage(Store.CassandraConfig)
+_sym_db.RegisterMessage(Store.CassandraConfig.ReplicationOptionsEntry)
+_sym_db.RegisterMessage(Store.HiveConfig)
+_sym_db.RegisterMessage(Store.HiveConfig.OptionsEntry)
_sym_db.RegisterMessage(Store.Subscription)
DESCRIPTOR._options = None
+_STORE_CASSANDRACONFIG_REPLICATIONOPTIONSENTRY._options = None
+_STORE_HIVECONFIG_OPTIONSENTRY._options = None
# @@protoc_insertion_point(module_scope)
diff --git a/sdk/python/feast/core/Store_pb2.pyi b/sdk/python/feast/core/Store_pb2.pyi
index 726a9d5443e..3ee8e5928e1 100644
--- a/sdk/python/feast/core/Store_pb2.pyi
+++ b/sdk/python/feast/core/Store_pb2.pyi
@@ -5,6 +5,10 @@ from google.protobuf.descriptor import (
EnumDescriptor as google___protobuf___descriptor___EnumDescriptor,
)
+from google.protobuf.duration_pb2 import (
+ Duration as google___protobuf___duration_pb2___Duration,
+)
+
from google.protobuf.internal.containers import (
RepeatedCompositeFieldContainer as google___protobuf___internal___containers___RepeatedCompositeFieldContainer,
)
@@ -16,9 +20,12 @@ from google.protobuf.message import (
from typing import (
Iterable as typing___Iterable,
List as typing___List,
+ Mapping as typing___Mapping,
+ MutableMapping as typing___MutableMapping,
Optional as typing___Optional,
Text as typing___Text,
Tuple as typing___Tuple,
+ Union as typing___Union,
cast as typing___cast,
)
@@ -27,47 +34,83 @@ from typing_extensions import (
)
+builtin___bool = bool
+builtin___bytes = bytes
+builtin___float = float
+builtin___int = int
+builtin___str = str
+if sys.version_info < (3,):
+ builtin___buffer = buffer
+ builtin___unicode = unicode
+
+
+class SetOfStores(google___protobuf___message___Message):
+ DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
+
+ @property
+ def stores(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[global___Store]: ...
+
+ def __init__(self,
+ *,
+ stores : typing___Optional[typing___Iterable[global___Store]] = None,
+ ) -> None: ...
+ if sys.version_info >= (3,):
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> SetOfStores: ...
+ else:
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> SetOfStores: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"stores",b"stores"]) -> None: ...
+global___SetOfStores = SetOfStores
+
class Store(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
- class StoreType(int):
+ class StoreType(builtin___int):
DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
@classmethod
- def Name(cls, number: int) -> str: ...
+ def Name(cls, number: builtin___int) -> builtin___str: ...
@classmethod
- def Value(cls, name: str) -> Store.StoreType: ...
+ def Value(cls, name: builtin___str) -> 'Store.StoreType': ...
@classmethod
- def keys(cls) -> typing___List[str]: ...
+ def keys(cls) -> typing___List[builtin___str]: ...
@classmethod
- def values(cls) -> typing___List[Store.StoreType]: ...
+ def values(cls) -> typing___List['Store.StoreType']: ...
@classmethod
- def items(cls) -> typing___List[typing___Tuple[str, Store.StoreType]]: ...
- INVALID = typing___cast(Store.StoreType, 0)
- REDIS = typing___cast(Store.StoreType, 1)
- BIGQUERY = typing___cast(Store.StoreType, 2)
- CASSANDRA = typing___cast(Store.StoreType, 3)
- INVALID = typing___cast(Store.StoreType, 0)
- REDIS = typing___cast(Store.StoreType, 1)
- BIGQUERY = typing___cast(Store.StoreType, 2)
- CASSANDRA = typing___cast(Store.StoreType, 3)
+ def items(cls) -> typing___List[typing___Tuple[builtin___str, 'Store.StoreType']]: ...
+ INVALID = typing___cast('Store.StoreType', 0)
+ REDIS = typing___cast('Store.StoreType', 1)
+ BIGQUERY = typing___cast('Store.StoreType', 2)
+ CASSANDRA = typing___cast('Store.StoreType', 3)
+ HIVE = typing___cast('Store.StoreType', 4)
+ INVALID = typing___cast('Store.StoreType', 0)
+ REDIS = typing___cast('Store.StoreType', 1)
+ BIGQUERY = typing___cast('Store.StoreType', 2)
+ CASSANDRA = typing___cast('Store.StoreType', 3)
+ HIVE = typing___cast('Store.StoreType', 4)
+ global___StoreType = StoreType
class RedisConfig(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
host = ... # type: typing___Text
- port = ... # type: int
+ port = ... # type: builtin___int
def __init__(self,
*,
host : typing___Optional[typing___Text] = None,
- port : typing___Optional[int] = None,
+ port : typing___Optional[builtin___int] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> Store.RedisConfig: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"host",u"port"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Store.RedisConfig: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"host",b"host",u"port",b"port"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Store.RedisConfig: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"host",b"host",u"port",b"port"]) -> None: ...
+ global___RedisConfig = RedisConfig
class BigQueryConfig(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -79,33 +122,115 @@ class Store(google___protobuf___message___Message):
project_id : typing___Optional[typing___Text] = None,
dataset_id : typing___Optional[typing___Text] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> Store.BigQueryConfig: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"dataset_id",u"project_id"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Store.BigQueryConfig: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"dataset_id",b"dataset_id",u"project_id",b"project_id"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Store.BigQueryConfig: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"dataset_id",b"dataset_id",u"project_id",b"project_id"]) -> None: ...
+ global___BigQueryConfig = BigQueryConfig
class CassandraConfig(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
- host = ... # type: typing___Text
- port = ... # type: int
+ class ReplicationOptionsEntry(google___protobuf___message___Message):
+ DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
+ key = ... # type: typing___Text
+ value = ... # type: typing___Text
+
+ def __init__(self,
+ *,
+ key : typing___Optional[typing___Text] = None,
+ value : typing___Optional[typing___Text] = None,
+ ) -> None: ...
+ if sys.version_info >= (3,):
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Store.CassandraConfig.ReplicationOptionsEntry: ...
+ else:
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Store.CassandraConfig.ReplicationOptionsEntry: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ...
+ global___ReplicationOptionsEntry = ReplicationOptionsEntry
+
+ bootstrap_hosts = ... # type: typing___Text
+ port = ... # type: builtin___int
+ keyspace = ... # type: typing___Text
+ table_name = ... # type: typing___Text
+
+ @property
+ def replication_options(self) -> typing___MutableMapping[typing___Text, typing___Text]: ...
+
+ @property
+ def default_ttl(self) -> google___protobuf___duration_pb2___Duration: ...
def __init__(self,
*,
- host : typing___Optional[typing___Text] = None,
- port : typing___Optional[int] = None,
+ bootstrap_hosts : typing___Optional[typing___Text] = None,
+ port : typing___Optional[builtin___int] = None,
+ keyspace : typing___Optional[typing___Text] = None,
+ table_name : typing___Optional[typing___Text] = None,
+ replication_options : typing___Optional[typing___Mapping[typing___Text, typing___Text]] = None,
+ default_ttl : typing___Optional[google___protobuf___duration_pb2___Duration] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> Store.CassandraConfig: ...
+ if sys.version_info >= (3,):
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Store.CassandraConfig: ...
+ else:
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Store.CassandraConfig: ...
def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"default_ttl",b"default_ttl"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"bootstrap_hosts",b"bootstrap_hosts",u"default_ttl",b"default_ttl",u"keyspace",b"keyspace",u"port",b"port",u"replication_options",b"replication_options",u"table_name",b"table_name"]) -> None: ...
+ global___CassandraConfig = CassandraConfig
+
+ class HiveConfig(google___protobuf___message___Message):
+ DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
+ class OptionsEntry(google___protobuf___message___Message):
+ DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
+ key = ... # type: typing___Text
+ value = ... # type: typing___Text
+
+ def __init__(self,
+ *,
+ key : typing___Optional[typing___Text] = None,
+ value : typing___Optional[typing___Text] = None,
+ ) -> None: ...
+ if sys.version_info >= (3,):
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Store.HiveConfig.OptionsEntry: ...
+ else:
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Store.HiveConfig.OptionsEntry: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ...
+ global___OptionsEntry = OptionsEntry
+
+ database_name = ... # type: typing___Text
+
+ @property
+ def options(self) -> typing___MutableMapping[typing___Text, typing___Text]: ...
+
+ def __init__(self,
+ *,
+ database_name : typing___Optional[typing___Text] = None,
+ options : typing___Optional[typing___Mapping[typing___Text, typing___Text]] = None,
+ ) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"host",u"port"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Store.HiveConfig: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"host",b"host",u"port",b"port"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Store.HiveConfig: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"database_name",b"database_name",u"options",b"options"]) -> None: ...
+ global___HiveConfig = HiveConfig
class Subscription(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -117,47 +242,54 @@ class Store(google___protobuf___message___Message):
name : typing___Optional[typing___Text] = None,
version : typing___Optional[typing___Text] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> Store.Subscription: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"name",u"version"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Store.Subscription: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"name",b"name",u"version",b"version"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Store.Subscription: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"name",b"name",u"version",b"version"]) -> None: ...
+ global___Subscription = Subscription
name = ... # type: typing___Text
- type = ... # type: Store.StoreType
+ type = ... # type: global___Store.StoreType
@property
- def subscriptions(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[Store.Subscription]: ...
+ def subscriptions(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[global___Store.Subscription]: ...
@property
- def redis_config(self) -> Store.RedisConfig: ...
+ def redis_config(self) -> global___Store.RedisConfig: ...
@property
- def bigquery_config(self) -> Store.BigQueryConfig: ...
+ def bigquery_config(self) -> global___Store.BigQueryConfig: ...
@property
- def cassandra_config(self) -> Store.CassandraConfig: ...
+ def cassandra_config(self) -> global___Store.CassandraConfig: ...
+
+ @property
+ def hive_config(self) -> global___Store.HiveConfig: ...
def __init__(self,
*,
name : typing___Optional[typing___Text] = None,
- type : typing___Optional[Store.StoreType] = None,
- subscriptions : typing___Optional[typing___Iterable[Store.Subscription]] = None,
- redis_config : typing___Optional[Store.RedisConfig] = None,
- bigquery_config : typing___Optional[Store.BigQueryConfig] = None,
- cassandra_config : typing___Optional[Store.CassandraConfig] = None,
+ type : typing___Optional[global___Store.StoreType] = None,
+ subscriptions : typing___Optional[typing___Iterable[global___Store.Subscription]] = None,
+ redis_config : typing___Optional[global___Store.RedisConfig] = None,
+ bigquery_config : typing___Optional[global___Store.BigQueryConfig] = None,
+ cassandra_config : typing___Optional[global___Store.CassandraConfig] = None,
+ hive_config : typing___Optional[global___Store.HiveConfig] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> Store: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"bigquery_config",u"cassandra_config",u"config",u"redis_config"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"bigquery_config",u"cassandra_config",u"config",u"name",u"redis_config",u"subscriptions",u"type"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Store: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"bigquery_config",b"bigquery_config",u"cassandra_config",b"cassandra_config",u"config",b"config",u"redis_config",b"redis_config"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"bigquery_config",b"bigquery_config",u"cassandra_config",b"cassandra_config",u"config",b"config",u"name",b"name",u"redis_config",b"redis_config",u"subscriptions",b"subscriptions",u"type",b"type"]) -> None: ...
- def WhichOneof(self, oneof_group: typing_extensions___Literal[u"config",b"config"]) -> typing_extensions___Literal["redis_config","bigquery_config","cassandra_config"]: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Store: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"bigquery_config",b"bigquery_config",u"cassandra_config",b"cassandra_config",u"config",b"config",u"hive_config",b"hive_config",u"redis_config",b"redis_config"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"bigquery_config",b"bigquery_config",u"cassandra_config",b"cassandra_config",u"config",b"config",u"hive_config",b"hive_config",u"name",b"name",u"redis_config",b"redis_config",u"subscriptions",b"subscriptions",u"type",b"type"]) -> None: ...
+ def WhichOneof(self, oneof_group: typing_extensions___Literal[u"config",b"config"]) -> typing_extensions___Literal["redis_config","bigquery_config","cassandra_config","hive_config"]: ...
+global___Store = Store
diff --git a/sdk/python/feast/loaders/ingest.py b/sdk/python/feast/loaders/ingest.py
index 527ab481fe0..9de411147e0 100644
--- a/sdk/python/feast/loaders/ingest.py
+++ b/sdk/python/feast/loaders/ingest.py
@@ -23,9 +23,7 @@
def _encode_pa_tables(
- file: str,
- fs: FeatureSet,
- row_group_idx: int,
+ file: str, feature_set: str, fields: dict, row_group_idx: int
) -> List[bytes]:
"""
Helper function to encode a PyArrow table(s) read from parquet file(s) into
@@ -42,8 +40,11 @@ def _encode_pa_tables(
File directory of all the parquet file to encode.
Parquet file must have more than one row group.
- fs (feast.feature_set.FeatureSet):
- FeatureSet describing parquet files.
+ feature_set (str):
+ Feature set reference in the format f"{project}/{name}:{version}".
+
+ fields (dict[str, enum.Enum.ValueType]):
+ A mapping of field names to their value types.
row_group_idx(int):
Row group index to read and encode into byte like FeatureRow
@@ -63,13 +64,10 @@ def _encode_pa_tables(
# Preprocess the columns by converting all its values to Proto values
proto_columns = {
- field_name: pa_column_to_proto_column(field.dtype,
- table.column(field_name))
- for field_name, field in fs.fields.items()
+ field_name: pa_column_to_proto_column(dtype, table.column(field_name))
+ for field_name, dtype in fields.items()
}
- feature_set = f"{fs.name}:{fs.version}"
-
# List to store result
feature_rows = []
@@ -125,9 +123,13 @@ def get_feature_row_chunks(
Iterable list of byte encoded FeatureRow(s).
"""
+ feature_set = f"{fs.name}:{fs.version}"
+
+ field_map = {field.name: field.dtype for field in fs.fields.values()}
+
pool = Pool(max_workers)
- func = partial(_encode_pa_tables, file, fs)
- for chunk in pool.imap_unordered(func, row_groups):
+ func = partial(_encode_pa_tables, file, feature_set, field_map)
+ for chunk in pool.imap(func, row_groups):
yield chunk
return
diff --git a/sdk/python/feast/serving/ServingService_pb2.py b/sdk/python/feast/serving/ServingService_pb2.py
index e7258f5a7d5..e252b0bcd77 100644
--- a/sdk/python/feast/serving/ServingService_pb2.py
+++ b/sdk/python/feast/serving/ServingService_pb2.py
@@ -2,8 +2,6 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: feast/serving/ServingService.proto
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
@@ -23,8 +21,8 @@
name='feast/serving/ServingService.proto',
package='feast.serving',
syntax='proto3',
- serialized_options=_b('\n\rfeast.servingB\017ServingAPIProtoZ2github.com/gojek/feast/sdk/go/protos/feast/serving'),
- serialized_pb=_b('\n\"feast/serving/ServingService.proto\x12\rfeast.serving\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x17\x66\x65\x61st/types/Value.proto\"\x1c\n\x1aGetFeastServingInfoRequest\"{\n\x1bGetFeastServingInfoResponse\x12\x0f\n\x07version\x18\x01 \x01(\t\x12-\n\x04type\x18\x02 \x01(\x0e\x32\x1f.feast.serving.FeastServingType\x12\x1c\n\x14job_staging_location\x18\n \x01(\t\"u\n\x11\x46\x65\x61tureSetRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\x12\x15\n\rfeature_names\x18\x03 \x03(\t\x12*\n\x07max_age\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x93\x03\n\x18GetOnlineFeaturesRequest\x12\x36\n\x0c\x66\x65\x61ture_sets\x18\x01 \x03(\x0b\x32 .feast.serving.FeatureSetRequest\x12\x46\n\x0b\x65ntity_rows\x18\x02 \x03(\x0b\x32\x31.feast.serving.GetOnlineFeaturesRequest.EntityRow\x12!\n\x19omit_entities_in_response\x18\x03 \x01(\x08\x1a\xd3\x01\n\tEntityRow\x12\x34\n\x10\x65ntity_timestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12M\n\x06\x66ields\x18\x02 \x03(\x0b\x32=.feast.serving.GetOnlineFeaturesRequest.EntityRow.FieldsEntry\x1a\x41\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.feast.types.Value:\x02\x38\x01\"\x87\x01\n\x17GetBatchFeaturesRequest\x12\x36\n\x0c\x66\x65\x61ture_sets\x18\x01 \x03(\x0b\x32 .feast.serving.FeatureSetRequest\x12\x34\n\x0e\x64\x61taset_source\x18\x02 \x01(\x0b\x32\x1c.feast.serving.DatasetSource\"\x8c\x02\n\x19GetOnlineFeaturesResponse\x12J\n\x0c\x66ield_values\x18\x01 \x03(\x0b\x32\x34.feast.serving.GetOnlineFeaturesResponse.FieldValues\x1a\xa2\x01\n\x0b\x46ieldValues\x12P\n\x06\x66ields\x18\x01 \x03(\x0b\x32@.feast.serving.GetOnlineFeaturesResponse.FieldValues.FieldsEntry\x1a\x41\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.feast.types.Value:\x02\x38\x01\";\n\x18GetBatchFeaturesResponse\x12\x1f\n\x03job\x18\x01 \x01(\x0b\x32\x12.feast.serving.Job\"0\n\rGetJobRequest\x12\x1f\n\x03job\x18\x01 \x01(\x0b\x32\x12.feast.serving.Job\"1\n\x0eGetJobResponse\x12\x1f\n\x03job\x18\x01 \x01(\x0b\x32\x12.feast.serving.Job\"\xb3\x01\n\x03Job\x12\n\n\x02id\x18\x01 \x01(\t\x12$\n\x04type\x18\x02 \x01(\x0e\x32\x16.feast.serving.JobType\x12(\n\x06status\x18\x03 \x01(\x0e\x32\x18.feast.serving.JobStatus\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12\x11\n\tfile_uris\x18\x05 \x03(\t\x12.\n\x0b\x64\x61ta_format\x18\x06 \x01(\x0e\x32\x19.feast.serving.DataFormat\"\xb2\x01\n\rDatasetSource\x12>\n\x0b\x66ile_source\x18\x01 \x01(\x0b\x32\'.feast.serving.DatasetSource.FileSourceH\x00\x1aO\n\nFileSource\x12\x11\n\tfile_uris\x18\x01 \x03(\t\x12.\n\x0b\x64\x61ta_format\x18\x02 \x01(\x0e\x32\x19.feast.serving.DataFormatB\x10\n\x0e\x64\x61taset_source*o\n\x10\x46\x65\x61stServingType\x12\x1e\n\x1a\x46\x45\x41ST_SERVING_TYPE_INVALID\x10\x00\x12\x1d\n\x19\x46\x45\x41ST_SERVING_TYPE_ONLINE\x10\x01\x12\x1c\n\x18\x46\x45\x41ST_SERVING_TYPE_BATCH\x10\x02*6\n\x07JobType\x12\x14\n\x10JOB_TYPE_INVALID\x10\x00\x12\x15\n\x11JOB_TYPE_DOWNLOAD\x10\x01*h\n\tJobStatus\x12\x16\n\x12JOB_STATUS_INVALID\x10\x00\x12\x16\n\x12JOB_STATUS_PENDING\x10\x01\x12\x16\n\x12JOB_STATUS_RUNNING\x10\x02\x12\x13\n\x0fJOB_STATUS_DONE\x10\x03*;\n\nDataFormat\x12\x17\n\x13\x44\x41TA_FORMAT_INVALID\x10\x00\x12\x14\n\x10\x44\x41TA_FORMAT_AVRO\x10\x01\x32\x92\x03\n\x0eServingService\x12l\n\x13GetFeastServingInfo\x12).feast.serving.GetFeastServingInfoRequest\x1a*.feast.serving.GetFeastServingInfoResponse\x12\x66\n\x11GetOnlineFeatures\x12\'.feast.serving.GetOnlineFeaturesRequest\x1a(.feast.serving.GetOnlineFeaturesResponse\x12\x63\n\x10GetBatchFeatures\x12&.feast.serving.GetBatchFeaturesRequest\x1a\'.feast.serving.GetBatchFeaturesResponse\x12\x45\n\x06GetJob\x12\x1c.feast.serving.GetJobRequest\x1a\x1d.feast.serving.GetJobResponseBT\n\rfeast.servingB\x0fServingAPIProtoZ2github.com/gojek/feast/sdk/go/protos/feast/servingb\x06proto3')
+ serialized_options=b'\n\rfeast.servingB\017ServingAPIProtoZ2github.com/gojek/feast/sdk/go/protos/feast/serving',
+ serialized_pb=b'\n\"feast/serving/ServingService.proto\x12\rfeast.serving\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x17\x66\x65\x61st/types/Value.proto\"\x1c\n\x1aGetFeastServingInfoRequest\"{\n\x1bGetFeastServingInfoResponse\x12\x0f\n\x07version\x18\x01 \x01(\t\x12-\n\x04type\x18\x02 \x01(\x0e\x32\x1f.feast.serving.FeastServingType\x12\x1c\n\x14job_staging_location\x18\n \x01(\t\"u\n\x11\x46\x65\x61tureSetRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\x12\x15\n\rfeature_names\x18\x03 \x03(\t\x12*\n\x07max_age\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x93\x03\n\x18GetOnlineFeaturesRequest\x12\x36\n\x0c\x66\x65\x61ture_sets\x18\x01 \x03(\x0b\x32 .feast.serving.FeatureSetRequest\x12\x46\n\x0b\x65ntity_rows\x18\x02 \x03(\x0b\x32\x31.feast.serving.GetOnlineFeaturesRequest.EntityRow\x12!\n\x19omit_entities_in_response\x18\x03 \x01(\x08\x1a\xd3\x01\n\tEntityRow\x12\x34\n\x10\x65ntity_timestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12M\n\x06\x66ields\x18\x02 \x03(\x0b\x32=.feast.serving.GetOnlineFeaturesRequest.EntityRow.FieldsEntry\x1a\x41\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.feast.types.Value:\x02\x38\x01\"\x87\x01\n\x17GetBatchFeaturesRequest\x12\x36\n\x0c\x66\x65\x61ture_sets\x18\x01 \x03(\x0b\x32 .feast.serving.FeatureSetRequest\x12\x34\n\x0e\x64\x61taset_source\x18\x02 \x01(\x0b\x32\x1c.feast.serving.DatasetSource\"\x8c\x02\n\x19GetOnlineFeaturesResponse\x12J\n\x0c\x66ield_values\x18\x01 \x03(\x0b\x32\x34.feast.serving.GetOnlineFeaturesResponse.FieldValues\x1a\xa2\x01\n\x0b\x46ieldValues\x12P\n\x06\x66ields\x18\x01 \x03(\x0b\x32@.feast.serving.GetOnlineFeaturesResponse.FieldValues.FieldsEntry\x1a\x41\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.feast.types.Value:\x02\x38\x01\";\n\x18GetBatchFeaturesResponse\x12\x1f\n\x03job\x18\x01 \x01(\x0b\x32\x12.feast.serving.Job\"0\n\rGetJobRequest\x12\x1f\n\x03job\x18\x01 \x01(\x0b\x32\x12.feast.serving.Job\"1\n\x0eGetJobResponse\x12\x1f\n\x03job\x18\x01 \x01(\x0b\x32\x12.feast.serving.Job\"\xb3\x01\n\x03Job\x12\n\n\x02id\x18\x01 \x01(\t\x12$\n\x04type\x18\x02 \x01(\x0e\x32\x16.feast.serving.JobType\x12(\n\x06status\x18\x03 \x01(\x0e\x32\x18.feast.serving.JobStatus\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12\x11\n\tfile_uris\x18\x05 \x03(\t\x12.\n\x0b\x64\x61ta_format\x18\x06 \x01(\x0e\x32\x19.feast.serving.DataFormat\"\xb2\x01\n\rDatasetSource\x12>\n\x0b\x66ile_source\x18\x01 \x01(\x0b\x32\'.feast.serving.DatasetSource.FileSourceH\x00\x1aO\n\nFileSource\x12\x11\n\tfile_uris\x18\x01 \x03(\t\x12.\n\x0b\x64\x61ta_format\x18\x02 \x01(\x0e\x32\x19.feast.serving.DataFormatB\x10\n\x0e\x64\x61taset_source*o\n\x10\x46\x65\x61stServingType\x12\x1e\n\x1a\x46\x45\x41ST_SERVING_TYPE_INVALID\x10\x00\x12\x1d\n\x19\x46\x45\x41ST_SERVING_TYPE_ONLINE\x10\x01\x12\x1c\n\x18\x46\x45\x41ST_SERVING_TYPE_BATCH\x10\x02*6\n\x07JobType\x12\x14\n\x10JOB_TYPE_INVALID\x10\x00\x12\x15\n\x11JOB_TYPE_DOWNLOAD\x10\x01*h\n\tJobStatus\x12\x16\n\x12JOB_STATUS_INVALID\x10\x00\x12\x16\n\x12JOB_STATUS_PENDING\x10\x01\x12\x16\n\x12JOB_STATUS_RUNNING\x10\x02\x12\x13\n\x0fJOB_STATUS_DONE\x10\x03*;\n\nDataFormat\x12\x17\n\x13\x44\x41TA_FORMAT_INVALID\x10\x00\x12\x14\n\x10\x44\x41TA_FORMAT_AVRO\x10\x01\x32\x92\x03\n\x0eServingService\x12l\n\x13GetFeastServingInfo\x12).feast.serving.GetFeastServingInfoRequest\x1a*.feast.serving.GetFeastServingInfoResponse\x12\x66\n\x11GetOnlineFeatures\x12\'.feast.serving.GetOnlineFeaturesRequest\x1a(.feast.serving.GetOnlineFeaturesResponse\x12\x63\n\x10GetBatchFeatures\x12&.feast.serving.GetBatchFeaturesRequest\x1a\'.feast.serving.GetBatchFeaturesResponse\x12\x45\n\x06GetJob\x12\x1c.feast.serving.GetJobRequest\x1a\x1d.feast.serving.GetJobResponseBT\n\rfeast.servingB\x0fServingAPIProtoZ2github.com/gojek/feast/sdk/go/protos/feast/servingb\x06proto3'
,
dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,feast_dot_types_dot_Value__pb2.DESCRIPTOR,])
@@ -180,7 +178,7 @@
_descriptor.FieldDescriptor(
name='version', full_name='feast.serving.GetFeastServingInfoResponse.version', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -194,7 +192,7 @@
_descriptor.FieldDescriptor(
name='job_staging_location', full_name='feast.serving.GetFeastServingInfoResponse.job_staging_location', index=2,
number=10, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -225,7 +223,7 @@
_descriptor.FieldDescriptor(
name='name', full_name='feast.serving.FeatureSetRequest.name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -277,7 +275,7 @@
_descriptor.FieldDescriptor(
name='key', full_name='feast.serving.GetOnlineFeaturesRequest.EntityRow.FieldsEntry.key', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -294,7 +292,7 @@
nested_types=[],
enum_types=[
],
- serialized_options=_b('8\001'),
+ serialized_options=b'8\001',
is_extendable=False,
syntax='proto3',
extension_ranges=[],
@@ -434,7 +432,7 @@
_descriptor.FieldDescriptor(
name='key', full_name='feast.serving.GetOnlineFeaturesResponse.FieldValues.FieldsEntry.key', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -451,7 +449,7 @@
nested_types=[],
enum_types=[
],
- serialized_options=_b('8\001'),
+ serialized_options=b'8\001',
is_extendable=False,
syntax='proto3',
extension_ranges=[],
@@ -625,7 +623,7 @@
_descriptor.FieldDescriptor(
name='id', full_name='feast.serving.Job.id', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
@@ -646,7 +644,7 @@
_descriptor.FieldDescriptor(
name='error', full_name='feast.serving.Job.error', index=3,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
diff --git a/sdk/python/feast/serving/ServingService_pb2.pyi b/sdk/python/feast/serving/ServingService_pb2.pyi
index d03fa6568fa..09e6d29a458 100644
--- a/sdk/python/feast/serving/ServingService_pb2.pyi
+++ b/sdk/python/feast/serving/ServingService_pb2.pyi
@@ -34,6 +34,7 @@ from typing import (
Optional as typing___Optional,
Text as typing___Text,
Tuple as typing___Tuple,
+ Union as typing___Union,
cast as typing___cast,
)
@@ -42,115 +43,136 @@ from typing_extensions import (
)
-class FeastServingType(int):
+builtin___bool = bool
+builtin___bytes = bytes
+builtin___float = float
+builtin___int = int
+builtin___str = str
+if sys.version_info < (3,):
+ builtin___buffer = buffer
+ builtin___unicode = unicode
+
+
+class FeastServingType(builtin___int):
DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
@classmethod
- def Name(cls, number: int) -> str: ...
+ def Name(cls, number: builtin___int) -> builtin___str: ...
@classmethod
- def Value(cls, name: str) -> FeastServingType: ...
+ def Value(cls, name: builtin___str) -> 'FeastServingType': ...
@classmethod
- def keys(cls) -> typing___List[str]: ...
+ def keys(cls) -> typing___List[builtin___str]: ...
@classmethod
- def values(cls) -> typing___List[FeastServingType]: ...
+ def values(cls) -> typing___List['FeastServingType']: ...
@classmethod
- def items(cls) -> typing___List[typing___Tuple[str, FeastServingType]]: ...
- FEAST_SERVING_TYPE_INVALID = typing___cast(FeastServingType, 0)
- FEAST_SERVING_TYPE_ONLINE = typing___cast(FeastServingType, 1)
- FEAST_SERVING_TYPE_BATCH = typing___cast(FeastServingType, 2)
-FEAST_SERVING_TYPE_INVALID = typing___cast(FeastServingType, 0)
-FEAST_SERVING_TYPE_ONLINE = typing___cast(FeastServingType, 1)
-FEAST_SERVING_TYPE_BATCH = typing___cast(FeastServingType, 2)
-
-class JobType(int):
+ def items(cls) -> typing___List[typing___Tuple[builtin___str, 'FeastServingType']]: ...
+ FEAST_SERVING_TYPE_INVALID = typing___cast('FeastServingType', 0)
+ FEAST_SERVING_TYPE_ONLINE = typing___cast('FeastServingType', 1)
+ FEAST_SERVING_TYPE_BATCH = typing___cast('FeastServingType', 2)
+FEAST_SERVING_TYPE_INVALID = typing___cast('FeastServingType', 0)
+FEAST_SERVING_TYPE_ONLINE = typing___cast('FeastServingType', 1)
+FEAST_SERVING_TYPE_BATCH = typing___cast('FeastServingType', 2)
+global___FeastServingType = FeastServingType
+
+class JobType(builtin___int):
DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
@classmethod
- def Name(cls, number: int) -> str: ...
+ def Name(cls, number: builtin___int) -> builtin___str: ...
@classmethod
- def Value(cls, name: str) -> JobType: ...
+ def Value(cls, name: builtin___str) -> 'JobType': ...
@classmethod
- def keys(cls) -> typing___List[str]: ...
+ def keys(cls) -> typing___List[builtin___str]: ...
@classmethod
- def values(cls) -> typing___List[JobType]: ...
+ def values(cls) -> typing___List['JobType']: ...
@classmethod
- def items(cls) -> typing___List[typing___Tuple[str, JobType]]: ...
- JOB_TYPE_INVALID = typing___cast(JobType, 0)
- JOB_TYPE_DOWNLOAD = typing___cast(JobType, 1)
-JOB_TYPE_INVALID = typing___cast(JobType, 0)
-JOB_TYPE_DOWNLOAD = typing___cast(JobType, 1)
-
-class JobStatus(int):
+ def items(cls) -> typing___List[typing___Tuple[builtin___str, 'JobType']]: ...
+ JOB_TYPE_INVALID = typing___cast('JobType', 0)
+ JOB_TYPE_DOWNLOAD = typing___cast('JobType', 1)
+JOB_TYPE_INVALID = typing___cast('JobType', 0)
+JOB_TYPE_DOWNLOAD = typing___cast('JobType', 1)
+global___JobType = JobType
+
+class JobStatus(builtin___int):
DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
@classmethod
- def Name(cls, number: int) -> str: ...
+ def Name(cls, number: builtin___int) -> builtin___str: ...
@classmethod
- def Value(cls, name: str) -> JobStatus: ...
+ def Value(cls, name: builtin___str) -> 'JobStatus': ...
@classmethod
- def keys(cls) -> typing___List[str]: ...
+ def keys(cls) -> typing___List[builtin___str]: ...
@classmethod
- def values(cls) -> typing___List[JobStatus]: ...
+ def values(cls) -> typing___List['JobStatus']: ...
@classmethod
- def items(cls) -> typing___List[typing___Tuple[str, JobStatus]]: ...
- JOB_STATUS_INVALID = typing___cast(JobStatus, 0)
- JOB_STATUS_PENDING = typing___cast(JobStatus, 1)
- JOB_STATUS_RUNNING = typing___cast(JobStatus, 2)
- JOB_STATUS_DONE = typing___cast(JobStatus, 3)
-JOB_STATUS_INVALID = typing___cast(JobStatus, 0)
-JOB_STATUS_PENDING = typing___cast(JobStatus, 1)
-JOB_STATUS_RUNNING = typing___cast(JobStatus, 2)
-JOB_STATUS_DONE = typing___cast(JobStatus, 3)
-
-class DataFormat(int):
+ def items(cls) -> typing___List[typing___Tuple[builtin___str, 'JobStatus']]: ...
+ JOB_STATUS_INVALID = typing___cast('JobStatus', 0)
+ JOB_STATUS_PENDING = typing___cast('JobStatus', 1)
+ JOB_STATUS_RUNNING = typing___cast('JobStatus', 2)
+ JOB_STATUS_DONE = typing___cast('JobStatus', 3)
+JOB_STATUS_INVALID = typing___cast('JobStatus', 0)
+JOB_STATUS_PENDING = typing___cast('JobStatus', 1)
+JOB_STATUS_RUNNING = typing___cast('JobStatus', 2)
+JOB_STATUS_DONE = typing___cast('JobStatus', 3)
+global___JobStatus = JobStatus
+
+class DataFormat(builtin___int):
DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
@classmethod
- def Name(cls, number: int) -> str: ...
+ def Name(cls, number: builtin___int) -> builtin___str: ...
@classmethod
- def Value(cls, name: str) -> DataFormat: ...
+ def Value(cls, name: builtin___str) -> 'DataFormat': ...
@classmethod
- def keys(cls) -> typing___List[str]: ...
+ def keys(cls) -> typing___List[builtin___str]: ...
@classmethod
- def values(cls) -> typing___List[DataFormat]: ...
+ def values(cls) -> typing___List['DataFormat']: ...
@classmethod
- def items(cls) -> typing___List[typing___Tuple[str, DataFormat]]: ...
- DATA_FORMAT_INVALID = typing___cast(DataFormat, 0)
- DATA_FORMAT_AVRO = typing___cast(DataFormat, 1)
-DATA_FORMAT_INVALID = typing___cast(DataFormat, 0)
-DATA_FORMAT_AVRO = typing___cast(DataFormat, 1)
+ def items(cls) -> typing___List[typing___Tuple[builtin___str, 'DataFormat']]: ...
+ DATA_FORMAT_INVALID = typing___cast('DataFormat', 0)
+ DATA_FORMAT_AVRO = typing___cast('DataFormat', 1)
+DATA_FORMAT_INVALID = typing___cast('DataFormat', 0)
+DATA_FORMAT_AVRO = typing___cast('DataFormat', 1)
+global___DataFormat = DataFormat
class GetFeastServingInfoRequest(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
def __init__(self,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetFeastServingInfoRequest: ...
+ if sys.version_info >= (3,):
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetFeastServingInfoRequest: ...
+ else:
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetFeastServingInfoRequest: ...
def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+global___GetFeastServingInfoRequest = GetFeastServingInfoRequest
class GetFeastServingInfoResponse(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
version = ... # type: typing___Text
- type = ... # type: FeastServingType
+ type = ... # type: global___FeastServingType
job_staging_location = ... # type: typing___Text
def __init__(self,
*,
version : typing___Optional[typing___Text] = None,
- type : typing___Optional[FeastServingType] = None,
+ type : typing___Optional[global___FeastServingType] = None,
job_staging_location : typing___Optional[typing___Text] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetFeastServingInfoResponse: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"job_staging_location",u"type",u"version"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetFeastServingInfoResponse: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"job_staging_location",b"job_staging_location",u"type",b"type",u"version",b"version"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetFeastServingInfoResponse: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"job_staging_location",b"job_staging_location",u"type",b"type",u"version",b"version"]) -> None: ...
+global___GetFeastServingInfoResponse = GetFeastServingInfoResponse
class FeatureSetRequest(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
name = ... # type: typing___Text
- version = ... # type: int
+ version = ... # type: builtin___int
feature_names = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[typing___Text]
@property
@@ -159,20 +181,21 @@ class FeatureSetRequest(google___protobuf___message___Message):
def __init__(self,
*,
name : typing___Optional[typing___Text] = None,
- version : typing___Optional[int] = None,
+ version : typing___Optional[builtin___int] = None,
feature_names : typing___Optional[typing___Iterable[typing___Text]] = None,
max_age : typing___Optional[google___protobuf___duration_pb2___Duration] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> FeatureSetRequest: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"max_age"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"feature_names",u"max_age",u"name",u"version"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> FeatureSetRequest: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"max_age",b"max_age"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"feature_names",b"feature_names",u"max_age",b"max_age",u"name",b"name",u"version",b"version"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> FeatureSetRequest: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"max_age",b"max_age"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"feature_names",b"feature_names",u"max_age",b"max_age",u"name",b"name",u"version",b"version"]) -> None: ...
+global___FeatureSetRequest = FeatureSetRequest
class GetOnlineFeaturesRequest(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -190,16 +213,17 @@ class GetOnlineFeaturesRequest(google___protobuf___message___Message):
key : typing___Optional[typing___Text] = None,
value : typing___Optional[feast___types___Value_pb2___Value] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetOnlineFeaturesRequest.EntityRow.FieldsEntry: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"value"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"key",u"value"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetOnlineFeaturesRequest.EntityRow.FieldsEntry: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"value",b"value"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetOnlineFeaturesRequest.EntityRow.FieldsEntry: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"value",b"value"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ...
+ global___FieldsEntry = FieldsEntry
@property
@@ -213,64 +237,68 @@ class GetOnlineFeaturesRequest(google___protobuf___message___Message):
entity_timestamp : typing___Optional[google___protobuf___timestamp_pb2___Timestamp] = None,
fields : typing___Optional[typing___Mapping[typing___Text, feast___types___Value_pb2___Value]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetOnlineFeaturesRequest.EntityRow: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"entity_timestamp"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"entity_timestamp",u"fields"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetOnlineFeaturesRequest.EntityRow: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"entity_timestamp",b"entity_timestamp"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"entity_timestamp",b"entity_timestamp",u"fields",b"fields"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetOnlineFeaturesRequest.EntityRow: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"entity_timestamp",b"entity_timestamp"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"entity_timestamp",b"entity_timestamp",u"fields",b"fields"]) -> None: ...
+ global___EntityRow = EntityRow
- omit_entities_in_response = ... # type: bool
+ omit_entities_in_response = ... # type: builtin___bool
@property
- def feature_sets(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[FeatureSetRequest]: ...
+ def feature_sets(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[global___FeatureSetRequest]: ...
@property
- def entity_rows(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[GetOnlineFeaturesRequest.EntityRow]: ...
+ def entity_rows(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[global___GetOnlineFeaturesRequest.EntityRow]: ...
def __init__(self,
*,
- feature_sets : typing___Optional[typing___Iterable[FeatureSetRequest]] = None,
- entity_rows : typing___Optional[typing___Iterable[GetOnlineFeaturesRequest.EntityRow]] = None,
- omit_entities_in_response : typing___Optional[bool] = None,
+ feature_sets : typing___Optional[typing___Iterable[global___FeatureSetRequest]] = None,
+ entity_rows : typing___Optional[typing___Iterable[global___GetOnlineFeaturesRequest.EntityRow]] = None,
+ omit_entities_in_response : typing___Optional[builtin___bool] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetOnlineFeaturesRequest: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"entity_rows",u"feature_sets",u"omit_entities_in_response"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetOnlineFeaturesRequest: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"entity_rows",b"entity_rows",u"feature_sets",b"feature_sets",u"omit_entities_in_response",b"omit_entities_in_response"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetOnlineFeaturesRequest: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"entity_rows",b"entity_rows",u"feature_sets",b"feature_sets",u"omit_entities_in_response",b"omit_entities_in_response"]) -> None: ...
+global___GetOnlineFeaturesRequest = GetOnlineFeaturesRequest
class GetBatchFeaturesRequest(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@property
- def feature_sets(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[FeatureSetRequest]: ...
+ def feature_sets(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[global___FeatureSetRequest]: ...
@property
- def dataset_source(self) -> DatasetSource: ...
+ def dataset_source(self) -> global___DatasetSource: ...
def __init__(self,
*,
- feature_sets : typing___Optional[typing___Iterable[FeatureSetRequest]] = None,
- dataset_source : typing___Optional[DatasetSource] = None,
+ feature_sets : typing___Optional[typing___Iterable[global___FeatureSetRequest]] = None,
+ dataset_source : typing___Optional[global___DatasetSource] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetBatchFeaturesRequest: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"dataset_source"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"dataset_source",u"feature_sets"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetBatchFeaturesRequest: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"dataset_source",b"dataset_source"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"dataset_source",b"dataset_source",u"feature_sets",b"feature_sets"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetBatchFeaturesRequest: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"dataset_source",b"dataset_source"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"dataset_source",b"dataset_source",u"feature_sets",b"feature_sets"]) -> None: ...
+global___GetBatchFeaturesRequest = GetBatchFeaturesRequest
class GetOnlineFeaturesResponse(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -288,16 +316,17 @@ class GetOnlineFeaturesResponse(google___protobuf___message___Message):
key : typing___Optional[typing___Text] = None,
value : typing___Optional[feast___types___Value_pb2___Value] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetOnlineFeaturesResponse.FieldValues.FieldsEntry: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"value"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"key",u"value"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetOnlineFeaturesResponse.FieldValues.FieldsEntry: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"value",b"value"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetOnlineFeaturesResponse.FieldValues.FieldsEntry: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"value",b"value"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ...
+ global___FieldsEntry = FieldsEntry
@property
@@ -307,159 +336,171 @@ class GetOnlineFeaturesResponse(google___protobuf___message___Message):
*,
fields : typing___Optional[typing___Mapping[typing___Text, feast___types___Value_pb2___Value]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetOnlineFeaturesResponse.FieldValues: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"fields"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetOnlineFeaturesResponse.FieldValues: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"fields",b"fields"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetOnlineFeaturesResponse.FieldValues: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"fields",b"fields"]) -> None: ...
+ global___FieldValues = FieldValues
@property
- def field_values(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[GetOnlineFeaturesResponse.FieldValues]: ...
+ def field_values(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[global___GetOnlineFeaturesResponse.FieldValues]: ...
def __init__(self,
*,
- field_values : typing___Optional[typing___Iterable[GetOnlineFeaturesResponse.FieldValues]] = None,
+ field_values : typing___Optional[typing___Iterable[global___GetOnlineFeaturesResponse.FieldValues]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetOnlineFeaturesResponse: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"field_values"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetOnlineFeaturesResponse: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"field_values",b"field_values"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetOnlineFeaturesResponse: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"field_values",b"field_values"]) -> None: ...
+global___GetOnlineFeaturesResponse = GetOnlineFeaturesResponse
class GetBatchFeaturesResponse(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@property
- def job(self) -> Job: ...
+ def job(self) -> global___Job: ...
def __init__(self,
*,
- job : typing___Optional[Job] = None,
+ job : typing___Optional[global___Job] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetBatchFeaturesResponse: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"job"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"job"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetBatchFeaturesResponse: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"job",b"job"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"job",b"job"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetBatchFeaturesResponse: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"job",b"job"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"job",b"job"]) -> None: ...
+global___GetBatchFeaturesResponse = GetBatchFeaturesResponse
class GetJobRequest(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@property
- def job(self) -> Job: ...
+ def job(self) -> global___Job: ...
def __init__(self,
*,
- job : typing___Optional[Job] = None,
+ job : typing___Optional[global___Job] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetJobRequest: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"job"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"job"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetJobRequest: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"job",b"job"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"job",b"job"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetJobRequest: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"job",b"job"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"job",b"job"]) -> None: ...
+global___GetJobRequest = GetJobRequest
class GetJobResponse(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@property
- def job(self) -> Job: ...
+ def job(self) -> global___Job: ...
def __init__(self,
*,
- job : typing___Optional[Job] = None,
+ job : typing___Optional[global___Job] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> GetJobResponse: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"job"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"job"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> GetJobResponse: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"job",b"job"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"job",b"job"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> GetJobResponse: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"job",b"job"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"job",b"job"]) -> None: ...
+global___GetJobResponse = GetJobResponse
class Job(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
id = ... # type: typing___Text
- type = ... # type: JobType
- status = ... # type: JobStatus
+ type = ... # type: global___JobType
+ status = ... # type: global___JobStatus
error = ... # type: typing___Text
file_uris = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[typing___Text]
- data_format = ... # type: DataFormat
+ data_format = ... # type: global___DataFormat
def __init__(self,
*,
id : typing___Optional[typing___Text] = None,
- type : typing___Optional[JobType] = None,
- status : typing___Optional[JobStatus] = None,
+ type : typing___Optional[global___JobType] = None,
+ status : typing___Optional[global___JobStatus] = None,
error : typing___Optional[typing___Text] = None,
file_uris : typing___Optional[typing___Iterable[typing___Text]] = None,
- data_format : typing___Optional[DataFormat] = None,
+ data_format : typing___Optional[global___DataFormat] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> Job: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"data_format",u"error",u"file_uris",u"id",u"status",u"type"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Job: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"data_format",b"data_format",u"error",b"error",u"file_uris",b"file_uris",u"id",b"id",u"status",b"status",u"type",b"type"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Job: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"data_format",b"data_format",u"error",b"error",u"file_uris",b"file_uris",u"id",b"id",u"status",b"status",u"type",b"type"]) -> None: ...
+global___Job = Job
class DatasetSource(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
class FileSource(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
file_uris = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[typing___Text]
- data_format = ... # type: DataFormat
+ data_format = ... # type: global___DataFormat
def __init__(self,
*,
file_uris : typing___Optional[typing___Iterable[typing___Text]] = None,
- data_format : typing___Optional[DataFormat] = None,
+ data_format : typing___Optional[global___DataFormat] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> DatasetSource.FileSource: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"data_format",u"file_uris"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> DatasetSource.FileSource: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"data_format",b"data_format",u"file_uris",b"file_uris"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> DatasetSource.FileSource: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"data_format",b"data_format",u"file_uris",b"file_uris"]) -> None: ...
+ global___FileSource = FileSource
@property
- def file_source(self) -> DatasetSource.FileSource: ...
+ def file_source(self) -> global___DatasetSource.FileSource: ...
def __init__(self,
*,
- file_source : typing___Optional[DatasetSource.FileSource] = None,
+ file_source : typing___Optional[global___DatasetSource.FileSource] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> DatasetSource: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"dataset_source",u"file_source"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"dataset_source",u"file_source"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> DatasetSource: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"dataset_source",b"dataset_source",u"file_source",b"file_source"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"dataset_source",b"dataset_source",u"file_source",b"file_source"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> DatasetSource: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"dataset_source",b"dataset_source",u"file_source",b"file_source"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"dataset_source",b"dataset_source",u"file_source",b"file_source"]) -> None: ...
def WhichOneof(self, oneof_group: typing_extensions___Literal[u"dataset_source",b"dataset_source"]) -> typing_extensions___Literal["file_source"]: ...
+global___DatasetSource = DatasetSource
diff --git a/sdk/python/feast/serving/ServingService_pb2_grpc.py b/sdk/python/feast/serving/ServingService_pb2_grpc.py
index c73f9c744a6..1b83bd5c04d 100644
--- a/sdk/python/feast/serving/ServingService_pb2_grpc.py
+++ b/sdk/python/feast/serving/ServingService_pb2_grpc.py
@@ -5,100 +5,167 @@
class ServingServiceStub(object):
- # missing associated documentation comment in .proto file
- pass
-
- def __init__(self, channel):
- """Constructor.
-
- Args:
- channel: A grpc.Channel.
- """
- self.GetFeastServingInfo = channel.unary_unary(
- '/feast.serving.ServingService/GetFeastServingInfo',
- request_serializer=feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoRequest.SerializeToString,
- response_deserializer=feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoResponse.FromString,
- )
- self.GetOnlineFeatures = channel.unary_unary(
- '/feast.serving.ServingService/GetOnlineFeatures',
- request_serializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesRequest.SerializeToString,
- response_deserializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesResponse.FromString,
- )
- self.GetBatchFeatures = channel.unary_unary(
- '/feast.serving.ServingService/GetBatchFeatures',
- request_serializer=feast_dot_serving_dot_ServingService__pb2.GetBatchFeaturesRequest.SerializeToString,
- response_deserializer=feast_dot_serving_dot_ServingService__pb2.GetBatchFeaturesResponse.FromString,
- )
- self.GetJob = channel.unary_unary(
- '/feast.serving.ServingService/GetJob',
- request_serializer=feast_dot_serving_dot_ServingService__pb2.GetJobRequest.SerializeToString,
- response_deserializer=feast_dot_serving_dot_ServingService__pb2.GetJobResponse.FromString,
- )
+ """Missing associated documentation comment in .proto file"""
+
+ def __init__(self, channel):
+ """Constructor.
+
+ Args:
+ channel: A grpc.Channel.
+ """
+ self.GetFeastServingInfo = channel.unary_unary(
+ '/feast.serving.ServingService/GetFeastServingInfo',
+ request_serializer=feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoRequest.SerializeToString,
+ response_deserializer=feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoResponse.FromString,
+ )
+ self.GetOnlineFeatures = channel.unary_unary(
+ '/feast.serving.ServingService/GetOnlineFeatures',
+ request_serializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesRequest.SerializeToString,
+ response_deserializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesResponse.FromString,
+ )
+ self.GetBatchFeatures = channel.unary_unary(
+ '/feast.serving.ServingService/GetBatchFeatures',
+ request_serializer=feast_dot_serving_dot_ServingService__pb2.GetBatchFeaturesRequest.SerializeToString,
+ response_deserializer=feast_dot_serving_dot_ServingService__pb2.GetBatchFeaturesResponse.FromString,
+ )
+ self.GetJob = channel.unary_unary(
+ '/feast.serving.ServingService/GetJob',
+ request_serializer=feast_dot_serving_dot_ServingService__pb2.GetJobRequest.SerializeToString,
+ response_deserializer=feast_dot_serving_dot_ServingService__pb2.GetJobResponse.FromString,
+ )
class ServingServiceServicer(object):
- # missing associated documentation comment in .proto file
- pass
-
- def GetFeastServingInfo(self, request, context):
- """Get information about this Feast serving.
- """
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
- context.set_details('Method not implemented!')
- raise NotImplementedError('Method not implemented!')
-
- def GetOnlineFeatures(self, request, context):
- """Get online features synchronously.
- """
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
- context.set_details('Method not implemented!')
- raise NotImplementedError('Method not implemented!')
-
- def GetBatchFeatures(self, request, context):
- """Get batch features asynchronously.
-
- The client should check the status of the returned job periodically by
- calling ReloadJob to determine if the job has completed successfully
- or with an error. If the job completes successfully i.e.
- status = JOB_STATUS_DONE with no error, then the client can check
- the file_uris for the location to download feature values data.
- The client is assumed to have access to these file URIs.
- """
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
- context.set_details('Method not implemented!')
- raise NotImplementedError('Method not implemented!')
-
- def GetJob(self, request, context):
- """Get the latest job status for batch feature retrieval.
- """
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
- context.set_details('Method not implemented!')
- raise NotImplementedError('Method not implemented!')
+ """Missing associated documentation comment in .proto file"""
+
+ def GetFeastServingInfo(self, request, context):
+ """Get information about this Feast serving.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
+ def GetOnlineFeatures(self, request, context):
+ """Get online features synchronously.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
+ def GetBatchFeatures(self, request, context):
+ """Get batch features asynchronously.
+
+ The client should check the status of the returned job periodically by
+ calling ReloadJob to determine if the job has completed successfully
+ or with an error. If the job completes successfully i.e.
+ status = JOB_STATUS_DONE with no error, then the client can check
+ the file_uris for the location to download feature values data.
+ The client is assumed to have access to these file URIs.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
+
+ def GetJob(self, request, context):
+ """Get the latest job status for batch feature retrieval.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details('Method not implemented!')
+ raise NotImplementedError('Method not implemented!')
def add_ServingServiceServicer_to_server(servicer, server):
- rpc_method_handlers = {
- 'GetFeastServingInfo': grpc.unary_unary_rpc_method_handler(
- servicer.GetFeastServingInfo,
- request_deserializer=feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoRequest.FromString,
- response_serializer=feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoResponse.SerializeToString,
- ),
- 'GetOnlineFeatures': grpc.unary_unary_rpc_method_handler(
- servicer.GetOnlineFeatures,
- request_deserializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesRequest.FromString,
- response_serializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesResponse.SerializeToString,
- ),
- 'GetBatchFeatures': grpc.unary_unary_rpc_method_handler(
- servicer.GetBatchFeatures,
- request_deserializer=feast_dot_serving_dot_ServingService__pb2.GetBatchFeaturesRequest.FromString,
- response_serializer=feast_dot_serving_dot_ServingService__pb2.GetBatchFeaturesResponse.SerializeToString,
- ),
- 'GetJob': grpc.unary_unary_rpc_method_handler(
- servicer.GetJob,
- request_deserializer=feast_dot_serving_dot_ServingService__pb2.GetJobRequest.FromString,
- response_serializer=feast_dot_serving_dot_ServingService__pb2.GetJobResponse.SerializeToString,
- ),
- }
- generic_handler = grpc.method_handlers_generic_handler(
- 'feast.serving.ServingService', rpc_method_handlers)
- server.add_generic_rpc_handlers((generic_handler,))
+ rpc_method_handlers = {
+ 'GetFeastServingInfo': grpc.unary_unary_rpc_method_handler(
+ servicer.GetFeastServingInfo,
+ request_deserializer=feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoRequest.FromString,
+ response_serializer=feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoResponse.SerializeToString,
+ ),
+ 'GetOnlineFeatures': grpc.unary_unary_rpc_method_handler(
+ servicer.GetOnlineFeatures,
+ request_deserializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesRequest.FromString,
+ response_serializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesResponse.SerializeToString,
+ ),
+ 'GetBatchFeatures': grpc.unary_unary_rpc_method_handler(
+ servicer.GetBatchFeatures,
+ request_deserializer=feast_dot_serving_dot_ServingService__pb2.GetBatchFeaturesRequest.FromString,
+ response_serializer=feast_dot_serving_dot_ServingService__pb2.GetBatchFeaturesResponse.SerializeToString,
+ ),
+ 'GetJob': grpc.unary_unary_rpc_method_handler(
+ servicer.GetJob,
+ request_deserializer=feast_dot_serving_dot_ServingService__pb2.GetJobRequest.FromString,
+ response_serializer=feast_dot_serving_dot_ServingService__pb2.GetJobResponse.SerializeToString,
+ ),
+ }
+ generic_handler = grpc.method_handlers_generic_handler(
+ 'feast.serving.ServingService', rpc_method_handlers)
+ server.add_generic_rpc_handlers((generic_handler,))
+
+
+ # This class is part of an EXPERIMENTAL API.
+class ServingService(object):
+ """Missing associated documentation comment in .proto file"""
+
+ @staticmethod
+ def GetFeastServingInfo(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ return grpc.experimental.unary_unary(request, target, '/feast.serving.ServingService/GetFeastServingInfo',
+ feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoRequest.SerializeToString,
+ feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoResponse.FromString,
+ options, channel_credentials,
+ call_credentials, compression, wait_for_ready, timeout, metadata)
+
+ @staticmethod
+ def GetOnlineFeatures(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ return grpc.experimental.unary_unary(request, target, '/feast.serving.ServingService/GetOnlineFeatures',
+ feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesRequest.SerializeToString,
+ feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesResponse.FromString,
+ options, channel_credentials,
+ call_credentials, compression, wait_for_ready, timeout, metadata)
+
+ @staticmethod
+ def GetBatchFeatures(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ return grpc.experimental.unary_unary(request, target, '/feast.serving.ServingService/GetBatchFeatures',
+ feast_dot_serving_dot_ServingService__pb2.GetBatchFeaturesRequest.SerializeToString,
+ feast_dot_serving_dot_ServingService__pb2.GetBatchFeaturesResponse.FromString,
+ options, channel_credentials,
+ call_credentials, compression, wait_for_ready, timeout, metadata)
+
+ @staticmethod
+ def GetJob(request,
+ target,
+ options=(),
+ channel_credentials=None,
+ call_credentials=None,
+ compression=None,
+ wait_for_ready=None,
+ timeout=None,
+ metadata=None):
+ return grpc.experimental.unary_unary(request, target, '/feast.serving.ServingService/GetJob',
+ feast_dot_serving_dot_ServingService__pb2.GetJobRequest.SerializeToString,
+ feast_dot_serving_dot_ServingService__pb2.GetJobResponse.FromString,
+ options, channel_credentials,
+ call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/sdk/python/feast/storage/Redis_pb2.py b/sdk/python/feast/storage/Redis_pb2.py
index 49b0b793781..2823225d749 100644
--- a/sdk/python/feast/storage/Redis_pb2.py
+++ b/sdk/python/feast/storage/Redis_pb2.py
@@ -2,8 +2,6 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: feast/storage/Redis.proto
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -20,8 +18,8 @@
name='feast/storage/Redis.proto',
package='feast.storage',
syntax='proto3',
- serialized_options=_b('\n\rfeast.storageB\nRedisProtoZ2github.com/gojek/feast/sdk/go/protos/feast/storage'),
- serialized_pb=_b('\n\x19\x66\x65\x61st/storage/Redis.proto\x12\rfeast.storage\x1a\x17\x66\x65\x61st/types/Field.proto\"E\n\x08RedisKey\x12\x13\n\x0b\x66\x65\x61ture_set\x18\x02 \x01(\t\x12$\n\x08\x65ntities\x18\x03 \x03(\x0b\x32\x12.feast.types.FieldBO\n\rfeast.storageB\nRedisProtoZ2github.com/gojek/feast/sdk/go/protos/feast/storageb\x06proto3')
+ serialized_options=b'\n\rfeast.storageB\nRedisProtoZ2github.com/gojek/feast/sdk/go/protos/feast/storage',
+ serialized_pb=b'\n\x19\x66\x65\x61st/storage/Redis.proto\x12\rfeast.storage\x1a\x17\x66\x65\x61st/types/Field.proto\"E\n\x08RedisKey\x12\x13\n\x0b\x66\x65\x61ture_set\x18\x02 \x01(\t\x12$\n\x08\x65ntities\x18\x03 \x03(\x0b\x32\x12.feast.types.FieldBO\n\rfeast.storageB\nRedisProtoZ2github.com/gojek/feast/sdk/go/protos/feast/storageb\x06proto3'
,
dependencies=[feast_dot_types_dot_Field__pb2.DESCRIPTOR,])
@@ -38,7 +36,7 @@
_descriptor.FieldDescriptor(
name='feature_set', full_name='feast.storage.RedisKey.feature_set', index=0,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
diff --git a/sdk/python/feast/storage/Redis_pb2.pyi b/sdk/python/feast/storage/Redis_pb2.pyi
index 717aae79db2..4235978f55b 100644
--- a/sdk/python/feast/storage/Redis_pb2.pyi
+++ b/sdk/python/feast/storage/Redis_pb2.pyi
@@ -20,6 +20,7 @@ from typing import (
Iterable as typing___Iterable,
Optional as typing___Optional,
Text as typing___Text,
+ Union as typing___Union,
)
from typing_extensions import (
@@ -27,6 +28,15 @@ from typing_extensions import (
)
+builtin___bool = bool
+builtin___bytes = bytes
+builtin___float = float
+builtin___int = int
+if sys.version_info < (3,):
+ builtin___buffer = buffer
+ builtin___unicode = unicode
+
+
class RedisKey(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
feature_set = ... # type: typing___Text
@@ -39,11 +49,13 @@ class RedisKey(google___protobuf___message___Message):
feature_set : typing___Optional[typing___Text] = None,
entities : typing___Optional[typing___Iterable[feast___types___Field_pb2___Field]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> RedisKey: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"entities",u"feature_set"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> RedisKey: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"entities",b"entities",u"feature_set",b"feature_set"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> RedisKey: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"entities",b"entities",u"feature_set",b"feature_set"]) -> None: ...
+global___RedisKey = RedisKey
diff --git a/sdk/python/feast/types/FeatureRowExtended_pb2.py b/sdk/python/feast/types/FeatureRowExtended_pb2.py
index e7372958168..6634163339f 100644
--- a/sdk/python/feast/types/FeatureRowExtended_pb2.py
+++ b/sdk/python/feast/types/FeatureRowExtended_pb2.py
@@ -2,8 +2,6 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: feast/types/FeatureRowExtended.proto
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -21,8 +19,8 @@
name='feast/types/FeatureRowExtended.proto',
package='feast.types',
syntax='proto3',
- serialized_options=_b('\n\013feast.typesB\027FeatureRowExtendedProtoZ0github.com/gojek/feast/sdk/go/protos/feast/types'),
- serialized_pb=_b('\n$feast/types/FeatureRowExtended.proto\x12\x0b\x66\x65\x61st.types\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1c\x66\x65\x61st/types/FeatureRow.proto\"O\n\x05\x45rror\x12\r\n\x05\x63\x61use\x18\x01 \x01(\t\x12\x11\n\ttransform\x18\x02 \x01(\t\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\x13\n\x0bstack_trace\x18\x04 \x01(\t\">\n\x07\x41ttempt\x12\x10\n\x08\x61ttempts\x18\x01 \x01(\x05\x12!\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x12.feast.types.Error\"\x96\x01\n\x12\x46\x65\x61tureRowExtended\x12$\n\x03row\x18\x01 \x01(\x0b\x32\x17.feast.types.FeatureRow\x12*\n\x0clast_attempt\x18\x02 \x01(\x0b\x32\x14.feast.types.Attempt\x12.\n\nfirst_seen\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampBX\n\x0b\x66\x65\x61st.typesB\x17\x46\x65\x61tureRowExtendedProtoZ0github.com/gojek/feast/sdk/go/protos/feast/typesb\x06proto3')
+ serialized_options=b'\n\013feast.typesB\027FeatureRowExtendedProtoZ0github.com/gojek/feast/sdk/go/protos/feast/types',
+ serialized_pb=b'\n$feast/types/FeatureRowExtended.proto\x12\x0b\x66\x65\x61st.types\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1c\x66\x65\x61st/types/FeatureRow.proto\"O\n\x05\x45rror\x12\r\n\x05\x63\x61use\x18\x01 \x01(\t\x12\x11\n\ttransform\x18\x02 \x01(\t\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\x13\n\x0bstack_trace\x18\x04 \x01(\t\">\n\x07\x41ttempt\x12\x10\n\x08\x61ttempts\x18\x01 \x01(\x05\x12!\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x12.feast.types.Error\"\x96\x01\n\x12\x46\x65\x61tureRowExtended\x12$\n\x03row\x18\x01 \x01(\x0b\x32\x17.feast.types.FeatureRow\x12*\n\x0clast_attempt\x18\x02 \x01(\x0b\x32\x14.feast.types.Attempt\x12.\n\nfirst_seen\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampBX\n\x0b\x66\x65\x61st.typesB\x17\x46\x65\x61tureRowExtendedProtoZ0github.com/gojek/feast/sdk/go/protos/feast/typesb\x06proto3'
,
dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,feast_dot_types_dot_FeatureRow__pb2.DESCRIPTOR,])
@@ -39,28 +37,28 @@
_descriptor.FieldDescriptor(
name='cause', full_name='feast.types.Error.cause', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='transform', full_name='feast.types.Error.transform', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='message', full_name='feast.types.Error.message', index=2,
number=3, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='stack_trace', full_name='feast.types.Error.stack_trace', index=3,
number=4, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
diff --git a/sdk/python/feast/types/FeatureRowExtended_pb2.pyi b/sdk/python/feast/types/FeatureRowExtended_pb2.pyi
index 4f3d02c8ee6..0e2599fa530 100644
--- a/sdk/python/feast/types/FeatureRowExtended_pb2.pyi
+++ b/sdk/python/feast/types/FeatureRowExtended_pb2.pyi
@@ -19,6 +19,7 @@ from google.protobuf.timestamp_pb2 import (
from typing import (
Optional as typing___Optional,
Text as typing___Text,
+ Union as typing___Union,
)
from typing_extensions import (
@@ -26,6 +27,15 @@ from typing_extensions import (
)
+builtin___bool = bool
+builtin___bytes = bytes
+builtin___float = float
+builtin___int = int
+if sys.version_info < (3,):
+ builtin___buffer = buffer
+ builtin___unicode = unicode
+
+
class Error(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
cause = ... # type: typing___Text
@@ -40,37 +50,40 @@ class Error(google___protobuf___message___Message):
message : typing___Optional[typing___Text] = None,
stack_trace : typing___Optional[typing___Text] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> Error: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"cause",u"message",u"stack_trace",u"transform"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Error: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"cause",b"cause",u"message",b"message",u"stack_trace",b"stack_trace",u"transform",b"transform"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Error: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"cause",b"cause",u"message",b"message",u"stack_trace",b"stack_trace",u"transform",b"transform"]) -> None: ...
+global___Error = Error
class Attempt(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
- attempts = ... # type: int
+ attempts = ... # type: builtin___int
@property
- def error(self) -> Error: ...
+ def error(self) -> global___Error: ...
def __init__(self,
*,
- attempts : typing___Optional[int] = None,
- error : typing___Optional[Error] = None,
+ attempts : typing___Optional[builtin___int] = None,
+ error : typing___Optional[global___Error] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> Attempt: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"error"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"attempts",u"error"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Attempt: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"error",b"error"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"attempts",b"attempts",u"error",b"error"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Attempt: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"error",b"error"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"attempts",b"attempts",u"error",b"error"]) -> None: ...
+global___Attempt = Attempt
class FeatureRowExtended(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -79,7 +92,7 @@ class FeatureRowExtended(google___protobuf___message___Message):
def row(self) -> feast___types___FeatureRow_pb2___FeatureRow: ...
@property
- def last_attempt(self) -> Attempt: ...
+ def last_attempt(self) -> global___Attempt: ...
@property
def first_seen(self) -> google___protobuf___timestamp_pb2___Timestamp: ...
@@ -87,16 +100,17 @@ class FeatureRowExtended(google___protobuf___message___Message):
def __init__(self,
*,
row : typing___Optional[feast___types___FeatureRow_pb2___FeatureRow] = None,
- last_attempt : typing___Optional[Attempt] = None,
+ last_attempt : typing___Optional[global___Attempt] = None,
first_seen : typing___Optional[google___protobuf___timestamp_pb2___Timestamp] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> FeatureRowExtended: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"first_seen",u"last_attempt",u"row"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"first_seen",u"last_attempt",u"row"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> FeatureRowExtended: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"first_seen",b"first_seen",u"last_attempt",b"last_attempt",u"row",b"row"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"first_seen",b"first_seen",u"last_attempt",b"last_attempt",u"row",b"row"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> FeatureRowExtended: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"first_seen",b"first_seen",u"last_attempt",b"last_attempt",u"row",b"row"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"first_seen",b"first_seen",u"last_attempt",b"last_attempt",u"row",b"row"]) -> None: ...
+global___FeatureRowExtended = FeatureRowExtended
diff --git a/sdk/python/feast/types/FeatureRow_pb2.py b/sdk/python/feast/types/FeatureRow_pb2.py
index 1b6c16910f2..ff5ac8a956d 100644
--- a/sdk/python/feast/types/FeatureRow_pb2.py
+++ b/sdk/python/feast/types/FeatureRow_pb2.py
@@ -2,8 +2,6 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: feast/types/FeatureRow.proto
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -21,8 +19,8 @@
name='feast/types/FeatureRow.proto',
package='feast.types',
syntax='proto3',
- serialized_options=_b('\n\013feast.typesB\017FeatureRowProtoZ0github.com/gojek/feast/sdk/go/protos/feast/types'),
- serialized_pb=_b('\n\x1c\x66\x65\x61st/types/FeatureRow.proto\x12\x0b\x66\x65\x61st.types\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17\x66\x65\x61st/types/Field.proto\"z\n\nFeatureRow\x12\"\n\x06\x66ields\x18\x02 \x03(\x0b\x32\x12.feast.types.Field\x12\x33\n\x0f\x65vent_timestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0b\x66\x65\x61ture_set\x18\x06 \x01(\tBP\n\x0b\x66\x65\x61st.typesB\x0f\x46\x65\x61tureRowProtoZ0github.com/gojek/feast/sdk/go/protos/feast/typesb\x06proto3')
+ serialized_options=b'\n\013feast.typesB\017FeatureRowProtoZ0github.com/gojek/feast/sdk/go/protos/feast/types',
+ serialized_pb=b'\n\x1c\x66\x65\x61st/types/FeatureRow.proto\x12\x0b\x66\x65\x61st.types\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17\x66\x65\x61st/types/Field.proto\"z\n\nFeatureRow\x12\"\n\x06\x66ields\x18\x02 \x03(\x0b\x32\x12.feast.types.Field\x12\x33\n\x0f\x65vent_timestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0b\x66\x65\x61ture_set\x18\x06 \x01(\tBP\n\x0b\x66\x65\x61st.typesB\x0f\x46\x65\x61tureRowProtoZ0github.com/gojek/feast/sdk/go/protos/feast/typesb\x06proto3'
,
dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,feast_dot_types_dot_Field__pb2.DESCRIPTOR,])
@@ -53,7 +51,7 @@
_descriptor.FieldDescriptor(
name='feature_set', full_name='feast.types.FeatureRow.feature_set', index=2,
number=6, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
diff --git a/sdk/python/feast/types/FeatureRow_pb2.pyi b/sdk/python/feast/types/FeatureRow_pb2.pyi
index 9bf745f9130..ca464c86d99 100644
--- a/sdk/python/feast/types/FeatureRow_pb2.pyi
+++ b/sdk/python/feast/types/FeatureRow_pb2.pyi
@@ -24,6 +24,7 @@ from typing import (
Iterable as typing___Iterable,
Optional as typing___Optional,
Text as typing___Text,
+ Union as typing___Union,
)
from typing_extensions import (
@@ -31,6 +32,15 @@ from typing_extensions import (
)
+builtin___bool = bool
+builtin___bytes = bytes
+builtin___float = float
+builtin___int = int
+if sys.version_info < (3,):
+ builtin___buffer = buffer
+ builtin___unicode = unicode
+
+
class FeatureRow(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
feature_set = ... # type: typing___Text
@@ -47,13 +57,14 @@ class FeatureRow(google___protobuf___message___Message):
event_timestamp : typing___Optional[google___protobuf___timestamp_pb2___Timestamp] = None,
feature_set : typing___Optional[typing___Text] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> FeatureRow: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"event_timestamp"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"event_timestamp",u"feature_set",u"fields"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> FeatureRow: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"event_timestamp",b"event_timestamp"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"event_timestamp",b"event_timestamp",u"feature_set",b"feature_set",u"fields",b"fields"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> FeatureRow: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"event_timestamp",b"event_timestamp"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"event_timestamp",b"event_timestamp",u"feature_set",b"feature_set",u"fields",b"fields"]) -> None: ...
+global___FeatureRow = FeatureRow
diff --git a/sdk/python/feast/types/Field_pb2.py b/sdk/python/feast/types/Field_pb2.py
index 95bcf38cf9d..67cee04f961 100644
--- a/sdk/python/feast/types/Field_pb2.py
+++ b/sdk/python/feast/types/Field_pb2.py
@@ -2,8 +2,6 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: feast/types/Field.proto
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -20,8 +18,8 @@
name='feast/types/Field.proto',
package='feast.types',
syntax='proto3',
- serialized_options=_b('\n\013feast.typesB\nFieldProtoZ0github.com/gojek/feast/sdk/go/protos/feast/types'),
- serialized_pb=_b('\n\x17\x66\x65\x61st/types/Field.proto\x12\x0b\x66\x65\x61st.types\x1a\x17\x66\x65\x61st/types/Value.proto\"8\n\x05\x46ield\x12\x0c\n\x04name\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.feast.types.ValueBK\n\x0b\x66\x65\x61st.typesB\nFieldProtoZ0github.com/gojek/feast/sdk/go/protos/feast/typesb\x06proto3')
+ serialized_options=b'\n\013feast.typesB\nFieldProtoZ0github.com/gojek/feast/sdk/go/protos/feast/types',
+ serialized_pb=b'\n\x17\x66\x65\x61st/types/Field.proto\x12\x0b\x66\x65\x61st.types\x1a\x17\x66\x65\x61st/types/Value.proto\"8\n\x05\x46ield\x12\x0c\n\x04name\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.feast.types.ValueBK\n\x0b\x66\x65\x61st.typesB\nFieldProtoZ0github.com/gojek/feast/sdk/go/protos/feast/typesb\x06proto3'
,
dependencies=[feast_dot_types_dot_Value__pb2.DESCRIPTOR,])
@@ -38,7 +36,7 @@
_descriptor.FieldDescriptor(
name='name', full_name='feast.types.Field.name', index=0,
number=1, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
diff --git a/sdk/python/feast/types/Field_pb2.pyi b/sdk/python/feast/types/Field_pb2.pyi
index 1305503fab7..97239b00710 100644
--- a/sdk/python/feast/types/Field_pb2.pyi
+++ b/sdk/python/feast/types/Field_pb2.pyi
@@ -15,6 +15,7 @@ from google.protobuf.message import (
from typing import (
Optional as typing___Optional,
Text as typing___Text,
+ Union as typing___Union,
)
from typing_extensions import (
@@ -22,6 +23,15 @@ from typing_extensions import (
)
+builtin___bool = bool
+builtin___bytes = bytes
+builtin___float = float
+builtin___int = int
+if sys.version_info < (3,):
+ builtin___buffer = buffer
+ builtin___unicode = unicode
+
+
class Field(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
name = ... # type: typing___Text
@@ -34,13 +44,14 @@ class Field(google___protobuf___message___Message):
name : typing___Optional[typing___Text] = None,
value : typing___Optional[feast___types___Value_pb2___Value] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> Field: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"value"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"name",u"value"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Field: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"value",b"value"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"name",b"name",u"value",b"value"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Field: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"value",b"value"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"name",b"name",u"value",b"value"]) -> None: ...
+global___Field = Field
diff --git a/sdk/python/feast/types/Value_pb2.py b/sdk/python/feast/types/Value_pb2.py
index fe2cd125ca5..7796c7e4161 100644
--- a/sdk/python/feast/types/Value_pb2.py
+++ b/sdk/python/feast/types/Value_pb2.py
@@ -2,8 +2,6 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: feast/types/Value.proto
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
@@ -19,8 +17,8 @@
name='feast/types/Value.proto',
package='feast.types',
syntax='proto3',
- serialized_options=_b('\n\013feast.typesB\nValueProtoZ0github.com/gojek/feast/sdk/go/protos/feast/types'),
- serialized_pb=_b('\n\x17\x66\x65\x61st/types/Value.proto\x12\x0b\x66\x65\x61st.types\"\xe0\x01\n\tValueType\"\xd2\x01\n\x04\x45num\x12\x0b\n\x07INVALID\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\n\n\x06STRING\x10\x02\x12\t\n\x05INT32\x10\x03\x12\t\n\x05INT64\x10\x04\x12\n\n\x06\x44OUBLE\x10\x05\x12\t\n\x05\x46LOAT\x10\x06\x12\x08\n\x04\x42OOL\x10\x07\x12\x0e\n\nBYTES_LIST\x10\x0b\x12\x0f\n\x0bSTRING_LIST\x10\x0c\x12\x0e\n\nINT32_LIST\x10\r\x12\x0e\n\nINT64_LIST\x10\x0e\x12\x0f\n\x0b\x44OUBLE_LIST\x10\x0f\x12\x0e\n\nFLOAT_LIST\x10\x10\x12\r\n\tBOOL_LIST\x10\x11\"\x82\x04\n\x05Value\x12\x13\n\tbytes_val\x18\x01 \x01(\x0cH\x00\x12\x14\n\nstring_val\x18\x02 \x01(\tH\x00\x12\x13\n\tint32_val\x18\x03 \x01(\x05H\x00\x12\x13\n\tint64_val\x18\x04 \x01(\x03H\x00\x12\x14\n\ndouble_val\x18\x05 \x01(\x01H\x00\x12\x13\n\tfloat_val\x18\x06 \x01(\x02H\x00\x12\x12\n\x08\x62ool_val\x18\x07 \x01(\x08H\x00\x12\x30\n\x0e\x62ytes_list_val\x18\x0b \x01(\x0b\x32\x16.feast.types.BytesListH\x00\x12\x32\n\x0fstring_list_val\x18\x0c \x01(\x0b\x32\x17.feast.types.StringListH\x00\x12\x30\n\x0eint32_list_val\x18\r \x01(\x0b\x32\x16.feast.types.Int32ListH\x00\x12\x30\n\x0eint64_list_val\x18\x0e \x01(\x0b\x32\x16.feast.types.Int64ListH\x00\x12\x32\n\x0f\x64ouble_list_val\x18\x0f \x01(\x0b\x32\x17.feast.types.DoubleListH\x00\x12\x30\n\x0e\x66loat_list_val\x18\x10 \x01(\x0b\x32\x16.feast.types.FloatListH\x00\x12.\n\rbool_list_val\x18\x11 \x01(\x0b\x32\x15.feast.types.BoolListH\x00\x42\x05\n\x03val\"\x18\n\tBytesList\x12\x0b\n\x03val\x18\x01 \x03(\x0c\"\x19\n\nStringList\x12\x0b\n\x03val\x18\x01 \x03(\t\"\x18\n\tInt32List\x12\x0b\n\x03val\x18\x01 \x03(\x05\"\x18\n\tInt64List\x12\x0b\n\x03val\x18\x01 \x03(\x03\"\x19\n\nDoubleList\x12\x0b\n\x03val\x18\x01 \x03(\x01\"\x18\n\tFloatList\x12\x0b\n\x03val\x18\x01 \x03(\x02\"\x17\n\x08\x42oolList\x12\x0b\n\x03val\x18\x01 \x03(\x08\x42K\n\x0b\x66\x65\x61st.typesB\nValueProtoZ0github.com/gojek/feast/sdk/go/protos/feast/typesb\x06proto3')
+ serialized_options=b'\n\013feast.typesB\nValueProtoZ0github.com/gojek/feast/sdk/go/protos/feast/types',
+ serialized_pb=b'\n\x17\x66\x65\x61st/types/Value.proto\x12\x0b\x66\x65\x61st.types\"\xe0\x01\n\tValueType\"\xd2\x01\n\x04\x45num\x12\x0b\n\x07INVALID\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\n\n\x06STRING\x10\x02\x12\t\n\x05INT32\x10\x03\x12\t\n\x05INT64\x10\x04\x12\n\n\x06\x44OUBLE\x10\x05\x12\t\n\x05\x46LOAT\x10\x06\x12\x08\n\x04\x42OOL\x10\x07\x12\x0e\n\nBYTES_LIST\x10\x0b\x12\x0f\n\x0bSTRING_LIST\x10\x0c\x12\x0e\n\nINT32_LIST\x10\r\x12\x0e\n\nINT64_LIST\x10\x0e\x12\x0f\n\x0b\x44OUBLE_LIST\x10\x0f\x12\x0e\n\nFLOAT_LIST\x10\x10\x12\r\n\tBOOL_LIST\x10\x11\"\x82\x04\n\x05Value\x12\x13\n\tbytes_val\x18\x01 \x01(\x0cH\x00\x12\x14\n\nstring_val\x18\x02 \x01(\tH\x00\x12\x13\n\tint32_val\x18\x03 \x01(\x05H\x00\x12\x13\n\tint64_val\x18\x04 \x01(\x03H\x00\x12\x14\n\ndouble_val\x18\x05 \x01(\x01H\x00\x12\x13\n\tfloat_val\x18\x06 \x01(\x02H\x00\x12\x12\n\x08\x62ool_val\x18\x07 \x01(\x08H\x00\x12\x30\n\x0e\x62ytes_list_val\x18\x0b \x01(\x0b\x32\x16.feast.types.BytesListH\x00\x12\x32\n\x0fstring_list_val\x18\x0c \x01(\x0b\x32\x17.feast.types.StringListH\x00\x12\x30\n\x0eint32_list_val\x18\r \x01(\x0b\x32\x16.feast.types.Int32ListH\x00\x12\x30\n\x0eint64_list_val\x18\x0e \x01(\x0b\x32\x16.feast.types.Int64ListH\x00\x12\x32\n\x0f\x64ouble_list_val\x18\x0f \x01(\x0b\x32\x17.feast.types.DoubleListH\x00\x12\x30\n\x0e\x66loat_list_val\x18\x10 \x01(\x0b\x32\x16.feast.types.FloatListH\x00\x12.\n\rbool_list_val\x18\x11 \x01(\x0b\x32\x15.feast.types.BoolListH\x00\x42\x05\n\x03val\"\x18\n\tBytesList\x12\x0b\n\x03val\x18\x01 \x03(\x0c\"\x19\n\nStringList\x12\x0b\n\x03val\x18\x01 \x03(\t\"\x18\n\tInt32List\x12\x0b\n\x03val\x18\x01 \x03(\x05\"\x18\n\tInt64List\x12\x0b\n\x03val\x18\x01 \x03(\x03\"\x19\n\nDoubleList\x12\x0b\n\x03val\x18\x01 \x03(\x01\"\x18\n\tFloatList\x12\x0b\n\x03val\x18\x01 \x03(\x02\"\x17\n\x08\x42oolList\x12\x0b\n\x03val\x18\x01 \x03(\x08\x42K\n\x0b\x66\x65\x61st.typesB\nValueProtoZ0github.com/gojek/feast/sdk/go/protos/feast/typesb\x06proto3'
)
@@ -135,14 +133,14 @@
_descriptor.FieldDescriptor(
name='bytes_val', full_name='feast.types.Value.bytes_val', index=0,
number=1, type=12, cpp_type=9, label=1,
- has_default_value=False, default_value=_b(""),
+ has_default_value=False, default_value=b"",
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
_descriptor.FieldDescriptor(
name='string_val', full_name='feast.types.Value.string_val', index=1,
number=2, type=9, cpp_type=9, label=1,
- has_default_value=False, default_value=_b("").decode('utf-8'),
+ has_default_value=False, default_value=b"".decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
diff --git a/sdk/python/feast/types/Value_pb2.pyi b/sdk/python/feast/types/Value_pb2.pyi
index d8b8a73dd36..9b8c450ca03 100644
--- a/sdk/python/feast/types/Value_pb2.pyi
+++ b/sdk/python/feast/types/Value_pb2.pyi
@@ -19,6 +19,7 @@ from typing import (
Optional as typing___Optional,
Text as typing___Text,
Tuple as typing___Tuple,
+ Union as typing___Union,
cast as typing___cast,
)
@@ -27,135 +28,154 @@ from typing_extensions import (
)
+builtin___bool = bool
+builtin___bytes = bytes
+builtin___float = float
+builtin___int = int
+builtin___str = str
+if sys.version_info < (3,):
+ builtin___buffer = buffer
+ builtin___unicode = unicode
+
+
class ValueType(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
- class Enum(int):
+ class Enum(builtin___int):
DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
@classmethod
- def Name(cls, number: int) -> str: ...
+ def Name(cls, number: builtin___int) -> builtin___str: ...
@classmethod
- def Value(cls, name: str) -> ValueType.Enum: ...
+ def Value(cls, name: builtin___str) -> 'ValueType.Enum': ...
@classmethod
- def keys(cls) -> typing___List[str]: ...
+ def keys(cls) -> typing___List[builtin___str]: ...
@classmethod
- def values(cls) -> typing___List[ValueType.Enum]: ...
+ def values(cls) -> typing___List['ValueType.Enum']: ...
@classmethod
- def items(cls) -> typing___List[typing___Tuple[str, ValueType.Enum]]: ...
- INVALID = typing___cast(ValueType.Enum, 0)
- BYTES = typing___cast(ValueType.Enum, 1)
- STRING = typing___cast(ValueType.Enum, 2)
- INT32 = typing___cast(ValueType.Enum, 3)
- INT64 = typing___cast(ValueType.Enum, 4)
- DOUBLE = typing___cast(ValueType.Enum, 5)
- FLOAT = typing___cast(ValueType.Enum, 6)
- BOOL = typing___cast(ValueType.Enum, 7)
- BYTES_LIST = typing___cast(ValueType.Enum, 11)
- STRING_LIST = typing___cast(ValueType.Enum, 12)
- INT32_LIST = typing___cast(ValueType.Enum, 13)
- INT64_LIST = typing___cast(ValueType.Enum, 14)
- DOUBLE_LIST = typing___cast(ValueType.Enum, 15)
- FLOAT_LIST = typing___cast(ValueType.Enum, 16)
- BOOL_LIST = typing___cast(ValueType.Enum, 17)
- INVALID = typing___cast(ValueType.Enum, 0)
- BYTES = typing___cast(ValueType.Enum, 1)
- STRING = typing___cast(ValueType.Enum, 2)
- INT32 = typing___cast(ValueType.Enum, 3)
- INT64 = typing___cast(ValueType.Enum, 4)
- DOUBLE = typing___cast(ValueType.Enum, 5)
- FLOAT = typing___cast(ValueType.Enum, 6)
- BOOL = typing___cast(ValueType.Enum, 7)
- BYTES_LIST = typing___cast(ValueType.Enum, 11)
- STRING_LIST = typing___cast(ValueType.Enum, 12)
- INT32_LIST = typing___cast(ValueType.Enum, 13)
- INT64_LIST = typing___cast(ValueType.Enum, 14)
- DOUBLE_LIST = typing___cast(ValueType.Enum, 15)
- FLOAT_LIST = typing___cast(ValueType.Enum, 16)
- BOOL_LIST = typing___cast(ValueType.Enum, 17)
+ def items(cls) -> typing___List[typing___Tuple[builtin___str, 'ValueType.Enum']]: ...
+ INVALID = typing___cast('ValueType.Enum', 0)
+ BYTES = typing___cast('ValueType.Enum', 1)
+ STRING = typing___cast('ValueType.Enum', 2)
+ INT32 = typing___cast('ValueType.Enum', 3)
+ INT64 = typing___cast('ValueType.Enum', 4)
+ DOUBLE = typing___cast('ValueType.Enum', 5)
+ FLOAT = typing___cast('ValueType.Enum', 6)
+ BOOL = typing___cast('ValueType.Enum', 7)
+ BYTES_LIST = typing___cast('ValueType.Enum', 11)
+ STRING_LIST = typing___cast('ValueType.Enum', 12)
+ INT32_LIST = typing___cast('ValueType.Enum', 13)
+ INT64_LIST = typing___cast('ValueType.Enum', 14)
+ DOUBLE_LIST = typing___cast('ValueType.Enum', 15)
+ FLOAT_LIST = typing___cast('ValueType.Enum', 16)
+ BOOL_LIST = typing___cast('ValueType.Enum', 17)
+ INVALID = typing___cast('ValueType.Enum', 0)
+ BYTES = typing___cast('ValueType.Enum', 1)
+ STRING = typing___cast('ValueType.Enum', 2)
+ INT32 = typing___cast('ValueType.Enum', 3)
+ INT64 = typing___cast('ValueType.Enum', 4)
+ DOUBLE = typing___cast('ValueType.Enum', 5)
+ FLOAT = typing___cast('ValueType.Enum', 6)
+ BOOL = typing___cast('ValueType.Enum', 7)
+ BYTES_LIST = typing___cast('ValueType.Enum', 11)
+ STRING_LIST = typing___cast('ValueType.Enum', 12)
+ INT32_LIST = typing___cast('ValueType.Enum', 13)
+ INT64_LIST = typing___cast('ValueType.Enum', 14)
+ DOUBLE_LIST = typing___cast('ValueType.Enum', 15)
+ FLOAT_LIST = typing___cast('ValueType.Enum', 16)
+ BOOL_LIST = typing___cast('ValueType.Enum', 17)
+ global___Enum = Enum
def __init__(self,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> ValueType: ...
+ if sys.version_info >= (3,):
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> ValueType: ...
+ else:
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> ValueType: ...
def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+global___ValueType = ValueType
class Value(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
- bytes_val = ... # type: bytes
+ bytes_val = ... # type: builtin___bytes
string_val = ... # type: typing___Text
- int32_val = ... # type: int
- int64_val = ... # type: int
- double_val = ... # type: float
- float_val = ... # type: float
- bool_val = ... # type: bool
+ int32_val = ... # type: builtin___int
+ int64_val = ... # type: builtin___int
+ double_val = ... # type: builtin___float
+ float_val = ... # type: builtin___float
+ bool_val = ... # type: builtin___bool
@property
- def bytes_list_val(self) -> BytesList: ...
+ def bytes_list_val(self) -> global___BytesList: ...
@property
- def string_list_val(self) -> StringList: ...
+ def string_list_val(self) -> global___StringList: ...
@property
- def int32_list_val(self) -> Int32List: ...
+ def int32_list_val(self) -> global___Int32List: ...
@property
- def int64_list_val(self) -> Int64List: ...
+ def int64_list_val(self) -> global___Int64List: ...
@property
- def double_list_val(self) -> DoubleList: ...
+ def double_list_val(self) -> global___DoubleList: ...
@property
- def float_list_val(self) -> FloatList: ...
+ def float_list_val(self) -> global___FloatList: ...
@property
- def bool_list_val(self) -> BoolList: ...
+ def bool_list_val(self) -> global___BoolList: ...
def __init__(self,
*,
- bytes_val : typing___Optional[bytes] = None,
+ bytes_val : typing___Optional[builtin___bytes] = None,
string_val : typing___Optional[typing___Text] = None,
- int32_val : typing___Optional[int] = None,
- int64_val : typing___Optional[int] = None,
- double_val : typing___Optional[float] = None,
- float_val : typing___Optional[float] = None,
- bool_val : typing___Optional[bool] = None,
- bytes_list_val : typing___Optional[BytesList] = None,
- string_list_val : typing___Optional[StringList] = None,
- int32_list_val : typing___Optional[Int32List] = None,
- int64_list_val : typing___Optional[Int64List] = None,
- double_list_val : typing___Optional[DoubleList] = None,
- float_list_val : typing___Optional[FloatList] = None,
- bool_list_val : typing___Optional[BoolList] = None,
+ int32_val : typing___Optional[builtin___int] = None,
+ int64_val : typing___Optional[builtin___int] = None,
+ double_val : typing___Optional[builtin___float] = None,
+ float_val : typing___Optional[builtin___float] = None,
+ bool_val : typing___Optional[builtin___bool] = None,
+ bytes_list_val : typing___Optional[global___BytesList] = None,
+ string_list_val : typing___Optional[global___StringList] = None,
+ int32_list_val : typing___Optional[global___Int32List] = None,
+ int64_list_val : typing___Optional[global___Int64List] = None,
+ double_list_val : typing___Optional[global___DoubleList] = None,
+ float_list_val : typing___Optional[global___FloatList] = None,
+ bool_list_val : typing___Optional[global___BoolList] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> Value: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def HasField(self, field_name: typing_extensions___Literal[u"bool_list_val",u"bool_val",u"bytes_list_val",u"bytes_val",u"double_list_val",u"double_val",u"float_list_val",u"float_val",u"int32_list_val",u"int32_val",u"int64_list_val",u"int64_val",u"string_list_val",u"string_val",u"val"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"bool_list_val",u"bool_val",u"bytes_list_val",u"bytes_val",u"double_list_val",u"double_val",u"float_list_val",u"float_val",u"int32_list_val",u"int32_val",u"int64_list_val",u"int64_val",u"string_list_val",u"string_val",u"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Value: ...
else:
- def HasField(self, field_name: typing_extensions___Literal[u"bool_list_val",b"bool_list_val",u"bool_val",b"bool_val",u"bytes_list_val",b"bytes_list_val",u"bytes_val",b"bytes_val",u"double_list_val",b"double_list_val",u"double_val",b"double_val",u"float_list_val",b"float_list_val",u"float_val",b"float_val",u"int32_list_val",b"int32_list_val",u"int32_val",b"int32_val",u"int64_list_val",b"int64_list_val",u"int64_val",b"int64_val",u"string_list_val",b"string_list_val",u"string_val",b"string_val",u"val",b"val"]) -> bool: ...
- def ClearField(self, field_name: typing_extensions___Literal[u"bool_list_val",b"bool_list_val",u"bool_val",b"bool_val",u"bytes_list_val",b"bytes_list_val",u"bytes_val",b"bytes_val",u"double_list_val",b"double_list_val",u"double_val",b"double_val",u"float_list_val",b"float_list_val",u"float_val",b"float_val",u"int32_list_val",b"int32_list_val",u"int32_val",b"int32_val",u"int64_list_val",b"int64_list_val",u"int64_val",b"int64_val",u"string_list_val",b"string_list_val",u"string_val",b"string_val",u"val",b"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Value: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def HasField(self, field_name: typing_extensions___Literal[u"bool_list_val",b"bool_list_val",u"bool_val",b"bool_val",u"bytes_list_val",b"bytes_list_val",u"bytes_val",b"bytes_val",u"double_list_val",b"double_list_val",u"double_val",b"double_val",u"float_list_val",b"float_list_val",u"float_val",b"float_val",u"int32_list_val",b"int32_list_val",u"int32_val",b"int32_val",u"int64_list_val",b"int64_list_val",u"int64_val",b"int64_val",u"string_list_val",b"string_list_val",u"string_val",b"string_val",u"val",b"val"]) -> builtin___bool: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"bool_list_val",b"bool_list_val",u"bool_val",b"bool_val",u"bytes_list_val",b"bytes_list_val",u"bytes_val",b"bytes_val",u"double_list_val",b"double_list_val",u"double_val",b"double_val",u"float_list_val",b"float_list_val",u"float_val",b"float_val",u"int32_list_val",b"int32_list_val",u"int32_val",b"int32_val",u"int64_list_val",b"int64_list_val",u"int64_val",b"int64_val",u"string_list_val",b"string_list_val",u"string_val",b"string_val",u"val",b"val"]) -> None: ...
def WhichOneof(self, oneof_group: typing_extensions___Literal[u"val",b"val"]) -> typing_extensions___Literal["bytes_val","string_val","int32_val","int64_val","double_val","float_val","bool_val","bytes_list_val","string_list_val","int32_list_val","int64_list_val","double_list_val","float_list_val","bool_list_val"]: ...
+global___Value = Value
class BytesList(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
- val = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[bytes]
+ val = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___bytes]
def __init__(self,
*,
- val : typing___Optional[typing___Iterable[bytes]] = None,
+ val : typing___Optional[typing___Iterable[builtin___bytes]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> BytesList: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> BytesList: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"val",b"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> BytesList: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"val",b"val"]) -> None: ...
+global___BytesList = BytesList
class StringList(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
@@ -165,96 +185,108 @@ class StringList(google___protobuf___message___Message):
*,
val : typing___Optional[typing___Iterable[typing___Text]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> StringList: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> StringList: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"val",b"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> StringList: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"val",b"val"]) -> None: ...
+global___StringList = StringList
class Int32List(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
- val = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[int]
+ val = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int]
def __init__(self,
*,
- val : typing___Optional[typing___Iterable[int]] = None,
+ val : typing___Optional[typing___Iterable[builtin___int]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> Int32List: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Int32List: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"val",b"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Int32List: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"val",b"val"]) -> None: ...
+global___Int32List = Int32List
class Int64List(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
- val = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[int]
+ val = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___int]
def __init__(self,
*,
- val : typing___Optional[typing___Iterable[int]] = None,
+ val : typing___Optional[typing___Iterable[builtin___int]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> Int64List: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> Int64List: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"val",b"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> Int64List: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"val",b"val"]) -> None: ...
+global___Int64List = Int64List
class DoubleList(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
- val = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[float]
+ val = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___float]
def __init__(self,
*,
- val : typing___Optional[typing___Iterable[float]] = None,
+ val : typing___Optional[typing___Iterable[builtin___float]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> DoubleList: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> DoubleList: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"val",b"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> DoubleList: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"val",b"val"]) -> None: ...
+global___DoubleList = DoubleList
class FloatList(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
- val = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[float]
+ val = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___float]
def __init__(self,
*,
- val : typing___Optional[typing___Iterable[float]] = None,
+ val : typing___Optional[typing___Iterable[builtin___float]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> FloatList: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> FloatList: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"val",b"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> FloatList: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"val",b"val"]) -> None: ...
+global___FloatList = FloatList
class BoolList(google___protobuf___message___Message):
DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
- val = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[bool]
+ val = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[builtin___bool]
def __init__(self,
*,
- val : typing___Optional[typing___Iterable[bool]] = None,
+ val : typing___Optional[typing___Iterable[builtin___bool]] = None,
) -> None: ...
- @classmethod
- def FromString(cls, s: bytes) -> BoolList: ...
- def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
- def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
if sys.version_info >= (3,):
- def ClearField(self, field_name: typing_extensions___Literal[u"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: builtin___bytes) -> BoolList: ...
else:
- def ClearField(self, field_name: typing_extensions___Literal[u"val",b"val"]) -> None: ...
+ @classmethod
+ def FromString(cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]) -> BoolList: ...
+ def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
+ def ClearField(self, field_name: typing_extensions___Literal[u"val",b"val"]) -> None: ...
+global___BoolList = BoolList
diff --git a/sdk/python/tests/test_client.py b/sdk/python/tests/test_client.py
index 9ef6e3d56fb..7826e78c691 100644
--- a/sdk/python/tests/test_client.py
+++ b/sdk/python/tests/test_client.py
@@ -357,7 +357,16 @@ def test_apply_feature_set_success(self, client):
and feature_sets[0].name == "my-feature-set-1"
and feature_sets[0].features[0].name == "fs1-my-feature-1"
and feature_sets[0].features[0].dtype == ValueType.INT64
+ and feature_sets[0].features[1].name == "fs1-my-feature-2"
+ and feature_sets[0].features[1].dtype == ValueType.STRING
+ and feature_sets[0].entities[0].name == "fs1-my-entity-1"
+ and feature_sets[0].entities[0].dtype == ValueType.INT64
+ and feature_sets[1].features[0].name == "fs2-my-feature-1"
+ and feature_sets[1].features[0].dtype == ValueType.STRING_LIST
+ and feature_sets[1].features[1].name == "fs2-my-feature-2"
and feature_sets[1].features[1].dtype == ValueType.BYTES_LIST
+ and feature_sets[1].entities[0].name == "fs2-my-entity-1"
+ and feature_sets[1].entities[0].dtype == ValueType.INT64
)
@pytest.mark.parametrize("dataframe", [dataframes.GOOD])
diff --git a/serving/pom.xml b/serving/pom.xml
index 1e8d1b83a68..a17748519d9 100644
--- a/serving/pom.xml
+++ b/serving/pom.xml
@@ -40,6 +40,11 @@
+
+ org.jacoco
+ jacoco-maven-plugin
+
+
org.springframework.boot
spring-boot-maven-plugin
@@ -249,11 +254,9 @@
test
-
org.mockito
mockito-core
- 2.23.0
test
diff --git a/tests/e2e/basic-ingest-redis-serving.py b/tests/e2e/basic-ingest-redis-serving.py
index 902b0985c14..c7d8c9da092 100644
--- a/tests/e2e/basic-ingest-redis-serving.py
+++ b/tests/e2e/basic-ingest-redis-serving.py
@@ -2,11 +2,14 @@
import math
import random
import time
+import grpc
from feast.entity import Entity
from feast.serving.ServingService_pb2 import (
GetOnlineFeaturesRequest,
GetOnlineFeaturesResponse,
)
+from feast.core.CoreService_pb2_grpc import CoreServiceStub
+from feast.core import CoreService_pb2
from feast.types.Value_pb2 import Value as Value
from feast.client import Client
from feast.feature_set import FeatureSet
@@ -140,9 +143,9 @@ def test_basic_retrieve_online_success(client, basic_dataframe):
basic_dataframe.iloc[0]["daily_transactions"])
if math.isclose(
- sent_daily_transactions,
- returned_daily_transactions,
- abs_tol=FLOAT_TOLERANCE,
+ sent_daily_transactions,
+ returned_daily_transactions,
+ abs_tol=FLOAT_TOLERANCE,
):
break
@@ -299,7 +302,7 @@ def test_all_types_retrieve_online_success(client, all_types_dataframe):
sent_float_list = all_types_dataframe.iloc[0]["float_list_feature"]
if math.isclose(
- returned_float_list[0], sent_float_list[0], abs_tol=FLOAT_TOLERANCE
+ returned_float_list[0], sent_float_list[0], abs_tol=FLOAT_TOLERANCE
):
break
@@ -394,9 +397,9 @@ def test_large_volume_retrieve_online_success(client, large_volume_dataframe):
large_volume_dataframe.iloc[0]["daily_transactions"])
if math.isclose(
- sent_daily_transactions,
- returned_daily_transactions,
- abs_tol=FLOAT_TOLERANCE,
+ sent_daily_transactions,
+ returned_daily_transactions,
+ abs_tol=FLOAT_TOLERANCE,
):
break
@@ -489,10 +492,86 @@ def test_all_types_parquet_register_feature_set_success(client):
@pytest.mark.timeout(600)
@pytest.mark.run(order=41)
def test_all_types_infer_register_ingest_file_success(client,
- all_types_parquet_file):
+ all_types_parquet_file):
# Get feature set
all_types_fs = client.get_feature_set(name="all_types_parquet")
# Ingest user embedding data
client.ingest(feature_set=all_types_fs, source=all_types_parquet_file,
force_update=True)
+
+
+# TODO: rewrite these using python SDK once the labels are implemented there
+class TestsBasedOnGrpc:
+ LAST_VERSION = 0
+ GRPC_CONNECTION_TIMEOUT = 3
+ LABEL_KEY = "my"
+ LABEL_VALUE = "label"
+
+ @pytest.fixture(scope="module")
+ def core_service_stub(self, core_url):
+ if core_url.endswith(":443"):
+ core_channel = grpc.secure_channel(
+ core_url, grpc.ssl_channel_credentials()
+ )
+ else:
+ core_channel = grpc.insecure_channel(core_url)
+
+ try:
+ grpc.channel_ready_future(core_channel).result(timeout=self.GRPC_CONNECTION_TIMEOUT)
+ except grpc.FutureTimeoutError:
+ raise ConnectionError(
+ f"Connection timed out while attempting to connect to Feast "
+ f"Core gRPC server {core_url} "
+ )
+ core_service_stub = CoreServiceStub(core_channel)
+ return core_service_stub
+
+ def apply_feature_set(self, core_service_stub, feature_set_proto):
+ try:
+ apply_fs_response = core_service_stub.ApplyFeatureSet(
+ CoreService_pb2.ApplyFeatureSetRequest(feature_set=feature_set_proto),
+ timeout=self.GRPC_CONNECTION_TIMEOUT,
+ ) # type: ApplyFeatureSetResponse
+ except grpc.RpcError as e:
+ raise grpc.RpcError(e.details())
+ return apply_fs_response.feature_set
+
+ def get_feature_set(self, core_service_stub, name):
+ try:
+ get_feature_set_response = core_service_stub.GetFeatureSet(
+ CoreService_pb2.GetFeatureSetRequest(
+ name=name.strip(), version=self.LAST_VERSION
+ )
+ ) # type: GetFeatureSetResponse
+ except grpc.RpcError as e:
+ raise grpc.RpcError(e.details())
+ return get_feature_set_response.feature_set
+
+ @pytest.mark.timeout(45)
+ @pytest.mark.run(order=51)
+ def test_register_feature_set_with_labels(self, core_service_stub):
+ feature_set_name = "test_feature_set_labels"
+ feature_set_proto = FeatureSet(feature_set_name).to_proto()
+ feature_set_proto.labels[self.LABEL_KEY] = self.LABEL_VALUE
+ self.apply_feature_set(core_service_stub, feature_set_proto)
+
+ retrieved_feature_set = self.get_feature_set(core_service_stub, feature_set_name)
+
+ assert self.LABEL_KEY in retrieved_feature_set.labels
+ assert retrieved_feature_set.labels[self.LABEL_KEY] == self.LABEL_VALUE
+
+ @pytest.mark.timeout(45)
+ @pytest.mark.run(order=52)
+ def test_register_feature_with_labels(self, core_service_stub):
+ feature_set_name = "test_feature_labels"
+ feature_set_proto = FeatureSet(feature_set_name, features=[Feature("rating", ValueType.INT64)]) \
+ .to_proto()
+ feature_set_proto.features[0].labels[self.LABEL_KEY] = self.LABEL_VALUE
+ self.apply_feature_set(core_service_stub, feature_set_proto)
+
+ retrieved_feature_set = self.get_feature_set(core_service_stub, feature_set_name)
+ retrieved_feature = retrieved_feature_set.features[0]
+
+ assert self.LABEL_KEY in retrieved_feature.labels
+ assert retrieved_feature.labels[self.LABEL_KEY] == self.LABEL_VALUE