From f62908f163f8f51af7e06da353302a2f8d4c5e5a Mon Sep 17 00:00:00 2001 From: Artemio Padilla Date: Mon, 1 Dec 2025 12:48:46 -0600 Subject: [PATCH 1/7] feat: add repeated join_keys field to Entity protobuf schema - Add repeated string join_keys field to EntitySpecV2 - Add deprecation notice to existing join_key field - Maintain backward compatibility with existing protobuf messages Signed-off-by: Artemio Padilla Signed-off-by: Artemio Padilla --- protos/feast/core/Entity.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/protos/feast/core/Entity.proto b/protos/feast/core/Entity.proto index 915402804fc..f71335ea688 100644 --- a/protos/feast/core/Entity.proto +++ b/protos/feast/core/Entity.proto @@ -45,6 +45,7 @@ message EntitySpecV2 { string description = 3; // Join key for the entity (i.e. name of the column the entity maps to). + // Deprecated: Use join_keys instead for multiple join key support. string join_key = 4; // User defined metadata @@ -52,6 +53,11 @@ message EntitySpecV2 { // Owner of the entity. string owner = 10; + + // Join keys for the entity (i.e. names of the columns the entity maps to). + // This supports multiple join keys. For backward compatibility, if this field + // is empty, the single join_key field will be used. + repeated string join_keys = 11; } message EntityMeta { From 07a7c473ca04b36b5c44f59e06c968e9f84aa9a8 Mon Sep 17 00:00:00 2001 From: Artemio Padilla Date: Mon, 1 Dec 2025 13:39:12 -0600 Subject: [PATCH 2/7] feat: implement multiple join keys support in Python Entity class - Add join_keys List[str] attribute to Entity class - Implement backward-compatible join_key property with deprecation warning - Update __hash__, __eq__, __repr__ methods for multiple keys - Enhance to_proto() and from_proto() methods for dual compatibility Signed-off-by: Artemio Padilla Signed-off-by: Artemio Padilla --- sdk/python/feast/entity.py | 72 ++++++++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 23 deletions(-) diff --git a/sdk/python/feast/entity.py b/sdk/python/feast/entity.py index 7f4eadc6352..6260697c6dd 100644 --- a/sdk/python/feast/entity.py +++ b/sdk/python/feast/entity.py @@ -33,9 +33,9 @@ class Entity: Attributes: name: The unique name of the entity. value_type: The type of the entity, such as string or float. - join_key: A property that uniquely identifies different entities within the - collection. The join_key property is typically used for joining entities - with their associated features. If not specified, defaults to the name. + join_keys: A list of properties that uniquely identify different entities within the + collection. The join_keys are typically used for joining entities + with their associated features. If not specified, defaults to [name]. description: A human-readable description. tags: A dictionary of key-value pairs to store arbitrary metadata. owner: The owner of the entity, typically the email of the primary maintainer. @@ -45,7 +45,7 @@ class Entity: name: str value_type: ValueType - join_key: str + join_keys: List[str] description: str tags: Dict[str, str] owner: str @@ -68,10 +68,10 @@ def __init__( Args: name: The unique name of the entity. join_keys (optional): A list of properties that uniquely identifies different entities - within the collection. This currently only supports a list of size one, but is - intended to eventually support multiple join keys. - value_type (optional): The type of the entity, such as string or float. If not specified, - it will be inferred from the schema of the underlying data source. + within the collection. Now supports multiple join keys for complex entity + relationships. If not specified, defaults to [name]. + value_type (optional): The type of the entity, such as string or float. If not + specified, it will be inferred from the schema of the underlying data source. description (optional): A human-readable description. tags (optional): A dictionary of key-value pairs to store arbitrary metadata. owner (optional): The owner of the entity, typically the email of the primary maintainer. @@ -89,17 +89,11 @@ def __init__( ) self.value_type = value_type or ValueType.UNKNOWN - if join_keys and len(join_keys) > 1: - # TODO(felixwang9817): When multiple join keys are supported, add a `join_keys` attribute - # and deprecate the `join_key` attribute. - raise ValueError( - "An entity may only have a single join key. " - "Multiple join keys will be supported in the future." - ) - elif join_keys and len(join_keys) == 1: - self.join_key = join_keys[0] + # Handle join keys - support multiple join keys now + if join_keys: + self.join_keys = join_keys.copy() else: - self.join_key = self.name + self.join_keys = [self.name] self.description = description self.tags = tags if tags is not None else {} @@ -107,12 +101,28 @@ def __init__( self.created_timestamp = None self.last_updated_timestamp = None + @property + def join_key(self) -> str: + """ + Returns the first join key for backward compatibility. + + Deprecated: Use join_keys instead for multiple join key support. + This property will be removed in Feast 0.57.0. + """ + warnings.warn( + "The 'join_key' property is deprecated and will be removed in Feast 0.57.0. " + "Use 'join_keys' instead for multiple join key support.", + DeprecationWarning, + stacklevel=2, + ) + return self.join_keys[0] if self.join_keys else self.name + def __repr__(self): return ( f"Entity(\n" f" name={self.name!r},\n" f" value_type={self.value_type!r},\n" - f" join_key={self.join_key!r},\n" + f" join_keys={self.join_keys!r},\n" f" description={self.description!r},\n" f" tags={self.tags!r},\n" f" owner={self.owner!r},\n" @@ -122,7 +132,7 @@ def __repr__(self): ) def __hash__(self) -> int: - return hash((self.name, self.join_key)) + return hash((self.name, tuple(self.join_keys))) def __eq__(self, other): if not isinstance(other, Entity): @@ -131,7 +141,7 @@ def __eq__(self, other): if ( self.name != other.name or self.value_type != other.value_type - or self.join_key != other.join_key + or self.join_keys != other.join_keys or self.description != other.description or self.tags != other.tags or self.owner != other.owner @@ -170,9 +180,24 @@ def from_proto(cls, entity_proto: EntityProto): Returns: An Entity object based on the entity protobuf. """ + # Handle backward compatibility: prioritize join_keys, fall back to join_key + if entity_proto.spec.join_keys: + join_keys_list = list(entity_proto.spec.join_keys) + elif entity_proto.spec.join_key: + warnings.warn( + f"Entity '{entity_proto.spec.name}' uses deprecated single join_key field " + "in protobuf. Future versions should use the join_keys field instead. " + "This compatibility will be removed in Feast 0.57.0.", + DeprecationWarning, + stacklevel=2, + ) + join_keys_list = [entity_proto.spec.join_key] + else: + join_keys_list = None + entity = cls( name=entity_proto.spec.name, - join_keys=[entity_proto.spec.join_key], + join_keys=join_keys_list, value_type=ValueType(entity_proto.spec.value_type), description=entity_proto.spec.description, tags=dict(entity_proto.spec.tags), @@ -204,7 +229,8 @@ def to_proto(self) -> EntityProto: spec = EntitySpecProto( name=self.name, value_type=self.value_type.value, - join_key=self.join_key, + join_key=self.join_key, # For backward compatibility - first join key + join_keys=self.join_keys, # New field supporting multiple join keys description=self.description, tags=self.tags, owner=self.owner, From d9672e2d24d185ded4d54f1fd56211855ee8a1d1 Mon Sep 17 00:00:00 2001 From: Artemio Padilla Date: Mon, 1 Dec 2025 13:41:56 -0600 Subject: [PATCH 3/7] feat: update Python codebase to support multiple join keys - Update feature_store.py to collect all join keys from entities - Update utils.py join key collection for feature view operations - Maintain backward compatibility in entity mappings - Enhance protobuf conversion for multiple join keys Signed-off-by: Artemio Padilla Signed-off-by: Artemio Padilla --- sdk/python/feast/feature_store.py | 6 +++++- sdk/python/feast/utils.py | 9 ++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/sdk/python/feast/feature_store.py b/sdk/python/feast/feature_store.py index fce051f950d..ba21a432e1a 100644 --- a/sdk/python/feast/feature_store.py +++ b/sdk/python/feast/feature_store.py @@ -1825,7 +1825,11 @@ def _transform_on_demand_feature_view_df( entities = [ self.get_entity(entity) for entity in (feature_view.entities or []) ] - join_keys = [entity.join_key for entity in entities if entity] + # Collect all join keys from all entities (supports multiple join keys per entity) + join_keys = [] + for entity in entities: + if entity: + join_keys.extend(entity.join_keys) join_keys = [k for k in join_keys if k in input_dict.keys()] transformed_df = ( pd.DataFrame(transformed_data) diff --git a/sdk/python/feast/utils.py b/sdk/python/feast/utils.py index f26dd84e075..8f9ce213d51 100644 --- a/sdk/python/feast/utils.py +++ b/sdk/python/feast/utils.py @@ -170,9 +170,12 @@ def _get_column_names( from feast.feature_view import DUMMY_ENTITY_ID - join_keys = [ - entity.join_key for entity in entities if entity.join_key != DUMMY_ENTITY_ID - ] + # Collect all join keys from all entities (supports multiple join keys per entity) + join_keys = [] + for entity in entities: + for join_key in entity.join_keys: + if join_key != DUMMY_ENTITY_ID: + join_keys.append(join_key) if feature_view.batch_source.field_mapping is not None: reverse_field_mapping = { v: k for k, v in feature_view.batch_source.field_mapping.items() From b3e3a34af8830eb209243eaa43aa5fa29c87d9df Mon Sep 17 00:00:00 2001 From: Artemio Padilla Date: Mon, 1 Dec 2025 13:44:20 -0600 Subject: [PATCH 4/7] feat: implement multiple join keys support in Go Entity model - Update Entity struct with JoinKeys []string field - Add backward-compatible JoinKey() method - Update NewEntityFromProto() with proper fallback logic - Fix direct field access in serving.go Signed-off-by: Artemio Padilla Signed-off-by: Artemio Padilla --- go/internal/feast/model/entity.go | 27 ++++++++++++++++++---- go/internal/feast/onlineserving/serving.go | 2 +- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/go/internal/feast/model/entity.go b/go/internal/feast/model/entity.go index 5a09edb6557..b47bc422359 100644 --- a/go/internal/feast/model/entity.go +++ b/go/internal/feast/model/entity.go @@ -5,13 +5,32 @@ import ( ) type Entity struct { - Name string - JoinKey string + Name string + JoinKeys []string +} + +// JoinKey returns the first join key for backward compatibility +func (e *Entity) JoinKey() string { + if len(e.JoinKeys) > 0 { + return e.JoinKeys[0] + } + return e.Name } func NewEntityFromProto(proto *core.Entity) *Entity { + var joinKeys []string + + // Handle backward compatibility: prioritize join_keys, fall back to join_key + if len(proto.Spec.JoinKeys) > 0 { + joinKeys = append(joinKeys, proto.Spec.JoinKeys...) + } else if proto.Spec.JoinKey != "" { + joinKeys = []string{proto.Spec.JoinKey} + } else { + joinKeys = []string{proto.Spec.Name} + } + return &Entity{ - Name: proto.Spec.Name, - JoinKey: proto.Spec.JoinKey, + Name: proto.Spec.Name, + JoinKeys: joinKeys, } } diff --git a/go/internal/feast/onlineserving/serving.go b/go/internal/feast/onlineserving/serving.go index f042939ec0f..56798a2e301 100644 --- a/go/internal/feast/onlineserving/serving.go +++ b/go/internal/feast/onlineserving/serving.go @@ -255,7 +255,7 @@ func GetEntityMaps(requestedFeatureViews []*FeatureViewAndRefs, entities []*mode } for _, entityName := range featureView.EntityNames { - joinKey := entitiesByName[entityName].JoinKey + joinKey := entitiesByName[entityName].JoinKey() entityNameToJoinKeyMap[entityName] = joinKey if alias, ok := joinKeyToAliasMap[joinKey]; ok { From 53aa7a06c0a9a3ec9d55cc87dc00ab4e5040f9c2 Mon Sep 17 00:00:00 2001 From: Artemio Padilla Date: Mon, 1 Dec 2025 13:46:45 -0600 Subject: [PATCH 5/7] test: add comprehensive tests for multiple join keys functionality - Add tests for multiple join keys creation and access - Add deprecation warning tests for property access and protobuf - Add backward compatibility validation tests - Add protobuf serialization/deserialization tests - Verify hash and equality operations with multiple keys Signed-off-by: Artemio Padilla Signed-off-by: Artemio Padilla --- sdk/python/tests/unit/test_entity.py | 241 +++++++++++++++++++++++++++ 1 file changed, 241 insertions(+) diff --git a/sdk/python/tests/unit/test_entity.py b/sdk/python/tests/unit/test_entity.py index b36f363a6ff..c7a807e5456 100644 --- a/sdk/python/tests/unit/test_entity.py +++ b/sdk/python/tests/unit/test_entity.py @@ -88,3 +88,244 @@ def test_entity_with_value_type_no_warning(): warnings.simplefilter("error") entity = Entity(name="my-entity", value_type=ValueType.STRING) assert entity.value_type == ValueType.STRING + + +def test_multiple_join_keys(): + """Test entity with multiple join keys.""" + entity = Entity( + name="my-entity", + join_keys=["key1", "key2", "key3"], + value_type=ValueType.STRING, + description="Entity with multiple join keys" + ) + + # Test join_keys attribute + assert entity.join_keys == ["key1", "key2", "key3"] + + # Test backward compatibility - join_key property should return first key + assert entity.join_key == "key1" + + +def test_single_join_key_backward_compatibility(): + """Test that single join key still works (backward compatibility).""" + entity = Entity( + name="my-entity", + join_keys=["custom-key"], + value_type=ValueType.STRING + ) + + assert entity.join_keys == ["custom-key"] + assert entity.join_key == "custom-key" + + +def test_no_join_keys_defaults_to_name(): + """Test that no join_keys defaults to [name].""" + entity = Entity(name="my-entity", value_type=ValueType.STRING) + + assert entity.join_keys == ["my-entity"] + assert entity.join_key == "my-entity" + + +def test_empty_join_keys_defaults_to_name(): + """Test that empty join_keys list defaults to [name].""" + entity = Entity(name="my-entity", join_keys=[], value_type=ValueType.STRING) + + assert entity.join_keys == ["my-entity"] + assert entity.join_key == "my-entity" + + +def test_multiple_join_keys_hash_and_equality(): + """Test hash and equality with multiple join keys.""" + entity1 = Entity(name="my-entity", join_keys=["key1", "key2"]) + entity2 = Entity(name="my-entity", join_keys=["key1", "key2"]) + entity3 = Entity(name="my-entity", join_keys=["key1", "key3"]) + entity4 = Entity(name="my-entity", join_keys=["key2", "key1"]) # Different order + + # Test equality + assert entity1 == entity2 + assert entity1 != entity3 + assert entity1 != entity4 # Different order should be different + + # Test hash + s1 = {entity1, entity2} + assert len(s1) == 1 # Same entities + + s2 = {entity1, entity3} + assert len(s2) == 2 # Different entities + + s3 = {entity1, entity4} + assert len(s3) == 2 # Different order = different entities + + +def test_multiple_join_keys_protobuf_serialization(): + """Test protobuf serialization and deserialization with multiple join keys.""" + original_entity = Entity( + name="test-entity", + join_keys=["key1", "key2", "key3"], + value_type=ValueType.INT64, + description="Test entity with multiple join keys", + tags={"env": "test"}, + owner="test-owner" + ) + + # Serialize to protobuf + proto = original_entity.to_proto() + + # Check that both join_key and join_keys fields are populated + assert proto.spec.join_key == "key1" # First key for backward compatibility + assert list(proto.spec.join_keys) == ["key1", "key2", "key3"] + + # Deserialize from protobuf + deserialized_entity = Entity.from_proto(proto) + + # Check that deserialized entity matches original + assert deserialized_entity.name == original_entity.name + assert deserialized_entity.join_keys == original_entity.join_keys + assert deserialized_entity.join_key == original_entity.join_key + assert deserialized_entity.value_type == original_entity.value_type + assert deserialized_entity.description == original_entity.description + assert deserialized_entity.tags == original_entity.tags + assert deserialized_entity.owner == original_entity.owner + assert deserialized_entity == original_entity + + +def test_protobuf_backward_compatibility_single_join_key(): + """Test that protobuf with only join_key field (no join_keys) still works.""" + from feast.protos.feast.core.Entity_pb2 import Entity as EntityProto + from feast.protos.feast.core.Entity_pb2 import EntitySpecV2 as EntitySpecProto + from feast.protos.feast.core.Entity_pb2 import EntityMeta as EntityMetaProto + + # Create a protobuf with only the old join_key field + spec = EntitySpecProto( + name="legacy-entity", + value_type=ValueType.STRING.value, + join_key="legacy-key", + description="Legacy entity", + ) + proto = EntityProto(spec=spec, meta=EntityMetaProto()) + + # Deserialize + entity = Entity.from_proto(proto) + + # Should work with legacy format + assert entity.name == "legacy-entity" + assert entity.join_keys == ["legacy-key"] + assert entity.join_key == "legacy-key" + + +def test_protobuf_prioritizes_join_keys_over_join_key(): + """Test that when both join_keys and join_key are present, join_keys takes priority.""" + from feast.protos.feast.core.Entity_pb2 import Entity as EntityProto + from feast.protos.feast.core.Entity_pb2 import EntitySpecV2 as EntitySpecProto + from feast.protos.feast.core.Entity_pb2 import EntityMeta as EntityMetaProto + + # Create a protobuf with both fields + spec = EntitySpecProto( + name="test-entity", + value_type=ValueType.STRING.value, + join_key="old-key", # This should be ignored + description="Test entity", + ) + spec.join_keys.extend(["new-key1", "new-key2"]) + proto = EntityProto(spec=spec, meta=EntityMetaProto()) + + # Deserialize + entity = Entity.from_proto(proto) + + # Should use join_keys, not join_key + assert entity.join_keys == ["new-key1", "new-key2"] + assert entity.join_key == "new-key1" + + +def test_multiple_join_keys_repr(): + """Test that __repr__ shows join_keys properly.""" + entity = Entity( + name="my-entity", + join_keys=["key1", "key2"], + value_type=ValueType.STRING + ) + + repr_str = repr(entity) + assert "join_keys=['key1', 'key2']" in repr_str + assert "name='my-entity'" in repr_str + + +def test_join_key_property_deprecation_warning(): + """Test that accessing join_key property triggers deprecation warning.""" + entity = Entity( + name="my-entity", + join_keys=["key1", "key2"], + value_type=ValueType.STRING + ) + + # Test that accessing join_key property triggers deprecation warning + with pytest.warns(DeprecationWarning, match="The 'join_key' property is deprecated"): + join_key = entity.join_key + assert join_key == "key1" + + +def test_legacy_protobuf_deprecation_warning(): + """Test that legacy protobuf format triggers deprecation warning.""" + from feast.protos.feast.core.Entity_pb2 import Entity as EntityProto + from feast.protos.feast.core.Entity_pb2 import EntitySpecV2 as EntitySpecProto + from feast.protos.feast.core.Entity_pb2 import EntityMeta as EntityMetaProto + + # Create a protobuf with only the old join_key field (no join_keys) + spec = EntitySpecProto( + name="legacy-entity", + value_type=ValueType.STRING.value, + join_key="legacy-key", + description="Legacy entity", + ) + proto = EntityProto(spec=spec, meta=EntityMetaProto()) + + # Test that deserializing legacy protobuf triggers deprecation warning + with pytest.warns(DeprecationWarning, match="uses deprecated single join_key field"): + entity = Entity.from_proto(proto) + assert entity.join_keys == ["legacy-key"] + + +def test_join_key_property_with_no_warnings_context(): + """Test join_key property functionality without warnings interfering with other tests.""" + entity = Entity(name="my-entity", value_type=ValueType.STRING) + + # Suppress warnings for this specific test to verify functionality + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + assert entity.join_key == "my-entity" + assert entity.join_keys == ["my-entity"] + + +def test_multiple_join_keys_no_warnings(): + """Test that new join_keys API doesn't trigger any warnings.""" + with warnings.catch_warnings(): + warnings.simplefilter("error") # Convert all warnings to errors + + # This should not trigger any warnings + entity = Entity( + name="my-entity", + join_keys=["key1", "key2", "key3"], + value_type=ValueType.STRING + ) + + # Accessing join_keys should not trigger warnings + assert entity.join_keys == ["key1", "key2", "key3"] + + # Only accessing join_key property should trigger warnings + # (We'll test that separately) + + +def test_deprecation_warning_stacklevel(): + """Test that deprecation warnings have correct stack level for debugging.""" + entity = Entity(name="test", join_keys=["key1"], value_type=ValueType.STRING) + + # Capture warnings to check stacklevel + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") + _ = entity.join_key + + assert len(w) == 1 + assert issubclass(w[0].category, DeprecationWarning) + assert "join_key" in str(w[0].message) + # Verify the warning points to this test function, not Entity internals + assert "test_deprecation_warning_stacklevel" in w[0].filename From 6ec08fdf130c78ee7271f702d782586e0d263a42 Mon Sep 17 00:00:00 2001 From: Artemio Padilla Date: Mon, 1 Dec 2025 13:53:20 -0600 Subject: [PATCH 6/7] feat: add usage examples for multiple join keys - Create practical code examples demonstrating new functionality - Show backward compatibility patterns - Demonstrate migration from legacy code - Include best practices and common use cases Signed-off-by: Artemio Padilla Signed-off-by: Artemio Padilla --- examples/multiple_join_keys_example.py | 186 +++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 examples/multiple_join_keys_example.py diff --git a/examples/multiple_join_keys_example.py b/examples/multiple_join_keys_example.py new file mode 100644 index 00000000000..1d0011ff7cf --- /dev/null +++ b/examples/multiple_join_keys_example.py @@ -0,0 +1,186 @@ +#!/usr/bin/env python3 +""" +Multiple Join Keys Example for Feast Entities + +This example demonstrates the new multiple join keys functionality +introduced in Feast 0.55.0, which resolves the previous limitation: +"ValueError: An entity may only have a single join key" + +Author: Feast Contributors +License: Apache 2.0 +""" + +import warnings +from datetime import timedelta + +from feast import Entity, FeatureStore, FeatureView, Field +from feast.data_source import PushSource +from feast.types import Float64, Int64, String +from feast.value_type import ValueType + + +def main(): + """Demonstrate multiple join keys functionality.""" + print("šŸŽ‰ Multiple Join Keys Example for Feast") + print("=" * 50) + + # ============================================================================ + # 1. Create entities with multiple join keys + # ============================================================================ + print("\n1. Creating entities with multiple join keys...") + + # User entity with multiple identifiers + user_entity = Entity( + name="user", + join_keys=["user_id", "email", "username"], # Multiple join keys! + value_type=ValueType.STRING, + description="User entity with multiple unique identifiers" + ) + + # Product entity with multiple SKUs + product_entity = Entity( + name="product", + join_keys=["product_id", "sku", "barcode"], + value_type=ValueType.STRING, + description="Product entity with multiple product identifiers" + ) + + # Location entity with geographic identifiers + location_entity = Entity( + name="location", + join_keys=["location_id", "zip_code", "lat_lon"], + value_type=ValueType.STRING, + description="Location entity with multiple geographic identifiers" + ) + + print(f"āœ… User entity join keys: {user_entity.join_keys}") + print(f"āœ… Product entity join keys: {product_entity.join_keys}") + print(f"āœ… Location entity join keys: {location_entity.join_keys}") + + # ============================================================================ + # 2. Demonstrate backward compatibility + # ============================================================================ + print("\n2. Backward compatibility demonstration...") + + # Legacy single join key still works + driver_entity = Entity( + name="driver", + join_keys=["driver_id"], # Single join key + value_type=ValueType.INT64 + ) + + print(f"āœ… Legacy entity join keys: {driver_entity.join_keys}") + + # Show deprecation warning for .join_key property + print("\nāš ļø Demonstrating deprecation warning:") + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") + legacy_key = driver_entity.join_key # This triggers deprecation warning + + if w: + print(f" Warning: {w[0].message}") + print(f" Legacy key value: {legacy_key}") + + # ============================================================================ + # 3. Create feature views using multiple join keys + # ============================================================================ + print("\n3. Creating feature views with multiple join keys...") + + # User stats feature view + user_stats_source = PushSource( + name="user_stats_source", + batch_source=None, # Simplified for example + ) + + user_stats_fv = FeatureView( + name="user_stats", + entities=[user_entity], # Uses all join keys: user_id, email, username + ttl=timedelta(days=1), + schema=[ + Field(name="total_orders", dtype=Int64), + Field(name="avg_order_value", dtype=Float64), + Field(name="loyalty_score", dtype=Float64), + ], + source=user_stats_source, + ) + + print(f"āœ… User stats feature view created with entity: {user_stats_fv.entities}") + + # ============================================================================ + # 4. Show practical usage patterns + # ============================================================================ + print("\n4. Practical usage patterns...") + + # Pattern 1: Access all join keys + def print_entity_info(entity): + print(f" Entity: {entity.name}") + print(f" All join keys: {entity.join_keys}") + print(f" Primary join key: {entity.join_keys[0]}") + print(f" Join key count: {len(entity.join_keys)}") + + print("\nšŸ“Š Entity Information:") + for entity in [user_entity, product_entity, location_entity]: + print_entity_info(entity) + print() + + # Pattern 2: Join key validation + def validate_entity_keys(entity, required_keys): + """Validate that entity has all required join keys.""" + missing_keys = set(required_keys) - set(entity.join_keys) + if missing_keys: + print(f"āŒ Entity {entity.name} missing keys: {missing_keys}") + return False + print(f"āœ… Entity {entity.name} has all required keys") + return True + + print("\nšŸ” Join Key Validation:") + validate_entity_keys(user_entity, ["user_id", "email"]) + validate_entity_keys(product_entity, ["product_id", "sku", "barcode", "missing_key"]) + + # ============================================================================ + # 5. Migration from legacy code + # ============================================================================ + print("\n5. Migration patterns...") + + print("\nšŸ“ Before (deprecated):") + print(" entity_key = my_entity.join_key # āš ļø Shows deprecation warning") + + print("\nšŸ“ After (recommended):") + print(" # For single key compatibility:") + print(" entity_key = my_entity.join_keys[0]") + print(" ") + print(" # For multiple keys support:") + print(" entity_keys = my_entity.join_keys") + + # Example migration + print("\nšŸ”„ Migration example:") + legacy_entity = Entity(name="customer", join_keys=["customer_id"]) + + # Old way (deprecated, shows warning) + print(" Old way (with warning):") + with warnings.catch_warnings(record=True): + warnings.simplefilter("always") + old_way = legacy_entity.join_key + print(f" key = {old_way}") + + # New way (recommended) + print(" New way (no warning):") + new_way = legacy_entity.join_keys[0] + print(f" key = {new_way}") + + # Best way (for new code) + print(" Best way (multiple keys support):") + best_way = legacy_entity.join_keys + print(f" keys = {best_way}") + + print("\nšŸŽ‰ Multiple join keys example completed successfully!") + print("\nKey takeaways:") + print("• Multiple join keys are now fully supported") + print("• Backward compatibility is maintained") + print("• Use join_keys instead of join_key for new code") + print("• Existing code works with deprecation warnings") + print("• Migration is straightforward and non-breaking") + + +if __name__ == "__main__": + main() \ No newline at end of file From 130195bce211db965c9ebff95624e082dc162221 Mon Sep 17 00:00:00 2001 From: Artemio Padilla Date: Mon, 1 Dec 2025 21:32:55 -0600 Subject: [PATCH 7/7] chore: regenerate protobuf files for multiple join keys support - Regenerate Python protobuf files after rebase - Update Entity protobuf bindings with new join_keys field - Ensure compatibility with upstream codebase changes Signed-off-by: Artemio Padilla Signed-off-by: Artemio Padilla --- .../protos/feast/core/Aggregation_pb2.py | 16 +- .../protos/feast/core/Aggregation_pb2.pyi | 13 +- .../protos/feast/core/Aggregation_pb2_grpc.py | 20 + .../feast/protos/feast/core/DataFormat_pb2.py | 24 +- .../protos/feast/core/DataFormat_pb2.pyi | 61 +- .../protos/feast/core/DataFormat_pb2_grpc.py | 20 + .../feast/protos/feast/core/DataSource_pb2.py | 22 +- .../protos/feast/core/DataSource_pb2.pyi | 94 +- .../protos/feast/core/DataSource_pb2_grpc.py | 20 + .../protos/feast/core/DatastoreTable_pb2.py | 16 +- .../protos/feast/core/DatastoreTable_pb2.pyi | 16 +- .../feast/core/DatastoreTable_pb2_grpc.py | 20 + .../feast/protos/feast/core/Entity_pb2.py | 34 +- .../feast/protos/feast/core/Entity_pb2.pyi | 47 +- .../protos/feast/core/Entity_pb2_grpc.py | 20 + .../protos/feast/core/FeatureService_pb2.py | 20 +- .../protos/feast/core/FeatureService_pb2.pyi | 76 +- .../feast/core/FeatureService_pb2_grpc.py | 20 + .../protos/feast/core/FeatureTable_pb2.py | 18 +- .../protos/feast/core/FeatureTable_pb2.pyi | 48 +- .../feast/core/FeatureTable_pb2_grpc.py | 20 + .../feast/core/FeatureViewProjection_pb2.py | 18 +- .../feast/core/FeatureViewProjection_pb2.pyi | 26 +- .../core/FeatureViewProjection_pb2_grpc.py | 20 + .../protos/feast/core/FeatureView_pb2.py | 18 +- .../protos/feast/core/FeatureView_pb2.pyi | 71 +- .../protos/feast/core/FeatureView_pb2_grpc.py | 20 + .../feast/protos/feast/core/Feature_pb2.py | 18 +- .../feast/protos/feast/core/Feature_pb2.pyi | 21 +- .../protos/feast/core/Feature_pb2_grpc.py | 20 + .../protos/feast/core/InfraObject_pb2.py | 16 +- .../protos/feast/core/InfraObject_pb2.pyi | 22 +- .../protos/feast/core/InfraObject_pb2_grpc.py | 20 + .../feast/core/OnDemandFeatureView_pb2.py | 24 +- .../feast/core/OnDemandFeatureView_pb2.pyi | 68 +- .../core/OnDemandFeatureView_pb2_grpc.py | 20 + .../feast/protos/feast/core/Permission_pb2.py | 20 +- .../protos/feast/core/Permission_pb2.pyi | 31 +- .../protos/feast/core/Permission_pb2_grpc.py | 20 + .../feast/protos/feast/core/Policy_pb2.py | 16 +- .../feast/protos/feast/core/Policy_pb2.pyi | 32 +- .../protos/feast/core/Policy_pb2_grpc.py | 20 + .../feast/protos/feast/core/Project_pb2.py | 18 +- .../feast/protos/feast/core/Project_pb2.pyi | 33 +- .../protos/feast/core/Project_pb2_grpc.py | 20 + .../feast/protos/feast/core/Registry_pb2.py | 18 +- .../feast/protos/feast/core/Registry_pb2.pyi | 25 +- .../protos/feast/core/Registry_pb2_grpc.py | 20 + .../protos/feast/core/SavedDataset_pb2.py | 18 +- .../protos/feast/core/SavedDataset_pb2.pyi | 48 +- .../feast/core/SavedDataset_pb2_grpc.py | 20 + .../protos/feast/core/SqliteTable_pb2.py | 16 +- .../protos/feast/core/SqliteTable_pb2.pyi | 11 +- .../protos/feast/core/SqliteTable_pb2_grpc.py | 20 + .../feast/protos/feast/core/Store_pb2.py | 16 +- .../feast/protos/feast/core/Store_pb2.pyi | 22 +- .../feast/protos/feast/core/Store_pb2_grpc.py | 20 + .../feast/core/StreamFeatureView_pb2.py | 20 +- .../feast/core/StreamFeatureView_pb2.pyi | 57 +- .../feast/core/StreamFeatureView_pb2_grpc.py | 20 + .../protos/feast/core/Transformation_pb2.py | 16 +- .../protos/feast/core/Transformation_pb2.pyi | 21 +- .../feast/core/Transformation_pb2_grpc.py | 20 + .../feast/core/ValidationProfile_pb2.py | 18 +- .../feast/core/ValidationProfile_pb2.pyi | 31 +- .../feast/core/ValidationProfile_pb2_grpc.py | 20 + .../feast/registry/RegistryServer_pb2.py | 40 +- .../feast/registry/RegistryServer_pb2.pyi | 386 +++++--- .../feast/registry/RegistryServer_pb2_grpc.py | 903 ++++++++++++++---- .../protos/feast/serving/Connector_pb2.py | 16 +- .../protos/feast/serving/Connector_pb2.pyi | 24 +- .../feast/serving/Connector_pb2_grpc.py | 39 +- .../protos/feast/serving/GrpcServer_pb2.py | 20 +- .../protos/feast/serving/GrpcServer_pb2.pyi | 34 +- .../feast/serving/GrpcServer_pb2_grpc.py | 75 +- .../feast/serving/ServingService_pb2.py | 22 +- .../feast/serving/ServingService_pb2.pyi | 77 +- .../feast/serving/ServingService_pb2_grpc.py | 57 +- .../serving/TransformationService_pb2.py | 16 +- .../serving/TransformationService_pb2.pyi | 24 +- .../serving/TransformationService_pb2_grpc.py | 57 +- .../feast/protos/feast/storage/Redis_pb2.py | 16 +- .../feast/protos/feast/storage/Redis_pb2.pyi | 11 +- .../protos/feast/storage/Redis_pb2_grpc.py | 20 + .../feast/protos/feast/types/EntityKey_pb2.py | 16 +- .../protos/feast/types/EntityKey_pb2.pyi | 11 +- .../protos/feast/types/EntityKey_pb2_grpc.py | 20 + .../feast/protos/feast/types/Field_pb2.py | 18 +- .../feast/protos/feast/types/Field_pb2.pyi | 19 +- .../protos/feast/types/Field_pb2_grpc.py | 20 + .../feast/protos/feast/types/Value_pb2.py | 16 +- .../feast/protos/feast/types/Value_pb2.pyi | 39 +- .../protos/feast/types/Value_pb2_grpc.py | 20 + 93 files changed, 2759 insertions(+), 991 deletions(-) diff --git a/sdk/python/feast/protos/feast/core/Aggregation_pb2.py b/sdk/python/feast/protos/feast/core/Aggregation_pb2.py index 922f8f40aa2..3846c09c2b7 100644 --- a/sdk/python/feast/protos/feast/core/Aggregation_pb2.py +++ b/sdk/python/feast/protos/feast/core/Aggregation_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/Aggregation.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/Aggregation.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -20,8 +30,8 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Aggregation_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\020AggregationProtoZ/github.com/feast-dev/feast/go/protos/feast/core' _globals['_AGGREGATION']._serialized_start=77 _globals['_AGGREGATION']._serialized_end=223 diff --git a/sdk/python/feast/protos/feast/core/Aggregation_pb2.pyi b/sdk/python/feast/protos/feast/core/Aggregation_pb2.pyi index ceb8b1f8131..366d1fc69d3 100644 --- a/sdk/python/feast/protos/feast/core/Aggregation_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/Aggregation_pb2.pyi @@ -2,19 +2,16 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ + import builtins import google.protobuf.descriptor import google.protobuf.duration_pb2 import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Aggregation(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -36,7 +33,7 @@ class Aggregation(google.protobuf.message.Message): time_window: google.protobuf.duration_pb2.Duration | None = ..., slide_interval: google.protobuf.duration_pb2.Duration | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["slide_interval", b"slide_interval", "time_window", b"time_window"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["column", b"column", "function", b"function", "slide_interval", b"slide_interval", "time_window", b"time_window"]) -> None: ... + def HasField(self, field_name: typing.Literal["slide_interval", b"slide_interval", "time_window", b"time_window"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["column", b"column", "function", b"function", "slide_interval", b"slide_interval", "time_window", b"time_window"]) -> None: ... global___Aggregation = Aggregation diff --git a/sdk/python/feast/protos/feast/core/Aggregation_pb2_grpc.py b/sdk/python/feast/protos/feast/core/Aggregation_pb2_grpc.py index 2daafffebfc..941b2fea49f 100644 --- a/sdk/python/feast/protos/feast/core/Aggregation_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/Aggregation_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/Aggregation_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/DataFormat_pb2.py b/sdk/python/feast/protos/feast/core/DataFormat_pb2.py index b90958cb325..2aefe8da7b0 100644 --- a/sdk/python/feast/protos/feast/core/DataFormat_pb2.py +++ b/sdk/python/feast/protos/feast/core/DataFormat_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/DataFormat.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/DataFormat.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,16 +29,16 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.DataFormat_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\017DataFormatProtoZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_FILEFORMAT'].fields_by_name['delta_format']._options = None + _globals['_FILEFORMAT'].fields_by_name['delta_format']._loaded_options = None _globals['_FILEFORMAT'].fields_by_name['delta_format']._serialized_options = b'\030\001' - _globals['_TABLEFORMAT_ICEBERGFORMAT_PROPERTIESENTRY']._options = None + _globals['_TABLEFORMAT_ICEBERGFORMAT_PROPERTIESENTRY']._loaded_options = None _globals['_TABLEFORMAT_ICEBERGFORMAT_PROPERTIESENTRY']._serialized_options = b'8\001' - _globals['_TABLEFORMAT_DELTAFORMAT_PROPERTIESENTRY']._options = None + _globals['_TABLEFORMAT_DELTAFORMAT_PROPERTIESENTRY']._loaded_options = None _globals['_TABLEFORMAT_DELTAFORMAT_PROPERTIESENTRY']._serialized_options = b'8\001' - _globals['_TABLEFORMAT_HUDIFORMAT_PROPERTIESENTRY']._options = None + _globals['_TABLEFORMAT_HUDIFORMAT_PROPERTIESENTRY']._loaded_options = None _globals['_TABLEFORMAT_HUDIFORMAT_PROPERTIESENTRY']._serialized_options = b'8\001' _globals['_FILEFORMAT']._serialized_start=44 _globals['_FILEFORMAT']._serialized_end=212 diff --git a/sdk/python/feast/protos/feast/core/DataFormat_pb2.pyi b/sdk/python/feast/protos/feast/core/DataFormat_pb2.pyi index 193fb82a776..af41e5a0c15 100644 --- a/sdk/python/feast/protos/feast/core/DataFormat_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/DataFormat_pb2.pyi @@ -16,25 +16,23 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class FileFormat(google.protobuf.message.Message): """Defines the file format encoding the features/entity data in files""" DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class ParquetFormat(google.protobuf.message.Message): """Defines options for the Parquet data format""" @@ -53,26 +51,30 @@ class FileFormat(google.protobuf.message.Message): """Deprecated: Delta Lake is a table format, not a file format. Use TableFormat.DeltaFormat instead for Delta Lake support. """ + def __init__( self, *, parquet_format: global___FileFormat.ParquetFormat | None = ..., delta_format: global___TableFormat.DeltaFormat | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["delta_format", b"delta_format", "format", b"format", "parquet_format", b"parquet_format"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["delta_format", b"delta_format", "format", b"format", "parquet_format", b"parquet_format"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["format", b"format"]) -> typing_extensions.Literal["parquet_format", "delta_format"] | None: ... + def HasField(self, field_name: typing.Literal["delta_format", b"delta_format", "format", b"format", "parquet_format", b"parquet_format"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["delta_format", b"delta_format", "format", b"format", "parquet_format", b"parquet_format"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["format", b"format"]) -> typing.Literal["parquet_format", "delta_format"] | None: ... global___FileFormat = FileFormat +@typing.final class TableFormat(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class IcebergFormat(google.protobuf.message.Message): """Defines options for Apache Iceberg table format""" DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class PropertiesEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -86,7 +88,7 @@ class TableFormat(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... CATALOG_FIELD_NUMBER: builtins.int NAMESPACE_FIELD_NUMBER: builtins.int @@ -100,6 +102,7 @@ class TableFormat(google.protobuf.message.Message): """Additional properties for Iceberg configuration Examples: warehouse location, snapshot-id, as-of-timestamp, etc. """ + def __init__( self, *, @@ -107,13 +110,15 @@ class TableFormat(google.protobuf.message.Message): namespace: builtins.str = ..., properties: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["catalog", b"catalog", "namespace", b"namespace", "properties", b"properties"]) -> None: ... + def ClearField(self, field_name: typing.Literal["catalog", b"catalog", "namespace", b"namespace", "properties", b"properties"]) -> None: ... + @typing.final class DeltaFormat(google.protobuf.message.Message): """Defines options for Delta Lake table format""" DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class PropertiesEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -127,7 +132,7 @@ class TableFormat(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... CHECKPOINT_LOCATION_FIELD_NUMBER: builtins.int PROPERTIES_FIELD_NUMBER: builtins.int @@ -138,19 +143,22 @@ class TableFormat(google.protobuf.message.Message): """Additional properties for Delta configuration Examples: auto-optimize settings, vacuum settings, etc. """ + def __init__( self, *, checkpoint_location: builtins.str = ..., properties: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["checkpoint_location", b"checkpoint_location", "properties", b"properties"]) -> None: ... + def ClearField(self, field_name: typing.Literal["checkpoint_location", b"checkpoint_location", "properties", b"properties"]) -> None: ... + @typing.final class HudiFormat(google.protobuf.message.Message): """Defines options for Apache Hudi table format""" DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class PropertiesEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -164,7 +172,7 @@ class TableFormat(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... TABLE_TYPE_FIELD_NUMBER: builtins.int RECORD_KEY_FIELD_NUMBER: builtins.int @@ -181,6 +189,7 @@ class TableFormat(google.protobuf.message.Message): """Additional properties for Hudi configuration Examples: compaction strategy, indexing options, etc. """ + def __init__( self, *, @@ -189,7 +198,7 @@ class TableFormat(google.protobuf.message.Message): precombine_field: builtins.str = ..., properties: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["precombine_field", b"precombine_field", "properties", b"properties", "record_key", b"record_key", "table_type", b"table_type"]) -> None: ... + def ClearField(self, field_name: typing.Literal["precombine_field", b"precombine_field", "properties", b"properties", "record_key", b"record_key", "table_type", b"table_type"]) -> None: ... ICEBERG_FORMAT_FIELD_NUMBER: builtins.int DELTA_FORMAT_FIELD_NUMBER: builtins.int @@ -207,17 +216,19 @@ class TableFormat(google.protobuf.message.Message): delta_format: global___TableFormat.DeltaFormat | None = ..., hudi_format: global___TableFormat.HudiFormat | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["delta_format", b"delta_format", "format", b"format", "hudi_format", b"hudi_format", "iceberg_format", b"iceberg_format"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["delta_format", b"delta_format", "format", b"format", "hudi_format", b"hudi_format", "iceberg_format", b"iceberg_format"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["format", b"format"]) -> typing_extensions.Literal["iceberg_format", "delta_format", "hudi_format"] | None: ... + def HasField(self, field_name: typing.Literal["delta_format", b"delta_format", "format", b"format", "hudi_format", b"hudi_format", "iceberg_format", b"iceberg_format"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["delta_format", b"delta_format", "format", b"format", "hudi_format", b"hudi_format", "iceberg_format", b"iceberg_format"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["format", b"format"]) -> typing.Literal["iceberg_format", "delta_format", "hudi_format"] | None: ... global___TableFormat = TableFormat +@typing.final class StreamFormat(google.protobuf.message.Message): """Defines the data format encoding features/entity data in data streams""" DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class ProtoFormat(google.protobuf.message.Message): """Defines options for the protobuf data format""" @@ -233,8 +244,9 @@ class StreamFormat(google.protobuf.message.Message): *, class_path: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["class_path", b"class_path"]) -> None: ... + def ClearField(self, field_name: typing.Literal["class_path", b"class_path"]) -> None: ... + @typing.final class AvroFormat(google.protobuf.message.Message): """Defines options for the avro data format""" @@ -250,8 +262,9 @@ class StreamFormat(google.protobuf.message.Message): *, schema_json: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["schema_json", b"schema_json"]) -> None: ... + def ClearField(self, field_name: typing.Literal["schema_json", b"schema_json"]) -> None: ... + @typing.final class JsonFormat(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -262,7 +275,7 @@ class StreamFormat(google.protobuf.message.Message): *, schema_json: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["schema_json", b"schema_json"]) -> None: ... + def ClearField(self, field_name: typing.Literal["schema_json", b"schema_json"]) -> None: ... AVRO_FORMAT_FIELD_NUMBER: builtins.int PROTO_FORMAT_FIELD_NUMBER: builtins.int @@ -280,8 +293,8 @@ class StreamFormat(google.protobuf.message.Message): proto_format: global___StreamFormat.ProtoFormat | None = ..., json_format: global___StreamFormat.JsonFormat | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["avro_format", b"avro_format", "format", b"format", "json_format", b"json_format", "proto_format", b"proto_format"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["avro_format", b"avro_format", "format", b"format", "json_format", b"json_format", "proto_format", b"proto_format"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["format", b"format"]) -> typing_extensions.Literal["avro_format", "proto_format", "json_format"] | None: ... + def HasField(self, field_name: typing.Literal["avro_format", b"avro_format", "format", b"format", "json_format", b"json_format", "proto_format", b"proto_format"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["avro_format", b"avro_format", "format", b"format", "json_format", b"json_format", "proto_format", b"proto_format"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["format", b"format"]) -> typing.Literal["avro_format", "proto_format", "json_format"] | None: ... global___StreamFormat = StreamFormat diff --git a/sdk/python/feast/protos/feast/core/DataFormat_pb2_grpc.py b/sdk/python/feast/protos/feast/core/DataFormat_pb2_grpc.py index 2daafffebfc..f8b53539d0d 100644 --- a/sdk/python/feast/protos/feast/core/DataFormat_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/DataFormat_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/DataFormat_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/DataSource_pb2.py b/sdk/python/feast/protos/feast/core/DataSource_pb2.py index f3086233584..026657ac724 100644 --- a/sdk/python/feast/protos/feast/core/DataSource_pb2.py +++ b/sdk/python/feast/protos/feast/core/DataSource_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/DataSource.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/DataSource.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -24,14 +34,14 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.DataSource_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\017DataSourceProtoZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_DATASOURCE_TAGSENTRY']._options = None + _globals['_DATASOURCE_TAGSENTRY']._loaded_options = None _globals['_DATASOURCE_TAGSENTRY']._serialized_options = b'8\001' - _globals['_DATASOURCE_FIELDMAPPINGENTRY']._options = None + _globals['_DATASOURCE_FIELDMAPPINGENTRY']._loaded_options = None _globals['_DATASOURCE_FIELDMAPPINGENTRY']._serialized_options = b'8\001' - _globals['_DATASOURCE_REQUESTDATAOPTIONS_DEPRECATEDSCHEMAENTRY']._options = None + _globals['_DATASOURCE_REQUESTDATAOPTIONS_DEPRECATEDSCHEMAENTRY']._loaded_options = None _globals['_DATASOURCE_REQUESTDATAOPTIONS_DEPRECATEDSCHEMAENTRY']._serialized_options = b'8\001' _globals['_DATASOURCE']._serialized_start=189 _globals['_DATASOURCE']._serialized_end=3270 diff --git a/sdk/python/feast/protos/feast/core/DataSource_pb2.pyi b/sdk/python/feast/protos/feast/core/DataSource_pb2.pyi index 7876e1adc98..e20c2df8b62 100644 --- a/sdk/python/feast/protos/feast/core/DataSource_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/DataSource_pb2.pyi @@ -16,6 +16,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import feast.core.DataFormat_pb2 @@ -37,6 +38,7 @@ else: DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class DataSource(google.protobuf.message.Message): """Defines a Data Source that can be used source Feature data Next available id: 28 @@ -48,7 +50,7 @@ class DataSource(google.protobuf.message.Message): ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType - class _SourceTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DataSource._SourceType.ValueType], builtins.type): # noqa: F821 + class _SourceTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DataSource._SourceType.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor INVALID: DataSource._SourceType.ValueType # 0 BATCH_FILE: DataSource._SourceType.ValueType # 1 @@ -83,6 +85,7 @@ class DataSource(google.protobuf.message.Message): BATCH_SPARK: DataSource.SourceType.ValueType # 11 BATCH_ATHENA: DataSource.SourceType.ValueType # 12 + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -96,8 +99,9 @@ class DataSource(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + @typing.final class FieldMappingEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -111,8 +115,9 @@ class DataSource(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + @typing.final class SourceMeta(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -136,9 +141,10 @@ class DataSource(google.protobuf.message.Message): created_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., last_updated_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "earliestEventTimestamp", b"earliestEventTimestamp", "last_updated_timestamp", b"last_updated_timestamp", "latestEventTimestamp", b"latestEventTimestamp"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "earliestEventTimestamp", b"earliestEventTimestamp", "last_updated_timestamp", b"last_updated_timestamp", "latestEventTimestamp", b"latestEventTimestamp"]) -> None: ... + def HasField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "earliestEventTimestamp", b"earliestEventTimestamp", "last_updated_timestamp", b"last_updated_timestamp", "latestEventTimestamp", b"latestEventTimestamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "earliestEventTimestamp", b"earliestEventTimestamp", "last_updated_timestamp", b"last_updated_timestamp", "latestEventTimestamp", b"latestEventTimestamp"]) -> None: ... + @typing.final class FileOptions(google.protobuf.message.Message): """Defines options for DataSource that sources features from a file""" @@ -147,8 +153,6 @@ class DataSource(google.protobuf.message.Message): FILE_FORMAT_FIELD_NUMBER: builtins.int URI_FIELD_NUMBER: builtins.int S3_ENDPOINT_OVERRIDE_FIELD_NUMBER: builtins.int - @property - def file_format(self) -> feast.core.DataFormat_pb2.FileFormat: ... uri: builtins.str """Target URL of file to retrieve and source features from. s3://path/to/file for AWS S3 storage @@ -157,6 +161,8 @@ class DataSource(google.protobuf.message.Message): """ s3_endpoint_override: builtins.str """override AWS S3 storage endpoint with custom S3 endpoint""" + @property + def file_format(self) -> feast.core.DataFormat_pb2.FileFormat: ... def __init__( self, *, @@ -164,9 +170,10 @@ class DataSource(google.protobuf.message.Message): uri: builtins.str = ..., s3_endpoint_override: builtins.str = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["file_format", b"file_format"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["file_format", b"file_format", "s3_endpoint_override", b"s3_endpoint_override", "uri", b"uri"]) -> None: ... + def HasField(self, field_name: typing.Literal["file_format", b"file_format"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["file_format", b"file_format", "s3_endpoint_override", b"s3_endpoint_override", "uri", b"uri"]) -> None: ... + @typing.final class BigQueryOptions(google.protobuf.message.Message): """Defines options for DataSource that sources features from a BigQuery Query""" @@ -186,8 +193,9 @@ class DataSource(google.protobuf.message.Message): table: builtins.str = ..., query: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["query", b"query", "table", b"table"]) -> None: ... + def ClearField(self, field_name: typing.Literal["query", b"query", "table", b"table"]) -> None: ... + @typing.final class TrinoOptions(google.protobuf.message.Message): """Defines options for DataSource that sources features from a Trino Query""" @@ -207,8 +215,9 @@ class DataSource(google.protobuf.message.Message): table: builtins.str = ..., query: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["query", b"query", "table", b"table"]) -> None: ... + def ClearField(self, field_name: typing.Literal["query", b"query", "table", b"table"]) -> None: ... + @typing.final class KafkaOptions(google.protobuf.message.Message): """Defines options for DataSource that sources features from Kafka messages. Each message should be a Protobuf that can be decoded with the generated @@ -228,9 +237,11 @@ class DataSource(google.protobuf.message.Message): @property def message_format(self) -> feast.core.DataFormat_pb2.StreamFormat: """Defines the stream data format encoding feature/entity data in Kafka messages.""" + @property def watermark_delay_threshold(self) -> google.protobuf.duration_pb2.Duration: """Watermark delay threshold for stream data""" + def __init__( self, *, @@ -239,9 +250,10 @@ class DataSource(google.protobuf.message.Message): message_format: feast.core.DataFormat_pb2.StreamFormat | None = ..., watermark_delay_threshold: google.protobuf.duration_pb2.Duration | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["message_format", b"message_format", "watermark_delay_threshold", b"watermark_delay_threshold"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["kafka_bootstrap_servers", b"kafka_bootstrap_servers", "message_format", b"message_format", "topic", b"topic", "watermark_delay_threshold", b"watermark_delay_threshold"]) -> None: ... + def HasField(self, field_name: typing.Literal["message_format", b"message_format", "watermark_delay_threshold", b"watermark_delay_threshold"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["kafka_bootstrap_servers", b"kafka_bootstrap_servers", "message_format", b"message_format", "topic", b"topic", "watermark_delay_threshold", b"watermark_delay_threshold"]) -> None: ... + @typing.final class KinesisOptions(google.protobuf.message.Message): """Defines options for DataSource that sources features from Kinesis records. Each record should be a Protobuf that can be decoded with the generated @@ -262,6 +274,7 @@ class DataSource(google.protobuf.message.Message): """Defines the data format encoding the feature/entity data in Kinesis records. Kinesis Data Sources support Avro and Proto as data formats. """ + def __init__( self, *, @@ -269,9 +282,10 @@ class DataSource(google.protobuf.message.Message): stream_name: builtins.str = ..., record_format: feast.core.DataFormat_pb2.StreamFormat | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["record_format", b"record_format"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["record_format", b"record_format", "region", b"region", "stream_name", b"stream_name"]) -> None: ... + def HasField(self, field_name: typing.Literal["record_format", b"record_format"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["record_format", b"record_format", "region", b"region", "stream_name", b"stream_name"]) -> None: ... + @typing.final class RedshiftOptions(google.protobuf.message.Message): """Defines options for DataSource that sources features from a Redshift Query""" @@ -299,8 +313,9 @@ class DataSource(google.protobuf.message.Message): schema: builtins.str = ..., database: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["database", b"database", "query", b"query", "schema", b"schema", "table", b"table"]) -> None: ... + def ClearField(self, field_name: typing.Literal["database", b"database", "query", b"query", "schema", b"schema", "table", b"table"]) -> None: ... + @typing.final class AthenaOptions(google.protobuf.message.Message): """Defines options for DataSource that sources features from a Athena Query""" @@ -328,8 +343,9 @@ class DataSource(google.protobuf.message.Message): database: builtins.str = ..., data_source: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data_source", b"data_source", "database", b"database", "query", b"query", "table", b"table"]) -> None: ... + def ClearField(self, field_name: typing.Literal["data_source", b"data_source", "database", b"database", "query", b"query", "table", b"table"]) -> None: ... + @typing.final class SnowflakeOptions(google.protobuf.message.Message): """Defines options for DataSource that sources features from a Snowflake Query""" @@ -357,8 +373,9 @@ class DataSource(google.protobuf.message.Message): schema: builtins.str = ..., database: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["database", b"database", "query", b"query", "schema", b"schema", "table", b"table"]) -> None: ... + def ClearField(self, field_name: typing.Literal["database", b"database", "query", b"query", "schema", b"schema", "table", b"table"]) -> None: ... + @typing.final class SparkOptions(google.protobuf.message.Message): """Defines options for DataSource that sources features from a spark table/query""" @@ -383,6 +400,7 @@ class DataSource(google.protobuf.message.Message): @property def table_format(self) -> feast.core.DataFormat_pb2.TableFormat: """Table Format (e.g. iceberg, delta, hudi)""" + def __init__( self, *, @@ -393,9 +411,10 @@ class DataSource(google.protobuf.message.Message): date_partition_column_format: builtins.str = ..., table_format: feast.core.DataFormat_pb2.TableFormat | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["table_format", b"table_format"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["date_partition_column_format", b"date_partition_column_format", "file_format", b"file_format", "path", b"path", "query", b"query", "table", b"table", "table_format", b"table_format"]) -> None: ... + def HasField(self, field_name: typing.Literal["table_format", b"table_format"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["date_partition_column_format", b"date_partition_column_format", "file_format", b"file_format", "path", b"path", "query", b"query", "table", b"table", "table_format", b"table_format"]) -> None: ... + @typing.final class CustomSourceOptions(google.protobuf.message.Message): """Defines configuration for custom third-party data sources.""" @@ -411,13 +430,15 @@ class DataSource(google.protobuf.message.Message): *, configuration: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["configuration", b"configuration"]) -> None: ... + def ClearField(self, field_name: typing.Literal["configuration", b"configuration"]) -> None: ... + @typing.final class RequestDataOptions(google.protobuf.message.Message): """Defines options for DataSource that sources features from request data""" DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class DeprecatedSchemaEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -431,13 +452,14 @@ class DataSource(google.protobuf.message.Message): key: builtins.str = ..., value: feast.types.Value_pb2.ValueType.Enum.ValueType = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... DEPRECATED_SCHEMA_FIELD_NUMBER: builtins.int SCHEMA_FIELD_NUMBER: builtins.int @property def deprecated_schema(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, feast.types.Value_pb2.ValueType.Enum.ValueType]: """Mapping of feature name to type""" + @property def schema(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Feature_pb2.FeatureSpecV2]: ... def __init__( @@ -446,8 +468,9 @@ class DataSource(google.protobuf.message.Message): deprecated_schema: collections.abc.Mapping[builtins.str, feast.types.Value_pb2.ValueType.Enum.ValueType] | None = ..., schema: collections.abc.Iterable[feast.core.Feature_pb2.FeatureSpecV2] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["deprecated_schema", b"deprecated_schema", "schema", b"schema"]) -> None: ... + def ClearField(self, field_name: typing.Literal["deprecated_schema", b"deprecated_schema", "schema", b"schema"]) -> None: ... + @typing.final class PushOptions(google.protobuf.message.Message): """Defines options for DataSource that supports pushing data to it. This allows data to be pushed to the online store on-demand, such as by stream consumers. @@ -489,15 +512,8 @@ class DataSource(google.protobuf.message.Message): project: builtins.str """Name of Feast project that this data source belongs to.""" description: builtins.str - @property - def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... owner: builtins.str type: global___DataSource.SourceType.ValueType - @property - def field_mapping(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: - """Defines mapping between fields in the sourced data - and fields in parent FeatureTable. - """ timestamp_field: builtins.str """Must specify event timestamp column name""" date_partition_column: builtins.str @@ -512,9 +528,18 @@ class DataSource(google.protobuf.message.Message): The field is used primarily by custom data sources and is mandatory for them to set. Feast may set it for first party sources as well. """ + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + @property + def field_mapping(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + """Defines mapping between fields in the sourced data + and fields in parent FeatureTable. + """ + @property def batch_source(self) -> global___DataSource: """Optional batch source for streaming sources for historical features and materialization.""" + @property def meta(self) -> global___DataSource.SourceMeta: ... @property @@ -570,12 +595,13 @@ class DataSource(google.protobuf.message.Message): trino_options: global___DataSource.TrinoOptions | None = ..., athena_options: global___DataSource.AthenaOptions | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["athena_options", b"athena_options", "batch_source", b"batch_source", "bigquery_options", b"bigquery_options", "custom_options", b"custom_options", "file_options", b"file_options", "kafka_options", b"kafka_options", "kinesis_options", b"kinesis_options", "meta", b"meta", "options", b"options", "push_options", b"push_options", "redshift_options", b"redshift_options", "request_data_options", b"request_data_options", "snowflake_options", b"snowflake_options", "spark_options", b"spark_options", "trino_options", b"trino_options"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["athena_options", b"athena_options", "batch_source", b"batch_source", "bigquery_options", b"bigquery_options", "created_timestamp_column", b"created_timestamp_column", "custom_options", b"custom_options", "data_source_class_type", b"data_source_class_type", "date_partition_column", b"date_partition_column", "description", b"description", "field_mapping", b"field_mapping", "file_options", b"file_options", "kafka_options", b"kafka_options", "kinesis_options", b"kinesis_options", "meta", b"meta", "name", b"name", "options", b"options", "owner", b"owner", "project", b"project", "push_options", b"push_options", "redshift_options", b"redshift_options", "request_data_options", b"request_data_options", "snowflake_options", b"snowflake_options", "spark_options", b"spark_options", "tags", b"tags", "timestamp_field", b"timestamp_field", "trino_options", b"trino_options", "type", b"type"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["options", b"options"]) -> typing_extensions.Literal["file_options", "bigquery_options", "kafka_options", "kinesis_options", "redshift_options", "request_data_options", "custom_options", "snowflake_options", "push_options", "spark_options", "trino_options", "athena_options"] | None: ... + def HasField(self, field_name: typing.Literal["athena_options", b"athena_options", "batch_source", b"batch_source", "bigquery_options", b"bigquery_options", "custom_options", b"custom_options", "file_options", b"file_options", "kafka_options", b"kafka_options", "kinesis_options", b"kinesis_options", "meta", b"meta", "options", b"options", "push_options", b"push_options", "redshift_options", b"redshift_options", "request_data_options", b"request_data_options", "snowflake_options", b"snowflake_options", "spark_options", b"spark_options", "trino_options", b"trino_options"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["athena_options", b"athena_options", "batch_source", b"batch_source", "bigquery_options", b"bigquery_options", "created_timestamp_column", b"created_timestamp_column", "custom_options", b"custom_options", "data_source_class_type", b"data_source_class_type", "date_partition_column", b"date_partition_column", "description", b"description", "field_mapping", b"field_mapping", "file_options", b"file_options", "kafka_options", b"kafka_options", "kinesis_options", b"kinesis_options", "meta", b"meta", "name", b"name", "options", b"options", "owner", b"owner", "project", b"project", "push_options", b"push_options", "redshift_options", b"redshift_options", "request_data_options", b"request_data_options", "snowflake_options", b"snowflake_options", "spark_options", b"spark_options", "tags", b"tags", "timestamp_field", b"timestamp_field", "trino_options", b"trino_options", "type", b"type"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["options", b"options"]) -> typing.Literal["file_options", "bigquery_options", "kafka_options", "kinesis_options", "redshift_options", "request_data_options", "custom_options", "snowflake_options", "push_options", "spark_options", "trino_options", "athena_options"] | None: ... global___DataSource = DataSource +@typing.final class DataSourceList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -587,6 +613,6 @@ class DataSourceList(google.protobuf.message.Message): *, datasources: collections.abc.Iterable[global___DataSource] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["datasources", b"datasources"]) -> None: ... + def ClearField(self, field_name: typing.Literal["datasources", b"datasources"]) -> None: ... global___DataSourceList = DataSourceList diff --git a/sdk/python/feast/protos/feast/core/DataSource_pb2_grpc.py b/sdk/python/feast/protos/feast/core/DataSource_pb2_grpc.py index 2daafffebfc..0c7b30745ef 100644 --- a/sdk/python/feast/protos/feast/core/DataSource_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/DataSource_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/DataSource_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/DatastoreTable_pb2.py b/sdk/python/feast/protos/feast/core/DatastoreTable_pb2.py index c5dbc3ec64a..3886263c542 100644 --- a/sdk/python/feast/protos/feast/core/DatastoreTable_pb2.py +++ b/sdk/python/feast/protos/feast/core/DatastoreTable_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/DatastoreTable.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/DatastoreTable.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -20,8 +30,8 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.DatastoreTable_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\023DatastoreTableProtoZ/github.com/feast-dev/feast/go/protos/feast/core' _globals['_DATASTORETABLE']._serialized_start=80 _globals['_DATASTORETABLE']._serialized_end=274 diff --git a/sdk/python/feast/protos/feast/core/DatastoreTable_pb2.pyi b/sdk/python/feast/protos/feast/core/DatastoreTable_pb2.pyi index 6339a97536e..1d3d658afa7 100644 --- a/sdk/python/feast/protos/feast/core/DatastoreTable_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/DatastoreTable_pb2.pyi @@ -16,19 +16,16 @@ isort:skip_file * See the License for the specific language governing permissions and * limitations under the License. """ + import builtins import google.protobuf.descriptor import google.protobuf.message import google.protobuf.wrappers_pb2 -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class DatastoreTable(google.protobuf.message.Message): """Represents a Datastore table""" @@ -46,12 +43,15 @@ class DatastoreTable(google.protobuf.message.Message): @property def project_id(self) -> google.protobuf.wrappers_pb2.StringValue: """GCP project id""" + @property def namespace(self) -> google.protobuf.wrappers_pb2.StringValue: """Datastore namespace""" + @property def database(self) -> google.protobuf.wrappers_pb2.StringValue: """Firestore database""" + def __init__( self, *, @@ -61,7 +61,7 @@ class DatastoreTable(google.protobuf.message.Message): namespace: google.protobuf.wrappers_pb2.StringValue | None = ..., database: google.protobuf.wrappers_pb2.StringValue | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["database", b"database", "namespace", b"namespace", "project_id", b"project_id"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["database", b"database", "name", b"name", "namespace", b"namespace", "project", b"project", "project_id", b"project_id"]) -> None: ... + def HasField(self, field_name: typing.Literal["database", b"database", "namespace", b"namespace", "project_id", b"project_id"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["database", b"database", "name", b"name", "namespace", b"namespace", "project", b"project", "project_id", b"project_id"]) -> None: ... global___DatastoreTable = DatastoreTable diff --git a/sdk/python/feast/protos/feast/core/DatastoreTable_pb2_grpc.py b/sdk/python/feast/protos/feast/core/DatastoreTable_pb2_grpc.py index 2daafffebfc..3772d7fd021 100644 --- a/sdk/python/feast/protos/feast/core/DatastoreTable_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/DatastoreTable_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/DatastoreTable_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/Entity_pb2.py b/sdk/python/feast/protos/feast/core/Entity_pb2.py index 2b3e7806736..eae2781d6bd 100644 --- a/sdk/python/feast/protos/feast/core/Entity_pb2.py +++ b/sdk/python/feast/protos/feast/core/Entity_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/Entity.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/Entity.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -16,24 +26,24 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66\x65\x61st/core/Entity.proto\x12\nfeast.core\x1a\x17\x66\x65\x61st/types/Value.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"V\n\x06\x45ntity\x12&\n\x04spec\x18\x01 \x01(\x0b\x32\x18.feast.core.EntitySpecV2\x12$\n\x04meta\x18\x02 \x01(\x0b\x32\x16.feast.core.EntityMeta\"\xf3\x01\n\x0c\x45ntitySpecV2\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\t \x01(\t\x12/\n\nvalue_type\x18\x02 \x01(\x0e\x32\x1b.feast.types.ValueType.Enum\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x10\n\x08join_key\x18\x04 \x01(\t\x12\x30\n\x04tags\x18\x08 \x03(\x0b\x32\".feast.core.EntitySpecV2.TagsEntry\x12\r\n\x05owner\x18\n \x01(\t\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x7f\n\nEntityMeta\x12\x35\n\x11\x63reated_timestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12:\n\x16last_updated_timestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"2\n\nEntityList\x12$\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x12.feast.core.EntityBP\n\x10\x66\x65\x61st.proto.coreB\x0b\x45ntityProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66\x65\x61st/core/Entity.proto\x12\nfeast.core\x1a\x17\x66\x65\x61st/types/Value.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"V\n\x06\x45ntity\x12&\n\x04spec\x18\x01 \x01(\x0b\x32\x18.feast.core.EntitySpecV2\x12$\n\x04meta\x18\x02 \x01(\x0b\x32\x16.feast.core.EntityMeta\"\x86\x02\n\x0c\x45ntitySpecV2\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\t \x01(\t\x12/\n\nvalue_type\x18\x02 \x01(\x0e\x32\x1b.feast.types.ValueType.Enum\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x10\n\x08join_key\x18\x04 \x01(\t\x12\x30\n\x04tags\x18\x08 \x03(\x0b\x32\".feast.core.EntitySpecV2.TagsEntry\x12\r\n\x05owner\x18\n \x01(\t\x12\x11\n\tjoin_keys\x18\x0b \x03(\t\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x7f\n\nEntityMeta\x12\x35\n\x11\x63reated_timestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12:\n\x16last_updated_timestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"2\n\nEntityList\x12$\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x12.feast.core.EntityBP\n\x10\x66\x65\x61st.proto.coreB\x0b\x45ntityProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Entity_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\013EntityProtoZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_ENTITYSPECV2_TAGSENTRY']._options = None + _globals['_ENTITYSPECV2_TAGSENTRY']._loaded_options = None _globals['_ENTITYSPECV2_TAGSENTRY']._serialized_options = b'8\001' _globals['_ENTITY']._serialized_start=97 _globals['_ENTITY']._serialized_end=183 _globals['_ENTITYSPECV2']._serialized_start=186 - _globals['_ENTITYSPECV2']._serialized_end=429 - _globals['_ENTITYSPECV2_TAGSENTRY']._serialized_start=386 - _globals['_ENTITYSPECV2_TAGSENTRY']._serialized_end=429 - _globals['_ENTITYMETA']._serialized_start=431 - _globals['_ENTITYMETA']._serialized_end=558 - _globals['_ENTITYLIST']._serialized_start=560 - _globals['_ENTITYLIST']._serialized_end=610 + _globals['_ENTITYSPECV2']._serialized_end=448 + _globals['_ENTITYSPECV2_TAGSENTRY']._serialized_start=405 + _globals['_ENTITYSPECV2_TAGSENTRY']._serialized_end=448 + _globals['_ENTITYMETA']._serialized_start=450 + _globals['_ENTITYMETA']._serialized_end=577 + _globals['_ENTITYLIST']._serialized_start=579 + _globals['_ENTITYLIST']._serialized_end=629 # @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/Entity_pb2.pyi b/sdk/python/feast/protos/feast/core/Entity_pb2.pyi index 025817edfee..eba5c67c808 100644 --- a/sdk/python/feast/protos/feast/core/Entity_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/Entity_pb2.pyi @@ -16,6 +16,7 @@ isort:skip_file * See the License for the specific language governing permissions and * limitations under the License. """ + import builtins import collections.abc import feast.types.Value_pb2 @@ -23,15 +24,11 @@ import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import google.protobuf.timestamp_pb2 -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Entity(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -40,23 +37,27 @@ class Entity(google.protobuf.message.Message): @property def spec(self) -> global___EntitySpecV2: """User-specified specifications of this entity.""" + @property def meta(self) -> global___EntityMeta: """System-populated metadata for this entity.""" + def __init__( self, *, spec: global___EntitySpecV2 | None = ..., meta: global___EntityMeta | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... + def HasField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... global___Entity = Entity +@typing.final class EntitySpecV2(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -70,7 +71,7 @@ class EntitySpecV2(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int @@ -79,6 +80,7 @@ class EntitySpecV2(google.protobuf.message.Message): JOIN_KEY_FIELD_NUMBER: builtins.int TAGS_FIELD_NUMBER: builtins.int OWNER_FIELD_NUMBER: builtins.int + JOIN_KEYS_FIELD_NUMBER: builtins.int name: builtins.str """Name of the entity.""" project: builtins.str @@ -88,12 +90,22 @@ class EntitySpecV2(google.protobuf.message.Message): description: builtins.str """Description of the entity.""" join_key: builtins.str - """Join key for the entity (i.e. name of the column the entity maps to).""" + """Join key for the entity (i.e. name of the column the entity maps to). + Deprecated: Use join_keys instead for multiple join key support. + """ + owner: builtins.str + """Owner of the entity.""" @property def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """User defined metadata""" - owner: builtins.str - """Owner of the entity.""" + + @property + def join_keys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """Join keys for the entity (i.e. names of the columns the entity maps to). + This supports multiple join keys. For backward compatibility, if this field + is empty, the single join_key field will be used. + """ + def __init__( self, *, @@ -104,11 +116,13 @@ class EntitySpecV2(google.protobuf.message.Message): join_key: builtins.str = ..., tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., owner: builtins.str = ..., + join_keys: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["description", b"description", "join_key", b"join_key", "name", b"name", "owner", b"owner", "project", b"project", "tags", b"tags", "value_type", b"value_type"]) -> None: ... + def ClearField(self, field_name: typing.Literal["description", b"description", "join_key", b"join_key", "join_keys", b"join_keys", "name", b"name", "owner", b"owner", "project", b"project", "tags", b"tags", "value_type", b"value_type"]) -> None: ... global___EntitySpecV2 = EntitySpecV2 +@typing.final class EntityMeta(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -124,11 +138,12 @@ class EntityMeta(google.protobuf.message.Message): created_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., last_updated_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> None: ... + def HasField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> None: ... global___EntityMeta = EntityMeta +@typing.final class EntityList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -140,6 +155,6 @@ class EntityList(google.protobuf.message.Message): *, entities: collections.abc.Iterable[global___Entity] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["entities", b"entities"]) -> None: ... + def ClearField(self, field_name: typing.Literal["entities", b"entities"]) -> None: ... global___EntityList = EntityList diff --git a/sdk/python/feast/protos/feast/core/Entity_pb2_grpc.py b/sdk/python/feast/protos/feast/core/Entity_pb2_grpc.py index 2daafffebfc..bef773add77 100644 --- a/sdk/python/feast/protos/feast/core/Entity_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/Entity_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/Entity_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/FeatureService_pb2.py b/sdk/python/feast/protos/feast/core/FeatureService_pb2.py index 7ef36079691..9de22961209 100644 --- a/sdk/python/feast/protos/feast/core/FeatureService_pb2.py +++ b/sdk/python/feast/protos/feast/core/FeatureService_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/FeatureService.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/FeatureService.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -21,12 +31,12 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.FeatureService_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\023FeatureServiceProtoZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_FEATURESERVICESPEC_TAGSENTRY']._options = None + _globals['_FEATURESERVICESPEC_TAGSENTRY']._loaded_options = None _globals['_FEATURESERVICESPEC_TAGSENTRY']._serialized_options = b'8\001' - _globals['_LOGGINGCONFIG_CUSTOMDESTINATION_CONFIGENTRY']._options = None + _globals['_LOGGINGCONFIG_CUSTOMDESTINATION_CONFIGENTRY']._loaded_options = None _globals['_LOGGINGCONFIG_CUSTOMDESTINATION_CONFIGENTRY']._serialized_options = b'8\001' _globals['_FEATURESERVICE']._serialized_start=120 _globals['_FEATURESERVICE']._serialized_end=228 diff --git a/sdk/python/feast/protos/feast/core/FeatureService_pb2.pyi b/sdk/python/feast/protos/feast/core/FeatureService_pb2.pyi index 6d5879e52cb..ad56d2fc5bd 100644 --- a/sdk/python/feast/protos/feast/core/FeatureService_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/FeatureService_pb2.pyi @@ -2,6 +2,7 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ + import builtins import collections.abc import feast.core.FeatureViewProjection_pb2 @@ -9,15 +10,11 @@ import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import google.protobuf.timestamp_pb2 -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class FeatureService(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -26,23 +23,27 @@ class FeatureService(google.protobuf.message.Message): @property def spec(self) -> global___FeatureServiceSpec: """User-specified specifications of this feature service.""" + @property def meta(self) -> global___FeatureServiceMeta: """System-populated metadata for this feature service.""" + def __init__( self, *, spec: global___FeatureServiceSpec | None = ..., meta: global___FeatureServiceMeta | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... + def HasField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... global___FeatureService = FeatureService +@typing.final class FeatureServiceSpec(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -56,7 +57,7 @@ class FeatureServiceSpec(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int @@ -69,21 +70,24 @@ class FeatureServiceSpec(google.protobuf.message.Message): """Name of the Feature Service. Must be unique. Not updated.""" project: builtins.str """Name of Feast project that this Feature Service belongs to.""" + description: builtins.str + """Description of the feature service.""" + owner: builtins.str + """Owner of the feature service.""" @property def features(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.FeatureViewProjection_pb2.FeatureViewProjection]: """Represents a projection that's to be applied on top of the FeatureView. Contains data such as the features to use from a FeatureView. """ + @property def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """User defined metadata""" - description: builtins.str - """Description of the feature service.""" - owner: builtins.str - """Owner of the feature service.""" + @property def logging_config(self) -> global___LoggingConfig: """(optional) if provided logging will be enabled for this feature service.""" + def __init__( self, *, @@ -95,11 +99,12 @@ class FeatureServiceSpec(google.protobuf.message.Message): owner: builtins.str = ..., logging_config: global___LoggingConfig | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["logging_config", b"logging_config"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["description", b"description", "features", b"features", "logging_config", b"logging_config", "name", b"name", "owner", b"owner", "project", b"project", "tags", b"tags"]) -> None: ... + def HasField(self, field_name: typing.Literal["logging_config", b"logging_config"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["description", b"description", "features", b"features", "logging_config", b"logging_config", "name", b"name", "owner", b"owner", "project", b"project", "tags", b"tags"]) -> None: ... global___FeatureServiceSpec = FeatureServiceSpec +@typing.final class FeatureServiceMeta(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -108,23 +113,27 @@ class FeatureServiceMeta(google.protobuf.message.Message): @property def created_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: """Time where this Feature Service is created""" + @property def last_updated_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: """Time where this Feature Service is last updated""" + def __init__( self, *, created_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., last_updated_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> None: ... + def HasField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> None: ... global___FeatureServiceMeta = FeatureServiceMeta +@typing.final class LoggingConfig(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class FileDestination(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -136,6 +145,7 @@ class LoggingConfig(google.protobuf.message.Message): @property def partition_by(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """column names to use for partitioning""" + def __init__( self, *, @@ -143,8 +153,9 @@ class LoggingConfig(google.protobuf.message.Message): s3_endpoint_override: builtins.str = ..., partition_by: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["partition_by", b"partition_by", "path", b"path", "s3_endpoint_override", b"s3_endpoint_override"]) -> None: ... + def ClearField(self, field_name: typing.Literal["partition_by", b"partition_by", "path", b"path", "s3_endpoint_override", b"s3_endpoint_override"]) -> None: ... + @typing.final class BigQueryDestination(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -156,8 +167,9 @@ class LoggingConfig(google.protobuf.message.Message): *, table_ref: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["table_ref", b"table_ref"]) -> None: ... + def ClearField(self, field_name: typing.Literal["table_ref", b"table_ref"]) -> None: ... + @typing.final class RedshiftDestination(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -169,8 +181,9 @@ class LoggingConfig(google.protobuf.message.Message): *, table_name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["table_name", b"table_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["table_name", b"table_name"]) -> None: ... + @typing.final class AthenaDestination(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -182,8 +195,9 @@ class LoggingConfig(google.protobuf.message.Message): *, table_name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["table_name", b"table_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["table_name", b"table_name"]) -> None: ... + @typing.final class SnowflakeDestination(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -195,11 +209,13 @@ class LoggingConfig(google.protobuf.message.Message): *, table_name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["table_name", b"table_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["table_name", b"table_name"]) -> None: ... + @typing.final class CustomDestination(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class ConfigEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -213,7 +229,7 @@ class LoggingConfig(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... KIND_FIELD_NUMBER: builtins.int CONFIG_FIELD_NUMBER: builtins.int @@ -226,8 +242,9 @@ class LoggingConfig(google.protobuf.message.Message): kind: builtins.str = ..., config: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["config", b"config", "kind", b"kind"]) -> None: ... + def ClearField(self, field_name: typing.Literal["config", b"config", "kind", b"kind"]) -> None: ... + @typing.final class CouchbaseColumnarDestination(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -247,7 +264,7 @@ class LoggingConfig(google.protobuf.message.Message): scope: builtins.str = ..., collection: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["collection", b"collection", "database", b"database", "scope", b"scope"]) -> None: ... + def ClearField(self, field_name: typing.Literal["collection", b"collection", "database", b"database", "scope", b"scope"]) -> None: ... SAMPLE_RATE_FIELD_NUMBER: builtins.int FILE_DESTINATION_FIELD_NUMBER: builtins.int @@ -284,12 +301,13 @@ class LoggingConfig(google.protobuf.message.Message): athena_destination: global___LoggingConfig.AthenaDestination | None = ..., couchbase_columnar_destination: global___LoggingConfig.CouchbaseColumnarDestination | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["athena_destination", b"athena_destination", "bigquery_destination", b"bigquery_destination", "couchbase_columnar_destination", b"couchbase_columnar_destination", "custom_destination", b"custom_destination", "destination", b"destination", "file_destination", b"file_destination", "redshift_destination", b"redshift_destination", "snowflake_destination", b"snowflake_destination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["athena_destination", b"athena_destination", "bigquery_destination", b"bigquery_destination", "couchbase_columnar_destination", b"couchbase_columnar_destination", "custom_destination", b"custom_destination", "destination", b"destination", "file_destination", b"file_destination", "redshift_destination", b"redshift_destination", "sample_rate", b"sample_rate", "snowflake_destination", b"snowflake_destination"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["destination", b"destination"]) -> typing_extensions.Literal["file_destination", "bigquery_destination", "redshift_destination", "snowflake_destination", "custom_destination", "athena_destination", "couchbase_columnar_destination"] | None: ... + def HasField(self, field_name: typing.Literal["athena_destination", b"athena_destination", "bigquery_destination", b"bigquery_destination", "couchbase_columnar_destination", b"couchbase_columnar_destination", "custom_destination", b"custom_destination", "destination", b"destination", "file_destination", b"file_destination", "redshift_destination", b"redshift_destination", "snowflake_destination", b"snowflake_destination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["athena_destination", b"athena_destination", "bigquery_destination", b"bigquery_destination", "couchbase_columnar_destination", b"couchbase_columnar_destination", "custom_destination", b"custom_destination", "destination", b"destination", "file_destination", b"file_destination", "redshift_destination", b"redshift_destination", "sample_rate", b"sample_rate", "snowflake_destination", b"snowflake_destination"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["destination", b"destination"]) -> typing.Literal["file_destination", "bigquery_destination", "redshift_destination", "snowflake_destination", "custom_destination", "athena_destination", "couchbase_columnar_destination"] | None: ... global___LoggingConfig = LoggingConfig +@typing.final class FeatureServiceList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -301,6 +319,6 @@ class FeatureServiceList(google.protobuf.message.Message): *, featureservices: collections.abc.Iterable[global___FeatureService] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["featureservices", b"featureservices"]) -> None: ... + def ClearField(self, field_name: typing.Literal["featureservices", b"featureservices"]) -> None: ... global___FeatureServiceList = FeatureServiceList diff --git a/sdk/python/feast/protos/feast/core/FeatureService_pb2_grpc.py b/sdk/python/feast/protos/feast/core/FeatureService_pb2_grpc.py index 2daafffebfc..b22c94d4c2d 100644 --- a/sdk/python/feast/protos/feast/core/FeatureService_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/FeatureService_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/FeatureService_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/FeatureTable_pb2.py b/sdk/python/feast/protos/feast/core/FeatureTable_pb2.py index 713e72b5d33..517eda50d92 100644 --- a/sdk/python/feast/protos/feast/core/FeatureTable_pb2.py +++ b/sdk/python/feast/protos/feast/core/FeatureTable_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/FeatureTable.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/FeatureTable.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -23,10 +33,10 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.FeatureTable_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\021FeatureTableProtoZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_FEATURETABLESPEC_LABELSENTRY']._options = None + _globals['_FEATURETABLESPEC_LABELSENTRY']._loaded_options = None _globals['_FEATURETABLESPEC_LABELSENTRY']._serialized_options = b'8\001' _globals['_FEATURETABLE']._serialized_start=165 _globals['_FEATURETABLE']._serialized_end=267 diff --git a/sdk/python/feast/protos/feast/core/FeatureTable_pb2.pyi b/sdk/python/feast/protos/feast/core/FeatureTable_pb2.pyi index dd41c2d214a..e8773f65be5 100644 --- a/sdk/python/feast/protos/feast/core/FeatureTable_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/FeatureTable_pb2.pyi @@ -16,6 +16,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import feast.core.DataSource_pb2 @@ -25,15 +26,11 @@ import google.protobuf.duration_pb2 import google.protobuf.internal.containers import google.protobuf.message import google.protobuf.timestamp_pb2 -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class FeatureTable(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -42,23 +39,27 @@ class FeatureTable(google.protobuf.message.Message): @property def spec(self) -> global___FeatureTableSpec: """User-specified specifications of this feature table.""" + @property def meta(self) -> global___FeatureTableMeta: """System-populated metadata for this feature table.""" + def __init__( self, *, spec: global___FeatureTableSpec | None = ..., meta: global___FeatureTableMeta | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... + def HasField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... global___FeatureTable = FeatureTable +@typing.final class FeatureTableSpec(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class LabelsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -72,7 +73,7 @@ class FeatureTableSpec(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int @@ -91,12 +92,15 @@ class FeatureTableSpec(google.protobuf.message.Message): """List names of entities to associate with the Features defined in this Feature Table. Not updatable. """ + @property def features(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Feature_pb2.FeatureSpecV2]: """List of features specifications for each feature defined with this feature table.""" + @property def labels(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """User defined metadata""" + @property def max_age(self) -> google.protobuf.duration_pb2.Duration: """Features in this feature table can only be retrieved from online serving @@ -104,18 +108,21 @@ class FeatureTableSpec(google.protobuf.message.Message): the feature's event timestamp and when the feature is retrieved Feature values outside max age will be returned as unset values and indicated to end user """ + @property def batch_source(self) -> feast.core.DataSource_pb2.DataSource: """Batch/Offline DataSource to source batch/offline feature data. Only batch DataSource can be specified (ie source type should start with 'BATCH_') """ + @property def stream_source(self) -> feast.core.DataSource_pb2.DataSource: """Stream/Online DataSource to source stream/online feature data. Only stream DataSource can be specified (ie source type should start with 'STREAM_') """ + def __init__( self, *, @@ -128,11 +135,12 @@ class FeatureTableSpec(google.protobuf.message.Message): batch_source: feast.core.DataSource_pb2.DataSource | None = ..., stream_source: feast.core.DataSource_pb2.DataSource | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["batch_source", b"batch_source", "max_age", b"max_age", "stream_source", b"stream_source"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["batch_source", b"batch_source", "entities", b"entities", "features", b"features", "labels", b"labels", "max_age", b"max_age", "name", b"name", "project", b"project", "stream_source", b"stream_source"]) -> None: ... + def HasField(self, field_name: typing.Literal["batch_source", b"batch_source", "max_age", b"max_age", "stream_source", b"stream_source"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["batch_source", b"batch_source", "entities", b"entities", "features", b"features", "labels", b"labels", "max_age", b"max_age", "name", b"name", "project", b"project", "stream_source", b"stream_source"]) -> None: ... global___FeatureTableSpec = FeatureTableSpec +@typing.final class FeatureTableMeta(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -140,18 +148,20 @@ class FeatureTableMeta(google.protobuf.message.Message): LAST_UPDATED_TIMESTAMP_FIELD_NUMBER: builtins.int REVISION_FIELD_NUMBER: builtins.int HASH_FIELD_NUMBER: builtins.int - @property - def created_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: - """Time where this Feature Table is created""" - @property - def last_updated_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: - """Time where this Feature Table is last updated""" revision: builtins.int """Auto incrementing revision no. of this Feature Table""" hash: builtins.str """Hash entities, features, batch_source and stream_source to inform JobService if jobs should be restarted should hash change """ + @property + def created_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: + """Time where this Feature Table is created""" + + @property + def last_updated_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: + """Time where this Feature Table is last updated""" + def __init__( self, *, @@ -160,7 +170,7 @@ class FeatureTableMeta(google.protobuf.message.Message): revision: builtins.int = ..., hash: builtins.str = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "hash", b"hash", "last_updated_timestamp", b"last_updated_timestamp", "revision", b"revision"]) -> None: ... + def HasField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "hash", b"hash", "last_updated_timestamp", b"last_updated_timestamp", "revision", b"revision"]) -> None: ... global___FeatureTableMeta = FeatureTableMeta diff --git a/sdk/python/feast/protos/feast/core/FeatureTable_pb2_grpc.py b/sdk/python/feast/protos/feast/core/FeatureTable_pb2_grpc.py index 2daafffebfc..06999da0c8a 100644 --- a/sdk/python/feast/protos/feast/core/FeatureTable_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/FeatureTable_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/FeatureTable_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2.py b/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2.py index b47d4fe392f..abd85309454 100644 --- a/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2.py +++ b/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/FeatureViewProjection.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/FeatureViewProjection.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -21,10 +31,10 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.FeatureViewProjection_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\025FeatureReferenceProtoZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_FEATUREVIEWPROJECTION_JOINKEYMAPENTRY']._options = None + _globals['_FEATUREVIEWPROJECTION_JOINKEYMAPENTRY']._loaded_options = None _globals['_FEATUREVIEWPROJECTION_JOINKEYMAPENTRY']._serialized_options = b'8\001' _globals['_FEATUREVIEWPROJECTION']._serialized_start=110 _globals['_FEATUREVIEWPROJECTION']._serialized_end=552 diff --git a/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2.pyi b/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2.pyi index 6b44ad4a931..fa374ede5f7 100644 --- a/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2.pyi @@ -2,6 +2,7 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ + import builtins import collections.abc import feast.core.DataSource_pb2 @@ -9,15 +10,11 @@ import feast.core.Feature_pb2 import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class FeatureViewProjection(google.protobuf.message.Message): """A projection to be applied on top of a FeatureView. Contains the modifications to a FeatureView such as the features subset to use. @@ -25,6 +22,7 @@ class FeatureViewProjection(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class JoinKeyMapEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -38,7 +36,7 @@ class FeatureViewProjection(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... FEATURE_VIEW_NAME_FIELD_NUMBER: builtins.int FEATURE_VIEW_NAME_ALIAS_FIELD_NUMBER: builtins.int @@ -53,21 +51,25 @@ class FeatureViewProjection(google.protobuf.message.Message): """The feature view name""" feature_view_name_alias: builtins.str """Alias for feature view name""" + timestamp_field: builtins.str + date_partition_column: builtins.str + created_timestamp_column: builtins.str @property def feature_columns(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Feature_pb2.FeatureSpecV2]: """The features of the feature view that are a part of the feature reference.""" + @property def join_key_map(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """Map for entity join_key overrides of feature data entity join_key to entity data join_key""" - timestamp_field: builtins.str - date_partition_column: builtins.str - created_timestamp_column: builtins.str + @property def batch_source(self) -> feast.core.DataSource_pb2.DataSource: """Batch/Offline DataSource where this view can retrieve offline feature data.""" + @property def stream_source(self) -> feast.core.DataSource_pb2.DataSource: """Streaming DataSource from where this view can consume "online" feature data.""" + def __init__( self, *, @@ -81,7 +83,7 @@ class FeatureViewProjection(google.protobuf.message.Message): batch_source: feast.core.DataSource_pb2.DataSource | None = ..., stream_source: feast.core.DataSource_pb2.DataSource | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["batch_source", b"batch_source", "stream_source", b"stream_source"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["batch_source", b"batch_source", "created_timestamp_column", b"created_timestamp_column", "date_partition_column", b"date_partition_column", "feature_columns", b"feature_columns", "feature_view_name", b"feature_view_name", "feature_view_name_alias", b"feature_view_name_alias", "join_key_map", b"join_key_map", "stream_source", b"stream_source", "timestamp_field", b"timestamp_field"]) -> None: ... + def HasField(self, field_name: typing.Literal["batch_source", b"batch_source", "stream_source", b"stream_source"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["batch_source", b"batch_source", "created_timestamp_column", b"created_timestamp_column", "date_partition_column", b"date_partition_column", "feature_columns", b"feature_columns", "feature_view_name", b"feature_view_name", "feature_view_name_alias", b"feature_view_name_alias", "join_key_map", b"join_key_map", "stream_source", b"stream_source", "timestamp_field", b"timestamp_field"]) -> None: ... global___FeatureViewProjection = FeatureViewProjection diff --git a/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2_grpc.py b/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2_grpc.py index 2daafffebfc..c39ae83a303 100644 --- a/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/FeatureViewProjection_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/FeatureView_pb2.py b/sdk/python/feast/protos/feast/core/FeatureView_pb2.py index 9a59255375f..81efbd31aff 100644 --- a/sdk/python/feast/protos/feast/core/FeatureView_pb2.py +++ b/sdk/python/feast/protos/feast/core/FeatureView_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/FeatureView.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/FeatureView.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -24,10 +34,10 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.FeatureView_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\020FeatureViewProtoZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_FEATUREVIEWSPEC_TAGSENTRY']._options = None + _globals['_FEATUREVIEWSPEC_TAGSENTRY']._loaded_options = None _globals['_FEATUREVIEWSPEC_TAGSENTRY']._serialized_options = b'8\001' _globals['_FEATUREVIEW']._serialized_start=197 _globals['_FEATUREVIEW']._serialized_end=296 diff --git a/sdk/python/feast/protos/feast/core/FeatureView_pb2.pyi b/sdk/python/feast/protos/feast/core/FeatureView_pb2.pyi index a7115be8459..c8265b543d8 100644 --- a/sdk/python/feast/protos/feast/core/FeatureView_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/FeatureView_pb2.pyi @@ -16,6 +16,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import feast.core.DataSource_pb2 @@ -26,15 +27,11 @@ import google.protobuf.duration_pb2 import google.protobuf.internal.containers import google.protobuf.message import google.protobuf.timestamp_pb2 -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class FeatureView(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -43,20 +40,23 @@ class FeatureView(google.protobuf.message.Message): @property def spec(self) -> global___FeatureViewSpec: """User-specified specifications of this feature view.""" + @property def meta(self) -> global___FeatureViewMeta: """System-populated metadata for this feature view.""" + def __init__( self, *, spec: global___FeatureViewSpec | None = ..., meta: global___FeatureViewMeta | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... + def HasField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... global___FeatureView = FeatureView +@typing.final class FeatureViewSpec(google.protobuf.message.Message): """Next available id: 17 TODO(adchia): refactor common fields from this and ODFV into separate metadata proto @@ -64,6 +64,7 @@ class FeatureViewSpec(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -77,7 +78,7 @@ class FeatureViewSpec(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int @@ -99,15 +100,30 @@ class FeatureViewSpec(google.protobuf.message.Message): """Name of the feature view. Must be unique. Not updated.""" project: builtins.str """Name of Feast project that this feature view belongs to.""" + online: builtins.bool + """Whether these features should be served online or not + This is also used to determine whether the features should be written to the online store + """ + description: builtins.str + """Description of the feature view.""" + owner: builtins.str + """Owner of the feature view.""" + offline: builtins.bool + """Whether these features should be written to the offline store""" + mode: builtins.str + """The transformation mode (e.g., "python", "pandas", "spark", "sql", "ray")""" @property def entities(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """List of names of entities associated with this feature view.""" + @property def features(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Feature_pb2.FeatureSpecV2]: """List of specifications for each feature defined as part of this feature view.""" + @property def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """User defined metadata""" + @property def ttl(self) -> google.protobuf.duration_pb2.Duration: """Features in this feature view can only be retrieved from online serving @@ -115,32 +131,25 @@ class FeatureViewSpec(google.protobuf.message.Message): the feature's event timestamp and when the feature is retrieved Feature values outside ttl will be returned as unset values and indicated to end user """ + @property def batch_source(self) -> feast.core.DataSource_pb2.DataSource: """Batch/Offline DataSource where this view can retrieve offline feature data.""" - online: builtins.bool - """Whether these features should be served online or not - This is also used to determine whether the features should be written to the online store - """ + @property def stream_source(self) -> feast.core.DataSource_pb2.DataSource: """Streaming DataSource from where this view can consume "online" feature data.""" - description: builtins.str - """Description of the feature view.""" - owner: builtins.str - """Owner of the feature view.""" + @property def entity_columns(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Feature_pb2.FeatureSpecV2]: """List of specifications for each entity defined as part of this feature view.""" - offline: builtins.bool - """Whether these features should be written to the offline store""" + @property def source_views(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FeatureViewSpec]: ... @property def feature_transformation(self) -> feast.core.Transformation_pb2.FeatureTransformationV2: """Feature transformation for batch feature views""" - mode: builtins.str - """The transformation mode (e.g., "python", "pandas", "spark", "sql", "ray")""" + def __init__( self, *, @@ -161,11 +170,12 @@ class FeatureViewSpec(google.protobuf.message.Message): feature_transformation: feast.core.Transformation_pb2.FeatureTransformationV2 | None = ..., mode: builtins.str = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["batch_source", b"batch_source", "feature_transformation", b"feature_transformation", "stream_source", b"stream_source", "ttl", b"ttl"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["batch_source", b"batch_source", "description", b"description", "entities", b"entities", "entity_columns", b"entity_columns", "feature_transformation", b"feature_transformation", "features", b"features", "mode", b"mode", "name", b"name", "offline", b"offline", "online", b"online", "owner", b"owner", "project", b"project", "source_views", b"source_views", "stream_source", b"stream_source", "tags", b"tags", "ttl", b"ttl"]) -> None: ... + def HasField(self, field_name: typing.Literal["batch_source", b"batch_source", "feature_transformation", b"feature_transformation", "stream_source", b"stream_source", "ttl", b"ttl"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["batch_source", b"batch_source", "description", b"description", "entities", b"entities", "entity_columns", b"entity_columns", "feature_transformation", b"feature_transformation", "features", b"features", "mode", b"mode", "name", b"name", "offline", b"offline", "online", b"online", "owner", b"owner", "project", b"project", "source_views", b"source_views", "stream_source", b"stream_source", "tags", b"tags", "ttl", b"ttl"]) -> None: ... global___FeatureViewSpec = FeatureViewSpec +@typing.final class FeatureViewMeta(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -175,12 +185,15 @@ class FeatureViewMeta(google.protobuf.message.Message): @property def created_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: """Time where this Feature View is created""" + @property def last_updated_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: """Time where this Feature View is last updated""" + @property def materialization_intervals(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MaterializationInterval]: """List of pairs (start_time, end_time) for which this feature view has been materialized.""" + def __init__( self, *, @@ -188,11 +201,12 @@ class FeatureViewMeta(google.protobuf.message.Message): last_updated_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., materialization_intervals: collections.abc.Iterable[global___MaterializationInterval] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp", "materialization_intervals", b"materialization_intervals"]) -> None: ... + def HasField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp", "materialization_intervals", b"materialization_intervals"]) -> None: ... global___FeatureViewMeta = FeatureViewMeta +@typing.final class MaterializationInterval(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -208,11 +222,12 @@ class MaterializationInterval(google.protobuf.message.Message): start_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., end_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["end_time", b"end_time", "start_time", b"start_time"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["end_time", b"end_time", "start_time", b"start_time"]) -> None: ... + def HasField(self, field_name: typing.Literal["end_time", b"end_time", "start_time", b"start_time"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["end_time", b"end_time", "start_time", b"start_time"]) -> None: ... global___MaterializationInterval = MaterializationInterval +@typing.final class FeatureViewList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -224,6 +239,6 @@ class FeatureViewList(google.protobuf.message.Message): *, featureviews: collections.abc.Iterable[global___FeatureView] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["featureviews", b"featureviews"]) -> None: ... + def ClearField(self, field_name: typing.Literal["featureviews", b"featureviews"]) -> None: ... global___FeatureViewList = FeatureViewList diff --git a/sdk/python/feast/protos/feast/core/FeatureView_pb2_grpc.py b/sdk/python/feast/protos/feast/core/FeatureView_pb2_grpc.py index 2daafffebfc..9cf46a957f8 100644 --- a/sdk/python/feast/protos/feast/core/FeatureView_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/FeatureView_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/FeatureView_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/Feature_pb2.py b/sdk/python/feast/protos/feast/core/Feature_pb2.py index a02bb7ff403..deccf07c5da 100644 --- a/sdk/python/feast/protos/feast/core/Feature_pb2.py +++ b/sdk/python/feast/protos/feast/core/Feature_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/Feature.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/Feature.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -20,10 +30,10 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Feature_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\014FeatureProtoZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_FEATURESPECV2_TAGSENTRY']._options = None + _globals['_FEATURESPECV2_TAGSENTRY']._loaded_options = None _globals['_FEATURESPECV2_TAGSENTRY']._serialized_options = b'8\001' _globals['_FEATURESPECV2']._serialized_start=66 _globals['_FEATURESPECV2']._serialized_end=336 diff --git a/sdk/python/feast/protos/feast/core/Feature_pb2.pyi b/sdk/python/feast/protos/feast/core/Feature_pb2.pyi index aa56630424f..ff067ef5cc4 100644 --- a/sdk/python/feast/protos/feast/core/Feature_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/Feature_pb2.pyi @@ -16,24 +16,22 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import feast.types.Value_pb2 import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class FeatureSpecV2(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -47,7 +45,7 @@ class FeatureSpecV2(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int VALUE_TYPE_FIELD_NUMBER: builtins.int @@ -60,9 +58,6 @@ class FeatureSpecV2(google.protobuf.message.Message): """Name of the feature. Not updatable.""" value_type: feast.types.Value_pb2.ValueType.Enum.ValueType """Value type of the feature. Not updatable.""" - @property - def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: - """Tags for user defined metadata on a feature""" description: builtins.str """Description of the feature.""" vector_index: builtins.bool @@ -71,6 +66,10 @@ class FeatureSpecV2(google.protobuf.message.Message): """Metric used for vector similarity search.""" vector_length: builtins.int """Field indicating the vector length""" + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + """Tags for user defined metadata on a feature""" + def __init__( self, *, @@ -82,6 +81,6 @@ class FeatureSpecV2(google.protobuf.message.Message): vector_search_metric: builtins.str = ..., vector_length: builtins.int = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["description", b"description", "name", b"name", "tags", b"tags", "value_type", b"value_type", "vector_index", b"vector_index", "vector_length", b"vector_length", "vector_search_metric", b"vector_search_metric"]) -> None: ... + def ClearField(self, field_name: typing.Literal["description", b"description", "name", b"name", "tags", b"tags", "value_type", b"value_type", "vector_index", b"vector_index", "vector_length", b"vector_length", "vector_search_metric", b"vector_search_metric"]) -> None: ... global___FeatureSpecV2 = FeatureSpecV2 diff --git a/sdk/python/feast/protos/feast/core/Feature_pb2_grpc.py b/sdk/python/feast/protos/feast/core/Feature_pb2_grpc.py index 2daafffebfc..72cd8b001e2 100644 --- a/sdk/python/feast/protos/feast/core/Feature_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/Feature_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/Feature_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/InfraObject_pb2.py b/sdk/python/feast/protos/feast/core/InfraObject_pb2.py index aeea27f2e00..0fd87d4b3c2 100644 --- a/sdk/python/feast/protos/feast/core/InfraObject_pb2.py +++ b/sdk/python/feast/protos/feast/core/InfraObject_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/InfraObject.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/InfraObject.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -21,8 +31,8 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.InfraObject_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\020InfraObjectProtoZ/github.com/feast-dev/feast/go/protos/feast/core' _globals['_INFRA']._serialized_start=107 _globals['_INFRA']._serialized_end=162 diff --git a/sdk/python/feast/protos/feast/core/InfraObject_pb2.pyi b/sdk/python/feast/protos/feast/core/InfraObject_pb2.pyi index f0a704c604a..86761659636 100644 --- a/sdk/python/feast/protos/feast/core/InfraObject_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/InfraObject_pb2.pyi @@ -16,6 +16,7 @@ isort:skip_file * See the License for the specific language governing permissions and * limitations under the License. """ + import builtins import collections.abc import feast.core.DatastoreTable_pb2 @@ -23,15 +24,11 @@ import feast.core.SqliteTable_pb2 import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Infra(google.protobuf.message.Message): """Represents a set of infrastructure objects managed by Feast""" @@ -41,20 +38,23 @@ class Infra(google.protobuf.message.Message): @property def infra_objects(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___InfraObject]: """List of infrastructure objects managed by Feast""" + def __init__( self, *, infra_objects: collections.abc.Iterable[global___InfraObject] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["infra_objects", b"infra_objects"]) -> None: ... + def ClearField(self, field_name: typing.Literal["infra_objects", b"infra_objects"]) -> None: ... global___Infra = Infra +@typing.final class InfraObject(google.protobuf.message.Message): """Represents a single infrastructure object managed by Feast""" DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class CustomInfra(google.protobuf.message.Message): """Allows for custom infra objects to be added""" @@ -67,7 +67,7 @@ class InfraObject(google.protobuf.message.Message): *, field: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["field", b"field"]) -> None: ... + def ClearField(self, field_name: typing.Literal["field", b"field"]) -> None: ... INFRA_OBJECT_CLASS_TYPE_FIELD_NUMBER: builtins.int DATASTORE_TABLE_FIELD_NUMBER: builtins.int @@ -89,8 +89,8 @@ class InfraObject(google.protobuf.message.Message): sqlite_table: feast.core.SqliteTable_pb2.SqliteTable | None = ..., custom_infra: global___InfraObject.CustomInfra | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["custom_infra", b"custom_infra", "datastore_table", b"datastore_table", "infra_object", b"infra_object", "sqlite_table", b"sqlite_table"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["custom_infra", b"custom_infra", "datastore_table", b"datastore_table", "infra_object", b"infra_object", "infra_object_class_type", b"infra_object_class_type", "sqlite_table", b"sqlite_table"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["infra_object", b"infra_object"]) -> typing_extensions.Literal["datastore_table", "sqlite_table", "custom_infra"] | None: ... + def HasField(self, field_name: typing.Literal["custom_infra", b"custom_infra", "datastore_table", b"datastore_table", "infra_object", b"infra_object", "sqlite_table", b"sqlite_table"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["custom_infra", b"custom_infra", "datastore_table", b"datastore_table", "infra_object", b"infra_object", "infra_object_class_type", b"infra_object_class_type", "sqlite_table", b"sqlite_table"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["infra_object", b"infra_object"]) -> typing.Literal["datastore_table", "sqlite_table", "custom_infra"] | None: ... global___InfraObject = InfraObject diff --git a/sdk/python/feast/protos/feast/core/InfraObject_pb2_grpc.py b/sdk/python/feast/protos/feast/core/InfraObject_pb2_grpc.py index 2daafffebfc..65289f07f28 100644 --- a/sdk/python/feast/protos/feast/core/InfraObject_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/InfraObject_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/InfraObject_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2.py b/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2.py index 5b8ec9b11f6..cfe0d85717c 100644 --- a/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2.py +++ b/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/OnDemandFeatureView.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/OnDemandFeatureView.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -26,16 +36,16 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.OnDemandFeatureView_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\030OnDemandFeatureViewProtoZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_ONDEMANDFEATUREVIEWSPEC_SOURCESENTRY']._options = None + _globals['_ONDEMANDFEATUREVIEWSPEC_SOURCESENTRY']._loaded_options = None _globals['_ONDEMANDFEATUREVIEWSPEC_SOURCESENTRY']._serialized_options = b'8\001' - _globals['_ONDEMANDFEATUREVIEWSPEC_TAGSENTRY']._options = None + _globals['_ONDEMANDFEATUREVIEWSPEC_TAGSENTRY']._loaded_options = None _globals['_ONDEMANDFEATUREVIEWSPEC_TAGSENTRY']._serialized_options = b'8\001' - _globals['_ONDEMANDFEATUREVIEWSPEC'].fields_by_name['user_defined_function']._options = None + _globals['_ONDEMANDFEATUREVIEWSPEC'].fields_by_name['user_defined_function']._loaded_options = None _globals['_ONDEMANDFEATUREVIEWSPEC'].fields_by_name['user_defined_function']._serialized_options = b'\030\001' - _globals['_USERDEFINEDFUNCTION']._options = None + _globals['_USERDEFINEDFUNCTION']._loaded_options = None _globals['_USERDEFINEDFUNCTION']._serialized_options = b'\030\001' _globals['_ONDEMANDFEATUREVIEW']._serialized_start=273 _globals['_ONDEMANDFEATUREVIEW']._serialized_end=396 diff --git a/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2.pyi b/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2.pyi index c424c442ee7..11257d4d3fb 100644 --- a/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2.pyi @@ -16,6 +16,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import feast.core.Aggregation_pb2 @@ -28,15 +29,11 @@ import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import google.protobuf.timestamp_pb2 -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class OnDemandFeatureView(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -45,6 +42,7 @@ class OnDemandFeatureView(google.protobuf.message.Message): @property def spec(self) -> global___OnDemandFeatureViewSpec: """User-specified specifications of this feature view.""" + @property def meta(self) -> global___OnDemandFeatureViewMeta: ... def __init__( @@ -53,16 +51,18 @@ class OnDemandFeatureView(google.protobuf.message.Message): spec: global___OnDemandFeatureViewSpec | None = ..., meta: global___OnDemandFeatureViewMeta | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... + def HasField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... global___OnDemandFeatureView = OnDemandFeatureView +@typing.final class OnDemandFeatureViewSpec(google.protobuf.message.Message): """Next available id: 9""" DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class SourcesEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -77,9 +77,10 @@ class OnDemandFeatureViewSpec(google.protobuf.message.Message): key: builtins.str = ..., value: global___OnDemandSource | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -93,7 +94,7 @@ class OnDemandFeatureViewSpec(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int @@ -114,36 +115,43 @@ class OnDemandFeatureViewSpec(google.protobuf.message.Message): """Name of the feature view. Must be unique. Not updated.""" project: builtins.str """Name of Feast project that this feature view belongs to.""" + description: builtins.str + """Description of the on demand feature view.""" + owner: builtins.str + """Owner of the on demand feature view.""" + mode: builtins.str + write_to_online_store: builtins.bool + singleton: builtins.bool @property def features(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Feature_pb2.FeatureSpecV2]: """List of features specifications for each feature defined with this feature view.""" + @property def sources(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___OnDemandSource]: """Map of sources for this feature view.""" + @property def user_defined_function(self) -> global___UserDefinedFunction: ... @property def feature_transformation(self) -> feast.core.Transformation_pb2.FeatureTransformationV2: """Oneof with {user_defined_function, on_demand_substrait_transformation}""" - description: builtins.str - """Description of the on demand feature view.""" + @property def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """User defined metadata.""" - owner: builtins.str - """Owner of the on demand feature view.""" - mode: builtins.str - write_to_online_store: builtins.bool + @property def entities(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """List of names of entities associated with this feature view.""" + @property def entity_columns(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Feature_pb2.FeatureSpecV2]: """List of specifications for each entity defined as part of this feature view.""" - singleton: builtins.bool + @property def aggregations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Aggregation_pb2.Aggregation]: """Aggregation definitions""" + def __init__( self, *, @@ -163,11 +171,12 @@ class OnDemandFeatureViewSpec(google.protobuf.message.Message): singleton: builtins.bool = ..., aggregations: collections.abc.Iterable[feast.core.Aggregation_pb2.Aggregation] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["feature_transformation", b"feature_transformation", "user_defined_function", b"user_defined_function"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["aggregations", b"aggregations", "description", b"description", "entities", b"entities", "entity_columns", b"entity_columns", "feature_transformation", b"feature_transformation", "features", b"features", "mode", b"mode", "name", b"name", "owner", b"owner", "project", b"project", "singleton", b"singleton", "sources", b"sources", "tags", b"tags", "user_defined_function", b"user_defined_function", "write_to_online_store", b"write_to_online_store"]) -> None: ... + def HasField(self, field_name: typing.Literal["feature_transformation", b"feature_transformation", "user_defined_function", b"user_defined_function"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["aggregations", b"aggregations", "description", b"description", "entities", b"entities", "entity_columns", b"entity_columns", "feature_transformation", b"feature_transformation", "features", b"features", "mode", b"mode", "name", b"name", "owner", b"owner", "project", b"project", "singleton", b"singleton", "sources", b"sources", "tags", b"tags", "user_defined_function", b"user_defined_function", "write_to_online_store", b"write_to_online_store"]) -> None: ... global___OnDemandFeatureViewSpec = OnDemandFeatureViewSpec +@typing.final class OnDemandFeatureViewMeta(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -176,20 +185,23 @@ class OnDemandFeatureViewMeta(google.protobuf.message.Message): @property def created_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: """Time where this Feature View is created""" + @property def last_updated_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: """Time where this Feature View is last updated""" + def __init__( self, *, created_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., last_updated_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> None: ... + def HasField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> None: ... global___OnDemandFeatureViewMeta = OnDemandFeatureViewMeta +@typing.final class OnDemandSource(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -209,12 +221,13 @@ class OnDemandSource(google.protobuf.message.Message): feature_view_projection: feast.core.FeatureViewProjection_pb2.FeatureViewProjection | None = ..., request_data_source: feast.core.DataSource_pb2.DataSource | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["feature_view", b"feature_view", "feature_view_projection", b"feature_view_projection", "request_data_source", b"request_data_source", "source", b"source"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["feature_view", b"feature_view", "feature_view_projection", b"feature_view_projection", "request_data_source", b"request_data_source", "source", b"source"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["source", b"source"]) -> typing_extensions.Literal["feature_view", "feature_view_projection", "request_data_source"] | None: ... + def HasField(self, field_name: typing.Literal["feature_view", b"feature_view", "feature_view_projection", b"feature_view_projection", "request_data_source", b"request_data_source", "source", b"source"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["feature_view", b"feature_view", "feature_view_projection", b"feature_view_projection", "request_data_source", b"request_data_source", "source", b"source"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["source", b"source"]) -> typing.Literal["feature_view", "feature_view_projection", "request_data_source"] | None: ... global___OnDemandSource = OnDemandSource +@typing.final class UserDefinedFunction(google.protobuf.message.Message): """Serialized representation of python function.""" @@ -236,10 +249,11 @@ class UserDefinedFunction(google.protobuf.message.Message): body: builtins.bytes = ..., body_text: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["body", b"body", "body_text", b"body_text", "name", b"name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["body", b"body", "body_text", b"body_text", "name", b"name"]) -> None: ... global___UserDefinedFunction = UserDefinedFunction +@typing.final class OnDemandFeatureViewList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -251,6 +265,6 @@ class OnDemandFeatureViewList(google.protobuf.message.Message): *, ondemandfeatureviews: collections.abc.Iterable[global___OnDemandFeatureView] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["ondemandfeatureviews", b"ondemandfeatureviews"]) -> None: ... + def ClearField(self, field_name: typing.Literal["ondemandfeatureviews", b"ondemandfeatureviews"]) -> None: ... global___OnDemandFeatureViewList = OnDemandFeatureViewList diff --git a/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2_grpc.py b/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2_grpc.py index 2daafffebfc..ed0aa3fc67c 100644 --- a/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/OnDemandFeatureView_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/Permission_pb2.py b/sdk/python/feast/protos/feast/core/Permission_pb2.py index 706fd2eec47..e0e05f7c14b 100644 --- a/sdk/python/feast/protos/feast/core/Permission_pb2.py +++ b/sdk/python/feast/protos/feast/core/Permission_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/Permission.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/Permission.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -21,12 +31,12 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Permission_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\017PermissionProtoZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_PERMISSIONSPEC_REQUIREDTAGSENTRY']._options = None + _globals['_PERMISSIONSPEC_REQUIREDTAGSENTRY']._loaded_options = None _globals['_PERMISSIONSPEC_REQUIREDTAGSENTRY']._serialized_options = b'8\001' - _globals['_PERMISSIONSPEC_TAGSENTRY']._options = None + _globals['_PERMISSIONSPEC_TAGSENTRY']._loaded_options = None _globals['_PERMISSIONSPEC_TAGSENTRY']._serialized_options = b'8\001' _globals['_PERMISSION']._serialized_start=101 _globals['_PERMISSION']._serialized_end=197 diff --git a/sdk/python/feast/protos/feast/core/Permission_pb2.pyi b/sdk/python/feast/protos/feast/core/Permission_pb2.pyi index b2387d29465..5a0d6d64889 100644 --- a/sdk/python/feast/protos/feast/core/Permission_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/Permission_pb2.pyi @@ -2,6 +2,7 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ + import builtins import collections.abc import feast.core.Policy_pb2 @@ -20,6 +21,7 @@ else: DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Permission(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -28,20 +30,23 @@ class Permission(google.protobuf.message.Message): @property def spec(self) -> global___PermissionSpec: """User-specified specifications of this permission.""" + @property def meta(self) -> global___PermissionMeta: """System-populated metadata for this permission.""" + def __init__( self, *, spec: global___PermissionSpec | None = ..., meta: global___PermissionMeta | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... + def HasField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... global___Permission = Permission +@typing.final class PermissionSpec(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -49,7 +54,7 @@ class PermissionSpec(google.protobuf.message.Message): ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType - class _AuthzedActionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PermissionSpec._AuthzedAction.ValueType], builtins.type): # noqa: F821 + class _AuthzedActionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PermissionSpec._AuthzedAction.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor CREATE: PermissionSpec._AuthzedAction.ValueType # 0 DESCRIBE: PermissionSpec._AuthzedAction.ValueType # 1 @@ -74,7 +79,7 @@ class PermissionSpec(google.protobuf.message.Message): ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType - class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PermissionSpec._Type.ValueType], builtins.type): # noqa: F821 + class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PermissionSpec._Type.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor FEATURE_VIEW: PermissionSpec._Type.ValueType # 0 ON_DEMAND_FEATURE_VIEW: PermissionSpec._Type.ValueType # 1 @@ -101,6 +106,7 @@ class PermissionSpec(google.protobuf.message.Message): PERMISSION: PermissionSpec.Type.ValueType # 9 PROJECT: PermissionSpec.Type.ValueType # 10 + @typing.final class RequiredTagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -114,8 +120,9 @@ class PermissionSpec(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -129,7 +136,7 @@ class PermissionSpec(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int @@ -152,12 +159,15 @@ class PermissionSpec(google.protobuf.message.Message): @property def actions(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___PermissionSpec.AuthzedAction.ValueType]: """List of actions.""" + @property def policy(self) -> feast.core.Policy_pb2.Policy: """the policy.""" + @property def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """User defined metadata""" + def __init__( self, *, @@ -170,11 +180,12 @@ class PermissionSpec(google.protobuf.message.Message): policy: feast.core.Policy_pb2.Policy | None = ..., tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["policy", b"policy"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["actions", b"actions", "name", b"name", "name_patterns", b"name_patterns", "policy", b"policy", "project", b"project", "required_tags", b"required_tags", "tags", b"tags", "types", b"types"]) -> None: ... + def HasField(self, field_name: typing.Literal["policy", b"policy"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["actions", b"actions", "name", b"name", "name_patterns", b"name_patterns", "policy", b"policy", "project", b"project", "required_tags", b"required_tags", "tags", b"tags", "types", b"types"]) -> None: ... global___PermissionSpec = PermissionSpec +@typing.final class PermissionMeta(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -190,7 +201,7 @@ class PermissionMeta(google.protobuf.message.Message): created_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., last_updated_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> None: ... + def HasField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> None: ... global___PermissionMeta = PermissionMeta diff --git a/sdk/python/feast/protos/feast/core/Permission_pb2_grpc.py b/sdk/python/feast/protos/feast/core/Permission_pb2_grpc.py index 2daafffebfc..baaf09c4db1 100644 --- a/sdk/python/feast/protos/feast/core/Permission_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/Permission_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/Permission_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/Policy_pb2.py b/sdk/python/feast/protos/feast/core/Policy_pb2.py index e40eaccc12a..c99da852bca 100644 --- a/sdk/python/feast/protos/feast/core/Policy_pb2.py +++ b/sdk/python/feast/protos/feast/core/Policy_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/Policy.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/Policy.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,8 +29,8 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Policy_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\013PolicyProtoZ/github.com/feast-dev/feast/go/protos/feast/core' _globals['_POLICY']._serialized_start=40 _globals['_POLICY']._serialized_end=365 diff --git a/sdk/python/feast/protos/feast/core/Policy_pb2.pyi b/sdk/python/feast/protos/feast/core/Policy_pb2.pyi index 8410e396586..67caf1892ea 100644 --- a/sdk/python/feast/protos/feast/core/Policy_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/Policy_pb2.pyi @@ -2,20 +2,17 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ + import builtins import collections.abc import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Policy(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -47,12 +44,13 @@ class Policy(google.protobuf.message.Message): namespace_based_policy: global___NamespaceBasedPolicy | None = ..., combined_group_namespace_policy: global___CombinedGroupNamespacePolicy | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["combined_group_namespace_policy", b"combined_group_namespace_policy", "group_based_policy", b"group_based_policy", "namespace_based_policy", b"namespace_based_policy", "policy_type", b"policy_type", "role_based_policy", b"role_based_policy"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["combined_group_namespace_policy", b"combined_group_namespace_policy", "group_based_policy", b"group_based_policy", "name", b"name", "namespace_based_policy", b"namespace_based_policy", "policy_type", b"policy_type", "project", b"project", "role_based_policy", b"role_based_policy"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["policy_type", b"policy_type"]) -> typing_extensions.Literal["role_based_policy", "group_based_policy", "namespace_based_policy", "combined_group_namespace_policy"] | None: ... + def HasField(self, field_name: typing.Literal["combined_group_namespace_policy", b"combined_group_namespace_policy", "group_based_policy", b"group_based_policy", "namespace_based_policy", b"namespace_based_policy", "policy_type", b"policy_type", "role_based_policy", b"role_based_policy"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["combined_group_namespace_policy", b"combined_group_namespace_policy", "group_based_policy", b"group_based_policy", "name", b"name", "namespace_based_policy", b"namespace_based_policy", "policy_type", b"policy_type", "project", b"project", "role_based_policy", b"role_based_policy"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["policy_type", b"policy_type"]) -> typing.Literal["role_based_policy", "group_based_policy", "namespace_based_policy", "combined_group_namespace_policy"] | None: ... global___Policy = Policy +@typing.final class RoleBasedPolicy(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -60,15 +58,17 @@ class RoleBasedPolicy(google.protobuf.message.Message): @property def roles(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """List of roles in this policy.""" + def __init__( self, *, roles: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["roles", b"roles"]) -> None: ... + def ClearField(self, field_name: typing.Literal["roles", b"roles"]) -> None: ... global___RoleBasedPolicy = RoleBasedPolicy +@typing.final class GroupBasedPolicy(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -76,15 +76,17 @@ class GroupBasedPolicy(google.protobuf.message.Message): @property def groups(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """List of groups in this policy.""" + def __init__( self, *, groups: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["groups", b"groups"]) -> None: ... + def ClearField(self, field_name: typing.Literal["groups", b"groups"]) -> None: ... global___GroupBasedPolicy = GroupBasedPolicy +@typing.final class NamespaceBasedPolicy(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -92,15 +94,17 @@ class NamespaceBasedPolicy(google.protobuf.message.Message): @property def namespaces(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """List of namespaces in this policy.""" + def __init__( self, *, namespaces: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["namespaces", b"namespaces"]) -> None: ... + def ClearField(self, field_name: typing.Literal["namespaces", b"namespaces"]) -> None: ... global___NamespaceBasedPolicy = NamespaceBasedPolicy +@typing.final class CombinedGroupNamespacePolicy(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -109,15 +113,17 @@ class CombinedGroupNamespacePolicy(google.protobuf.message.Message): @property def groups(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """List of groups in this policy.""" + @property def namespaces(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """List of namespaces in this policy.""" + def __init__( self, *, groups: collections.abc.Iterable[builtins.str] | None = ..., namespaces: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["groups", b"groups", "namespaces", b"namespaces"]) -> None: ... + def ClearField(self, field_name: typing.Literal["groups", b"groups", "namespaces", b"namespaces"]) -> None: ... global___CombinedGroupNamespacePolicy = CombinedGroupNamespacePolicy diff --git a/sdk/python/feast/protos/feast/core/Policy_pb2_grpc.py b/sdk/python/feast/protos/feast/core/Policy_pb2_grpc.py index 2daafffebfc..0b1100b361e 100644 --- a/sdk/python/feast/protos/feast/core/Policy_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/Policy_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/Policy_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/Project_pb2.py b/sdk/python/feast/protos/feast/core/Project_pb2.py index cfbf1220143..5c71d2feaf3 100644 --- a/sdk/python/feast/protos/feast/core/Project_pb2.py +++ b/sdk/python/feast/protos/feast/core/Project_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/Project.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/Project.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -20,10 +30,10 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Project_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\014ProjectProtoZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_PROJECTSPEC_TAGSENTRY']._options = None + _globals['_PROJECTSPEC_TAGSENTRY']._loaded_options = None _globals['_PROJECTSPEC_TAGSENTRY']._serialized_options = b'8\001' _globals['_PROJECT']._serialized_start=73 _globals['_PROJECT']._serialized_end=160 diff --git a/sdk/python/feast/protos/feast/core/Project_pb2.pyi b/sdk/python/feast/protos/feast/core/Project_pb2.pyi index e3cce2ec425..560dcf8aa5c 100644 --- a/sdk/python/feast/protos/feast/core/Project_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/Project_pb2.pyi @@ -16,21 +16,18 @@ isort:skip_file * See the License for the specific language governing permissions and * limitations under the License. """ + import builtins import collections.abc import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import google.protobuf.timestamp_pb2 -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Project(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -39,23 +36,27 @@ class Project(google.protobuf.message.Message): @property def spec(self) -> global___ProjectSpec: """User-specified specifications of this entity.""" + @property def meta(self) -> global___ProjectMeta: """System-populated metadata for this entity.""" + def __init__( self, *, spec: global___ProjectSpec | None = ..., meta: global___ProjectMeta | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... + def HasField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... global___Project = Project +@typing.final class ProjectSpec(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -69,7 +70,7 @@ class ProjectSpec(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int DESCRIPTION_FIELD_NUMBER: builtins.int @@ -79,11 +80,12 @@ class ProjectSpec(google.protobuf.message.Message): """Name of the Project""" description: builtins.str """Description of the Project""" + owner: builtins.str + """Owner of the Project""" @property def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """User defined metadata""" - owner: builtins.str - """Owner of the Project""" + def __init__( self, *, @@ -92,10 +94,11 @@ class ProjectSpec(google.protobuf.message.Message): tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., owner: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["description", b"description", "name", b"name", "owner", b"owner", "tags", b"tags"]) -> None: ... + def ClearField(self, field_name: typing.Literal["description", b"description", "name", b"name", "owner", b"owner", "tags", b"tags"]) -> None: ... global___ProjectSpec = ProjectSpec +@typing.final class ProjectMeta(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -104,16 +107,18 @@ class ProjectMeta(google.protobuf.message.Message): @property def created_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: """Time when the Project is created""" + @property def last_updated_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: """Time when the Project is last updated with registry changes (Apply stage)""" + def __init__( self, *, created_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., last_updated_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> None: ... + def HasField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> None: ... global___ProjectMeta = ProjectMeta diff --git a/sdk/python/feast/protos/feast/core/Project_pb2_grpc.py b/sdk/python/feast/protos/feast/core/Project_pb2_grpc.py index 2daafffebfc..de5820fd812 100644 --- a/sdk/python/feast/protos/feast/core/Project_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/Project_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/Project_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/Registry_pb2.py b/sdk/python/feast/protos/feast/core/Registry_pb2.py index 671958d80c7..f1ce35a9ff7 100644 --- a/sdk/python/feast/protos/feast/core/Registry_pb2.py +++ b/sdk/python/feast/protos/feast/core/Registry_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/Registry.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/Registry.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -32,10 +42,10 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Registry_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\rRegistryProtoZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_REGISTRY'].fields_by_name['project_metadata']._options = None + _globals['_REGISTRY'].fields_by_name['project_metadata']._loaded_options = None _globals['_REGISTRY'].fields_by_name['project_metadata']._serialized_options = b'\030\001' _globals['_REGISTRY']._serialized_start=449 _globals['_REGISTRY']._serialized_end=1216 diff --git a/sdk/python/feast/protos/feast/core/Registry_pb2.pyi b/sdk/python/feast/protos/feast/core/Registry_pb2.pyi index fca49c75481..5dc3ae82db2 100644 --- a/sdk/python/feast/protos/feast/core/Registry_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/Registry_pb2.pyi @@ -16,6 +16,7 @@ isort:skip_file * See the License for the specific language governing permissions and * limitations under the License. """ + import builtins import collections.abc import feast.core.DataSource_pb2 @@ -34,15 +35,11 @@ import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import google.protobuf.timestamp_pb2 -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Registry(google.protobuf.message.Message): """Next id: 18""" @@ -64,6 +61,10 @@ class Registry(google.protobuf.message.Message): LAST_UPDATED_FIELD_NUMBER: builtins.int PERMISSIONS_FIELD_NUMBER: builtins.int PROJECTS_FIELD_NUMBER: builtins.int + registry_schema_version: builtins.str + """to support migrations; incremented when schema is changed""" + version_id: builtins.str + """version id, random string generated on each update of the data; now used only for debugging purposes""" @property def entities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Entity_pb2.Entity]: ... @property @@ -87,10 +88,7 @@ class Registry(google.protobuf.message.Message): @property def project_metadata(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ProjectMetadata]: """Tracking metadata of Feast by project""" - registry_schema_version: builtins.str - """to support migrations; incremented when schema is changed""" - version_id: builtins.str - """version id, random string generated on each update of the data; now used only for debugging purposes""" + @property def last_updated(self) -> google.protobuf.timestamp_pb2.Timestamp: ... @property @@ -117,11 +115,12 @@ class Registry(google.protobuf.message.Message): permissions: collections.abc.Iterable[feast.core.Permission_pb2.Permission] | None = ..., projects: collections.abc.Iterable[feast.core.Project_pb2.Project] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["infra", b"infra", "last_updated", b"last_updated"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["data_sources", b"data_sources", "entities", b"entities", "feature_services", b"feature_services", "feature_tables", b"feature_tables", "feature_views", b"feature_views", "infra", b"infra", "last_updated", b"last_updated", "on_demand_feature_views", b"on_demand_feature_views", "permissions", b"permissions", "project_metadata", b"project_metadata", "projects", b"projects", "registry_schema_version", b"registry_schema_version", "saved_datasets", b"saved_datasets", "stream_feature_views", b"stream_feature_views", "validation_references", b"validation_references", "version_id", b"version_id"]) -> None: ... + def HasField(self, field_name: typing.Literal["infra", b"infra", "last_updated", b"last_updated"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["data_sources", b"data_sources", "entities", b"entities", "feature_services", b"feature_services", "feature_tables", b"feature_tables", "feature_views", b"feature_views", "infra", b"infra", "last_updated", b"last_updated", "on_demand_feature_views", b"on_demand_feature_views", "permissions", b"permissions", "project_metadata", b"project_metadata", "projects", b"projects", "registry_schema_version", b"registry_schema_version", "saved_datasets", b"saved_datasets", "stream_feature_views", b"stream_feature_views", "validation_references", b"validation_references", "version_id", b"version_id"]) -> None: ... global___Registry = Registry +@typing.final class ProjectMetadata(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -135,6 +134,6 @@ class ProjectMetadata(google.protobuf.message.Message): project: builtins.str = ..., project_uuid: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["project", b"project", "project_uuid", b"project_uuid"]) -> None: ... + def ClearField(self, field_name: typing.Literal["project", b"project", "project_uuid", b"project_uuid"]) -> None: ... global___ProjectMetadata = ProjectMetadata diff --git a/sdk/python/feast/protos/feast/core/Registry_pb2_grpc.py b/sdk/python/feast/protos/feast/core/Registry_pb2_grpc.py index 2daafffebfc..d581b3a9ac0 100644 --- a/sdk/python/feast/protos/feast/core/Registry_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/Registry_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/Registry_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/SavedDataset_pb2.py b/sdk/python/feast/protos/feast/core/SavedDataset_pb2.py index fe1e2d49eac..702eac75cef 100644 --- a/sdk/python/feast/protos/feast/core/SavedDataset_pb2.py +++ b/sdk/python/feast/protos/feast/core/SavedDataset_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/SavedDataset.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/SavedDataset.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -21,10 +31,10 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.SavedDataset_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\021SavedDatasetProtoZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_SAVEDDATASETSPEC_TAGSENTRY']._options = None + _globals['_SAVEDDATASETSPEC_TAGSENTRY']._loaded_options = None _globals['_SAVEDDATASETSPEC_TAGSENTRY']._serialized_options = b'8\001' _globals['_SAVEDDATASETSPEC']._serialized_start=108 _globals['_SAVEDDATASETSPEC']._serialized_end=401 diff --git a/sdk/python/feast/protos/feast/core/SavedDataset_pb2.pyi b/sdk/python/feast/protos/feast/core/SavedDataset_pb2.pyi index 47525b64ede..5520fe14def 100644 --- a/sdk/python/feast/protos/feast/core/SavedDataset_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/SavedDataset_pb2.pyi @@ -16,6 +16,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import feast.core.DataSource_pb2 @@ -23,18 +24,15 @@ import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import google.protobuf.timestamp_pb2 -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class SavedDatasetSpec(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -48,7 +46,7 @@ class SavedDatasetSpec(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int @@ -62,21 +60,24 @@ class SavedDatasetSpec(google.protobuf.message.Message): """Name of the dataset. Must be unique since it's possible to overwrite dataset by name""" project: builtins.str """Name of Feast project that this Dataset belongs to.""" + full_feature_names: builtins.bool + """Whether full feature names are used in stored data""" + feature_service_name: builtins.str + """Optional and only populated if generated from a feature service fetch""" @property def features(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """list of feature references with format ":" """ + @property def join_keys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """entity columns + request columns from all feature views used during retrieval""" - full_feature_names: builtins.bool - """Whether full feature names are used in stored data""" + @property def storage(self) -> global___SavedDatasetStorage: ... - feature_service_name: builtins.str - """Optional and only populated if generated from a feature service fetch""" @property def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """User defined metadata""" + def __init__( self, *, @@ -89,11 +90,12 @@ class SavedDatasetSpec(google.protobuf.message.Message): feature_service_name: builtins.str = ..., tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["storage", b"storage"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["feature_service_name", b"feature_service_name", "features", b"features", "full_feature_names", b"full_feature_names", "join_keys", b"join_keys", "name", b"name", "project", b"project", "storage", b"storage", "tags", b"tags"]) -> None: ... + def HasField(self, field_name: typing.Literal["storage", b"storage"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["feature_service_name", b"feature_service_name", "features", b"features", "full_feature_names", b"full_feature_names", "join_keys", b"join_keys", "name", b"name", "project", b"project", "storage", b"storage", "tags", b"tags"]) -> None: ... global___SavedDatasetSpec = SavedDatasetSpec +@typing.final class SavedDatasetStorage(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -133,12 +135,13 @@ class SavedDatasetStorage(google.protobuf.message.Message): custom_storage: feast.core.DataSource_pb2.DataSource.CustomSourceOptions | None = ..., athena_storage: feast.core.DataSource_pb2.DataSource.AthenaOptions | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["athena_storage", b"athena_storage", "bigquery_storage", b"bigquery_storage", "custom_storage", b"custom_storage", "file_storage", b"file_storage", "kind", b"kind", "redshift_storage", b"redshift_storage", "snowflake_storage", b"snowflake_storage", "spark_storage", b"spark_storage", "trino_storage", b"trino_storage"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["athena_storage", b"athena_storage", "bigquery_storage", b"bigquery_storage", "custom_storage", b"custom_storage", "file_storage", b"file_storage", "kind", b"kind", "redshift_storage", b"redshift_storage", "snowflake_storage", b"snowflake_storage", "spark_storage", b"spark_storage", "trino_storage", b"trino_storage"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["kind", b"kind"]) -> typing_extensions.Literal["file_storage", "bigquery_storage", "redshift_storage", "snowflake_storage", "trino_storage", "spark_storage", "custom_storage", "athena_storage"] | None: ... + def HasField(self, field_name: typing.Literal["athena_storage", b"athena_storage", "bigquery_storage", b"bigquery_storage", "custom_storage", b"custom_storage", "file_storage", b"file_storage", "kind", b"kind", "redshift_storage", b"redshift_storage", "snowflake_storage", b"snowflake_storage", "spark_storage", b"spark_storage", "trino_storage", b"trino_storage"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["athena_storage", b"athena_storage", "bigquery_storage", b"bigquery_storage", "custom_storage", b"custom_storage", "file_storage", b"file_storage", "kind", b"kind", "redshift_storage", b"redshift_storage", "snowflake_storage", b"snowflake_storage", "spark_storage", b"spark_storage", "trino_storage", b"trino_storage"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["kind", b"kind"]) -> typing.Literal["file_storage", "bigquery_storage", "redshift_storage", "snowflake_storage", "trino_storage", "spark_storage", "custom_storage", "athena_storage"] | None: ... global___SavedDatasetStorage = SavedDatasetStorage +@typing.final class SavedDatasetMeta(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -149,15 +152,19 @@ class SavedDatasetMeta(google.protobuf.message.Message): @property def created_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: """Time when this saved dataset is created""" + @property def last_updated_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: """Time when this saved dataset is last updated""" + @property def min_event_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: """Min timestamp in the dataset (needed for retrieval)""" + @property def max_event_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: """Max timestamp in the dataset (needed for retrieval)""" + def __init__( self, *, @@ -166,11 +173,12 @@ class SavedDatasetMeta(google.protobuf.message.Message): min_event_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., max_event_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp", "max_event_timestamp", b"max_event_timestamp", "min_event_timestamp", b"min_event_timestamp"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp", "max_event_timestamp", b"max_event_timestamp", "min_event_timestamp", b"min_event_timestamp"]) -> None: ... + def HasField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp", "max_event_timestamp", b"max_event_timestamp", "min_event_timestamp", b"min_event_timestamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp", "max_event_timestamp", b"max_event_timestamp", "min_event_timestamp", b"min_event_timestamp"]) -> None: ... global___SavedDatasetMeta = SavedDatasetMeta +@typing.final class SavedDataset(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -186,7 +194,7 @@ class SavedDataset(google.protobuf.message.Message): spec: global___SavedDatasetSpec | None = ..., meta: global___SavedDatasetMeta | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... + def HasField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... global___SavedDataset = SavedDataset diff --git a/sdk/python/feast/protos/feast/core/SavedDataset_pb2_grpc.py b/sdk/python/feast/protos/feast/core/SavedDataset_pb2_grpc.py index 2daafffebfc..085bd8422c3 100644 --- a/sdk/python/feast/protos/feast/core/SavedDataset_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/SavedDataset_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/SavedDataset_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/SqliteTable_pb2.py b/sdk/python/feast/protos/feast/core/SqliteTable_pb2.py index 8cc14781c72..9d533d1b2cb 100644 --- a/sdk/python/feast/protos/feast/core/SqliteTable_pb2.py +++ b/sdk/python/feast/protos/feast/core/SqliteTable_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/SqliteTable.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/SqliteTable.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,8 +29,8 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.SqliteTable_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\020SqliteTableProtoZ/github.com/feast-dev/feast/go/protos/feast/core' _globals['_SQLITETABLE']._serialized_start=44 _globals['_SQLITETABLE']._serialized_end=85 diff --git a/sdk/python/feast/protos/feast/core/SqliteTable_pb2.pyi b/sdk/python/feast/protos/feast/core/SqliteTable_pb2.pyi index 10ecebf362b..e72f8fa4e63 100644 --- a/sdk/python/feast/protos/feast/core/SqliteTable_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/SqliteTable_pb2.pyi @@ -16,18 +16,15 @@ isort:skip_file * See the License for the specific language governing permissions and * limitations under the License. """ + import builtins import google.protobuf.descriptor import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class SqliteTable(google.protobuf.message.Message): """Represents a Sqlite table""" @@ -45,6 +42,6 @@ class SqliteTable(google.protobuf.message.Message): path: builtins.str = ..., name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "path", b"path"]) -> None: ... + def ClearField(self, field_name: typing.Literal["name", b"name", "path", b"path"]) -> None: ... global___SqliteTable = SqliteTable diff --git a/sdk/python/feast/protos/feast/core/SqliteTable_pb2_grpc.py b/sdk/python/feast/protos/feast/core/SqliteTable_pb2_grpc.py index 2daafffebfc..928facbd666 100644 --- a/sdk/python/feast/protos/feast/core/SqliteTable_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/SqliteTable_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/SqliteTable_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/Store_pb2.py b/sdk/python/feast/protos/feast/core/Store_pb2.py index 7d24e11947f..dc2ef99b218 100644 --- a/sdk/python/feast/protos/feast/core/Store_pb2.py +++ b/sdk/python/feast/protos/feast/core/Store_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/Store.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/Store.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,8 +29,8 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Store_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\nStoreProtoZ/github.com/feast-dev/feast/go/protos/feast/core' _globals['_STORE']._serialized_start=39 _globals['_STORE']._serialized_end=932 diff --git a/sdk/python/feast/protos/feast/core/Store_pb2.pyi b/sdk/python/feast/protos/feast/core/Store_pb2.pyi index 5ee957d184f..0dfe6cbd6c7 100644 --- a/sdk/python/feast/protos/feast/core/Store_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/Store_pb2.pyi @@ -16,6 +16,7 @@ isort:skip_file * See the License for the specific language governing permissions and * limitations under the License. """ + import builtins import collections.abc import google.protobuf.descriptor @@ -32,6 +33,7 @@ else: DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Store(google.protobuf.message.Message): """Store provides a location where Feast reads and writes feature values. Feature values will be written to the Store in the form of FeatureRow elements. @@ -45,7 +47,7 @@ class Store(google.protobuf.message.Message): ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType - class _StoreTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Store._StoreType.ValueType], builtins.type): # noqa: F821 + class _StoreTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Store._StoreType.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor INVALID: Store._StoreType.ValueType # 0 REDIS: Store._StoreType.ValueType # 1 @@ -76,6 +78,7 @@ class Store(google.protobuf.message.Message): """ REDIS_CLUSTER: Store.StoreType.ValueType # 4 + @typing.final class RedisConfig(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -107,8 +110,9 @@ class Store(google.protobuf.message.Message): flush_frequency_seconds: builtins.int = ..., ssl: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["flush_frequency_seconds", b"flush_frequency_seconds", "host", b"host", "initial_backoff_ms", b"initial_backoff_ms", "max_retries", b"max_retries", "port", b"port", "ssl", b"ssl"]) -> None: ... + def ClearField(self, field_name: typing.Literal["flush_frequency_seconds", b"flush_frequency_seconds", "host", b"host", "initial_backoff_ms", b"initial_backoff_ms", "max_retries", b"max_retries", "port", b"port", "ssl", b"ssl"]) -> None: ... + @typing.final class RedisClusterConfig(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -116,7 +120,7 @@ class Store(google.protobuf.message.Message): ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType - class _ReadFromEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Store.RedisClusterConfig._ReadFrom.ValueType], builtins.type): # noqa: F821 + class _ReadFromEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Store.RedisClusterConfig._ReadFrom.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor MASTER: Store.RedisClusterConfig._ReadFrom.ValueType # 0 MASTER_PREFERRED: Store.RedisClusterConfig._ReadFrom.ValueType # 1 @@ -166,8 +170,9 @@ class Store(google.protobuf.message.Message): fallback_prefix: builtins.str = ..., read_from: global___Store.RedisClusterConfig.ReadFrom.ValueType = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["connection_string", b"connection_string", "enable_fallback", b"enable_fallback", "fallback_prefix", b"fallback_prefix", "flush_frequency_seconds", b"flush_frequency_seconds", "initial_backoff_ms", b"initial_backoff_ms", "key_prefix", b"key_prefix", "max_retries", b"max_retries", "read_from", b"read_from"]) -> None: ... + def ClearField(self, field_name: typing.Literal["connection_string", b"connection_string", "enable_fallback", b"enable_fallback", "fallback_prefix", b"fallback_prefix", "flush_frequency_seconds", b"flush_frequency_seconds", "initial_backoff_ms", b"initial_backoff_ms", "key_prefix", b"key_prefix", "max_retries", b"max_retries", "read_from", b"read_from"]) -> None: ... + @typing.final class Subscription(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -200,7 +205,7 @@ class Store(google.protobuf.message.Message): name: builtins.str = ..., exclude: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["exclude", b"exclude", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["exclude", b"exclude", "name", b"name", "project", b"project"]) -> None: ... NAME_FIELD_NUMBER: builtins.int TYPE_FIELD_NUMBER: builtins.int @@ -214,6 +219,7 @@ class Store(google.protobuf.message.Message): @property def subscriptions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Store.Subscription]: """Feature sets to subscribe to.""" + @property def redis_config(self) -> global___Store.RedisConfig: ... @property @@ -227,8 +233,8 @@ class Store(google.protobuf.message.Message): redis_config: global___Store.RedisConfig | None = ..., redis_cluster_config: global___Store.RedisClusterConfig | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["config", b"config", "redis_cluster_config", b"redis_cluster_config", "redis_config", b"redis_config"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["config", b"config", "name", b"name", "redis_cluster_config", b"redis_cluster_config", "redis_config", b"redis_config", "subscriptions", b"subscriptions", "type", b"type"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["config", b"config"]) -> typing_extensions.Literal["redis_config", "redis_cluster_config"] | None: ... + def HasField(self, field_name: typing.Literal["config", b"config", "redis_cluster_config", b"redis_cluster_config", "redis_config", b"redis_config"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["config", b"config", "name", b"name", "redis_cluster_config", b"redis_cluster_config", "redis_config", b"redis_config", "subscriptions", b"subscriptions", "type", b"type"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["config", b"config"]) -> typing.Literal["redis_config", "redis_cluster_config"] | None: ... global___Store = Store diff --git a/sdk/python/feast/protos/feast/core/Store_pb2_grpc.py b/sdk/python/feast/protos/feast/core/Store_pb2_grpc.py index 2daafffebfc..25411e70bfa 100644 --- a/sdk/python/feast/protos/feast/core/Store_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/Store_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/Store_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.py b/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.py index f64c2852aa9..47837c5504f 100644 --- a/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.py +++ b/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/StreamFeatureView.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/StreamFeatureView.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -26,12 +36,12 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.StreamFeatureView_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\026StreamFeatureViewProtoZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_STREAMFEATUREVIEWSPEC_TAGSENTRY']._options = None + _globals['_STREAMFEATUREVIEWSPEC_TAGSENTRY']._loaded_options = None _globals['_STREAMFEATUREVIEWSPEC_TAGSENTRY']._serialized_options = b'8\001' - _globals['_STREAMFEATUREVIEWSPEC'].fields_by_name['user_defined_function']._options = None + _globals['_STREAMFEATUREVIEWSPEC'].fields_by_name['user_defined_function']._loaded_options = None _globals['_STREAMFEATUREVIEWSPEC'].fields_by_name['user_defined_function']._serialized_options = b'\030\001' _globals['_STREAMFEATUREVIEW']._serialized_start=268 _globals['_STREAMFEATUREVIEW']._serialized_end=379 diff --git a/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.pyi b/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.pyi index 160a59b35df..42ff1c211fc 100644 --- a/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.pyi @@ -16,6 +16,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import feast.core.Aggregation_pb2 @@ -28,15 +29,11 @@ import google.protobuf.descriptor import google.protobuf.duration_pb2 import google.protobuf.internal.containers import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class StreamFeatureView(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -45,6 +42,7 @@ class StreamFeatureView(google.protobuf.message.Message): @property def spec(self) -> global___StreamFeatureViewSpec: """User-specified specifications of this feature view.""" + @property def meta(self) -> feast.core.FeatureView_pb2.FeatureViewMeta: ... def __init__( @@ -53,16 +51,18 @@ class StreamFeatureView(google.protobuf.message.Message): spec: global___StreamFeatureViewSpec | None = ..., meta: feast.core.FeatureView_pb2.FeatureViewMeta | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... + def HasField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["meta", b"meta", "spec", b"spec"]) -> None: ... global___StreamFeatureView = StreamFeatureView +@typing.final class StreamFeatureViewSpec(google.protobuf.message.Message): """Next available id: 20""" DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -76,7 +76,7 @@ class StreamFeatureViewSpec(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int @@ -101,22 +101,34 @@ class StreamFeatureViewSpec(google.protobuf.message.Message): """Name of the feature view. Must be unique. Not updated.""" project: builtins.str """Name of Feast project that this feature view belongs to.""" + description: builtins.str + """Description of the feature view.""" + owner: builtins.str + """Owner of the feature view.""" + online: builtins.bool + """Whether these features should be served online or not""" + mode: builtins.str + """Mode of execution""" + timestamp_field: builtins.str + """Timestamp field for aggregation""" + enable_tiling: builtins.bool + """Enable tiling for efficient window aggregation""" @property def entities(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """List of names of entities associated with this feature view.""" + @property def features(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Feature_pb2.FeatureSpecV2]: """List of specifications for each feature defined as part of this feature view.""" + @property def entity_columns(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Feature_pb2.FeatureSpecV2]: """List of specifications for each entity defined as part of this feature view.""" - description: builtins.str - """Description of the feature view.""" + @property def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """User defined metadata""" - owner: builtins.str - """Owner of the feature view.""" + @property def ttl(self) -> google.protobuf.duration_pb2.Duration: """Features in this feature view can only be retrieved from online serving @@ -124,34 +136,33 @@ class StreamFeatureViewSpec(google.protobuf.message.Message): the feature's event timestamp and when the feature is retrieved Feature values outside ttl will be returned as unset values and indicated to end user """ + @property def batch_source(self) -> feast.core.DataSource_pb2.DataSource: """Batch/Offline DataSource where this view can retrieve offline feature data.""" + @property def stream_source(self) -> feast.core.DataSource_pb2.DataSource: """Streaming DataSource from where this view can consume "online" feature data.""" - online: builtins.bool - """Whether these features should be served online or not""" + @property def user_defined_function(self) -> feast.core.OnDemandFeatureView_pb2.UserDefinedFunction: """Serialized function that is encoded in the streamfeatureview""" - mode: builtins.str - """Mode of execution""" + @property def aggregations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Aggregation_pb2.Aggregation]: """Aggregation definitions""" - timestamp_field: builtins.str - """Timestamp field for aggregation""" + @property def feature_transformation(self) -> feast.core.Transformation_pb2.FeatureTransformationV2: """Oneof with {user_defined_function, on_demand_substrait_transformation}""" - enable_tiling: builtins.bool - """Enable tiling for efficient window aggregation""" + @property def tiling_hop_size(self) -> google.protobuf.duration_pb2.Duration: """Hop size for tiling (e.g., 5 minutes). Determines the granularity of pre-aggregated tiles. If not specified, defaults to 5 minutes. Only used when enable_tiling is true. """ + def __init__( self, *, @@ -175,7 +186,7 @@ class StreamFeatureViewSpec(google.protobuf.message.Message): enable_tiling: builtins.bool = ..., tiling_hop_size: google.protobuf.duration_pb2.Duration | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["batch_source", b"batch_source", "feature_transformation", b"feature_transformation", "stream_source", b"stream_source", "tiling_hop_size", b"tiling_hop_size", "ttl", b"ttl", "user_defined_function", b"user_defined_function"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["aggregations", b"aggregations", "batch_source", b"batch_source", "description", b"description", "enable_tiling", b"enable_tiling", "entities", b"entities", "entity_columns", b"entity_columns", "feature_transformation", b"feature_transformation", "features", b"features", "mode", b"mode", "name", b"name", "online", b"online", "owner", b"owner", "project", b"project", "stream_source", b"stream_source", "tags", b"tags", "tiling_hop_size", b"tiling_hop_size", "timestamp_field", b"timestamp_field", "ttl", b"ttl", "user_defined_function", b"user_defined_function"]) -> None: ... + def HasField(self, field_name: typing.Literal["batch_source", b"batch_source", "feature_transformation", b"feature_transformation", "stream_source", b"stream_source", "tiling_hop_size", b"tiling_hop_size", "ttl", b"ttl", "user_defined_function", b"user_defined_function"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["aggregations", b"aggregations", "batch_source", b"batch_source", "description", b"description", "enable_tiling", b"enable_tiling", "entities", b"entities", "entity_columns", b"entity_columns", "feature_transformation", b"feature_transformation", "features", b"features", "mode", b"mode", "name", b"name", "online", b"online", "owner", b"owner", "project", b"project", "stream_source", b"stream_source", "tags", b"tags", "tiling_hop_size", b"tiling_hop_size", "timestamp_field", b"timestamp_field", "ttl", b"ttl", "user_defined_function", b"user_defined_function"]) -> None: ... global___StreamFeatureViewSpec = StreamFeatureViewSpec diff --git a/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2_grpc.py b/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2_grpc.py index 2daafffebfc..4cd468b085c 100644 --- a/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/StreamFeatureView_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/Transformation_pb2.py b/sdk/python/feast/protos/feast/core/Transformation_pb2.py index c322bc1925c..ad4c403b03b 100644 --- a/sdk/python/feast/protos/feast/core/Transformation_pb2.py +++ b/sdk/python/feast/protos/feast/core/Transformation_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/Transformation.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/Transformation.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,8 +29,8 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Transformation_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\032FeatureTransformationProtoZ/github.com/feast-dev/feast/go/protos/feast/core' _globals['_USERDEFINEDFUNCTIONV2']._serialized_start=47 _globals['_USERDEFINEDFUNCTIONV2']._serialized_end=131 diff --git a/sdk/python/feast/protos/feast/core/Transformation_pb2.pyi b/sdk/python/feast/protos/feast/core/Transformation_pb2.pyi index fb56ab5bc73..8ec0058f425 100644 --- a/sdk/python/feast/protos/feast/core/Transformation_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/Transformation_pb2.pyi @@ -2,18 +2,15 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ + import builtins import google.protobuf.descriptor import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class UserDefinedFunctionV2(google.protobuf.message.Message): """Serialized representation of python function.""" @@ -39,10 +36,11 @@ class UserDefinedFunctionV2(google.protobuf.message.Message): body_text: builtins.str = ..., mode: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["body", b"body", "body_text", b"body_text", "mode", b"mode", "name", b"name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["body", b"body", "body_text", b"body_text", "mode", b"mode", "name", b"name"]) -> None: ... global___UserDefinedFunctionV2 = UserDefinedFunctionV2 +@typing.final class FeatureTransformationV2(google.protobuf.message.Message): """A feature transformation executed as a user-defined function""" @@ -60,12 +58,13 @@ class FeatureTransformationV2(google.protobuf.message.Message): user_defined_function: global___UserDefinedFunctionV2 | None = ..., substrait_transformation: global___SubstraitTransformationV2 | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["substrait_transformation", b"substrait_transformation", "transformation", b"transformation", "user_defined_function", b"user_defined_function"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["substrait_transformation", b"substrait_transformation", "transformation", b"transformation", "user_defined_function", b"user_defined_function"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["transformation", b"transformation"]) -> typing_extensions.Literal["user_defined_function", "substrait_transformation"] | None: ... + def HasField(self, field_name: typing.Literal["substrait_transformation", b"substrait_transformation", "transformation", b"transformation", "user_defined_function", b"user_defined_function"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["substrait_transformation", b"substrait_transformation", "transformation", b"transformation", "user_defined_function", b"user_defined_function"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["transformation", b"transformation"]) -> typing.Literal["user_defined_function", "substrait_transformation"] | None: ... global___FeatureTransformationV2 = FeatureTransformationV2 +@typing.final class SubstraitTransformationV2(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -79,6 +78,6 @@ class SubstraitTransformationV2(google.protobuf.message.Message): substrait_plan: builtins.bytes = ..., ibis_function: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["ibis_function", b"ibis_function", "substrait_plan", b"substrait_plan"]) -> None: ... + def ClearField(self, field_name: typing.Literal["ibis_function", b"ibis_function", "substrait_plan", b"substrait_plan"]) -> None: ... global___SubstraitTransformationV2 = SubstraitTransformationV2 diff --git a/sdk/python/feast/protos/feast/core/Transformation_pb2_grpc.py b/sdk/python/feast/protos/feast/core/Transformation_pb2_grpc.py index 2daafffebfc..efd44a4646b 100644 --- a/sdk/python/feast/protos/feast/core/Transformation_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/Transformation_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/Transformation_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/core/ValidationProfile_pb2.py b/sdk/python/feast/protos/feast/core/ValidationProfile_pb2.py index 0fb27ceab16..4e55298b27a 100644 --- a/sdk/python/feast/protos/feast/core/ValidationProfile_pb2.py +++ b/sdk/python/feast/protos/feast/core/ValidationProfile_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/core/ValidationProfile.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/core/ValidationProfile.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,10 +29,10 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.ValidationProfile_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\021ValidationProfileZ/github.com/feast-dev/feast/go/protos/feast/core' - _globals['_VALIDATIONREFERENCE_TAGSENTRY']._options = None + _globals['_VALIDATIONREFERENCE_TAGSENTRY']._loaded_options = None _globals['_VALIDATIONREFERENCE_TAGSENTRY']._serialized_options = b'8\001' _globals['_GEVALIDATIONPROFILER']._serialized_start=51 _globals['_GEVALIDATIONPROFILER']._serialized_end=182 diff --git a/sdk/python/feast/protos/feast/core/ValidationProfile_pb2.pyi b/sdk/python/feast/protos/feast/core/ValidationProfile_pb2.pyi index 93da1e0f5e8..50c989237c8 100644 --- a/sdk/python/feast/protos/feast/core/ValidationProfile_pb2.pyi +++ b/sdk/python/feast/protos/feast/core/ValidationProfile_pb2.pyi @@ -16,24 +16,21 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message -import sys import typing -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions - DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class GEValidationProfiler(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class UserDefinedProfiler(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -45,7 +42,7 @@ class GEValidationProfiler(google.protobuf.message.Message): *, body: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["body", b"body"]) -> None: ... + def ClearField(self, field_name: typing.Literal["body", b"body"]) -> None: ... PROFILER_FIELD_NUMBER: builtins.int @property @@ -55,11 +52,12 @@ class GEValidationProfiler(google.protobuf.message.Message): *, profiler: global___GEValidationProfiler.UserDefinedProfiler | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["profiler", b"profiler"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["profiler", b"profiler"]) -> None: ... + def HasField(self, field_name: typing.Literal["profiler", b"profiler"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["profiler", b"profiler"]) -> None: ... global___GEValidationProfiler = GEValidationProfiler +@typing.final class GEValidationProfile(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -71,13 +69,15 @@ class GEValidationProfile(google.protobuf.message.Message): *, expectation_suite: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["expectation_suite", b"expectation_suite"]) -> None: ... + def ClearField(self, field_name: typing.Literal["expectation_suite", b"expectation_suite"]) -> None: ... global___GEValidationProfile = GEValidationProfile +@typing.final class ValidationReference(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -91,7 +91,7 @@ class ValidationReference(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int REFERENCE_DATASET_NAME_FIELD_NUMBER: builtins.int @@ -111,6 +111,7 @@ class ValidationReference(google.protobuf.message.Message): @property def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """User defined metadata""" + @property def ge_profiler(self) -> global___GEValidationProfiler: ... @property @@ -126,11 +127,11 @@ class ValidationReference(google.protobuf.message.Message): ge_profiler: global___GEValidationProfiler | None = ..., ge_profile: global___GEValidationProfile | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["cached_profile", b"cached_profile", "ge_profile", b"ge_profile", "ge_profiler", b"ge_profiler", "profiler", b"profiler"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["cached_profile", b"cached_profile", "description", b"description", "ge_profile", b"ge_profile", "ge_profiler", b"ge_profiler", "name", b"name", "profiler", b"profiler", "project", b"project", "reference_dataset_name", b"reference_dataset_name", "tags", b"tags"]) -> None: ... + def HasField(self, field_name: typing.Literal["cached_profile", b"cached_profile", "ge_profile", b"ge_profile", "ge_profiler", b"ge_profiler", "profiler", b"profiler"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["cached_profile", b"cached_profile", "description", b"description", "ge_profile", b"ge_profile", "ge_profiler", b"ge_profiler", "name", b"name", "profiler", b"profiler", "project", b"project", "reference_dataset_name", b"reference_dataset_name", "tags", b"tags"]) -> None: ... @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["cached_profile", b"cached_profile"]) -> typing_extensions.Literal["ge_profile"] | None: ... + def WhichOneof(self, oneof_group: typing.Literal["cached_profile", b"cached_profile"]) -> typing.Literal["ge_profile"] | None: ... @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["profiler", b"profiler"]) -> typing_extensions.Literal["ge_profiler"] | None: ... + def WhichOneof(self, oneof_group: typing.Literal["profiler", b"profiler"]) -> typing.Literal["ge_profiler"] | None: ... global___ValidationReference = ValidationReference diff --git a/sdk/python/feast/protos/feast/core/ValidationProfile_pb2_grpc.py b/sdk/python/feast/protos/feast/core/ValidationProfile_pb2_grpc.py index 2daafffebfc..24b9f79acd6 100644 --- a/sdk/python/feast/protos/feast/core/ValidationProfile_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/core/ValidationProfile_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/core/ValidationProfile_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/registry/RegistryServer_pb2.py b/sdk/python/feast/protos/feast/registry/RegistryServer_pb2.py index 8b346fcd672..bca9466e75f 100644 --- a/sdk/python/feast/protos/feast/registry/RegistryServer_pb2.py +++ b/sdk/python/feast/protos/feast/registry/RegistryServer_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/registry/RegistryServer.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/registry/RegistryServer.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -33,32 +43,32 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.registry.RegistryServer_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'Z3github.com/feast-dev/feast/go/protos/feast/registry' - _globals['_LISTENTITIESREQUEST_TAGSENTRY']._options = None + _globals['_LISTENTITIESREQUEST_TAGSENTRY']._loaded_options = None _globals['_LISTENTITIESREQUEST_TAGSENTRY']._serialized_options = b'8\001' - _globals['_LISTDATASOURCESREQUEST_TAGSENTRY']._options = None + _globals['_LISTDATASOURCESREQUEST_TAGSENTRY']._loaded_options = None _globals['_LISTDATASOURCESREQUEST_TAGSENTRY']._serialized_options = b'8\001' - _globals['_LISTFEATUREVIEWSREQUEST_TAGSENTRY']._options = None + _globals['_LISTFEATUREVIEWSREQUEST_TAGSENTRY']._loaded_options = None _globals['_LISTFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_options = b'8\001' - _globals['_LISTALLFEATUREVIEWSREQUEST_TAGSENTRY']._options = None + _globals['_LISTALLFEATUREVIEWSREQUEST_TAGSENTRY']._loaded_options = None _globals['_LISTALLFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_options = b'8\001' - _globals['_LISTSTREAMFEATUREVIEWSREQUEST_TAGSENTRY']._options = None + _globals['_LISTSTREAMFEATUREVIEWSREQUEST_TAGSENTRY']._loaded_options = None _globals['_LISTSTREAMFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_options = b'8\001' - _globals['_LISTONDEMANDFEATUREVIEWSREQUEST_TAGSENTRY']._options = None + _globals['_LISTONDEMANDFEATUREVIEWSREQUEST_TAGSENTRY']._loaded_options = None _globals['_LISTONDEMANDFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_options = b'8\001' - _globals['_LISTFEATURESERVICESREQUEST_TAGSENTRY']._options = None + _globals['_LISTFEATURESERVICESREQUEST_TAGSENTRY']._loaded_options = None _globals['_LISTFEATURESERVICESREQUEST_TAGSENTRY']._serialized_options = b'8\001' - _globals['_LISTSAVEDDATASETSREQUEST_TAGSENTRY']._options = None + _globals['_LISTSAVEDDATASETSREQUEST_TAGSENTRY']._loaded_options = None _globals['_LISTSAVEDDATASETSREQUEST_TAGSENTRY']._serialized_options = b'8\001' - _globals['_LISTVALIDATIONREFERENCESREQUEST_TAGSENTRY']._options = None + _globals['_LISTVALIDATIONREFERENCESREQUEST_TAGSENTRY']._loaded_options = None _globals['_LISTVALIDATIONREFERENCESREQUEST_TAGSENTRY']._serialized_options = b'8\001' - _globals['_LISTPERMISSIONSREQUEST_TAGSENTRY']._options = None + _globals['_LISTPERMISSIONSREQUEST_TAGSENTRY']._loaded_options = None _globals['_LISTPERMISSIONSREQUEST_TAGSENTRY']._serialized_options = b'8\001' - _globals['_LISTPROJECTSREQUEST_TAGSENTRY']._options = None + _globals['_LISTPROJECTSREQUEST_TAGSENTRY']._loaded_options = None _globals['_LISTPROJECTSREQUEST_TAGSENTRY']._serialized_options = b'8\001' - _globals['_FEATURE_TAGSENTRY']._options = None + _globals['_FEATURE_TAGSENTRY']._loaded_options = None _globals['_FEATURE_TAGSENTRY']._serialized_options = b'8\001' _globals['_PAGINATIONPARAMS']._serialized_start=487 _globals['_PAGINATIONPARAMS']._serialized_end=534 diff --git a/sdk/python/feast/protos/feast/registry/RegistryServer_pb2.pyi b/sdk/python/feast/protos/feast/registry/RegistryServer_pb2.pyi index a1f1b99365d..6b4cfcc92bd 100644 --- a/sdk/python/feast/protos/feast/registry/RegistryServer_pb2.pyi +++ b/sdk/python/feast/protos/feast/registry/RegistryServer_pb2.pyi @@ -2,6 +2,7 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ + import builtins import collections.abc import feast.core.DataSource_pb2 @@ -20,15 +21,11 @@ import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import google.protobuf.timestamp_pb2 -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class PaginationParams(google.protobuf.message.Message): """Common pagination and sorting messages""" @@ -46,10 +43,11 @@ class PaginationParams(google.protobuf.message.Message): page: builtins.int = ..., limit: builtins.int = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["limit", b"limit", "page", b"page"]) -> None: ... + def ClearField(self, field_name: typing.Literal["limit", b"limit", "page", b"page"]) -> None: ... global___PaginationParams = PaginationParams +@typing.final class SortingParams(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -65,10 +63,11 @@ class SortingParams(google.protobuf.message.Message): sort_by: builtins.str = ..., sort_order: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["sort_by", b"sort_by", "sort_order", b"sort_order"]) -> None: ... + def ClearField(self, field_name: typing.Literal["sort_by", b"sort_by", "sort_order", b"sort_order"]) -> None: ... global___SortingParams = SortingParams +@typing.final class PaginationMetadata(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -94,10 +93,11 @@ class PaginationMetadata(google.protobuf.message.Message): has_next: builtins.bool = ..., has_previous: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["has_next", b"has_next", "has_previous", b"has_previous", "limit", b"limit", "page", b"page", "total_count", b"total_count", "total_pages", b"total_pages"]) -> None: ... + def ClearField(self, field_name: typing.Literal["has_next", b"has_next", "has_previous", b"has_previous", "limit", b"limit", "page", b"page", "total_count", b"total_count", "total_pages", b"total_pages"]) -> None: ... global___PaginationMetadata = PaginationMetadata +@typing.final class RefreshRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -108,20 +108,21 @@ class RefreshRequest(google.protobuf.message.Message): *, project: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["project", b"project"]) -> None: ... global___RefreshRequest = RefreshRequest +@typing.final class UpdateInfraRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor INFRA_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int COMMIT_FIELD_NUMBER: builtins.int - @property - def infra(self) -> feast.core.InfraObject_pb2.Infra: ... project: builtins.str commit: builtins.bool + @property + def infra(self) -> feast.core.InfraObject_pb2.Infra: ... def __init__( self, *, @@ -129,11 +130,12 @@ class UpdateInfraRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["infra", b"infra"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "infra", b"infra", "project", b"project"]) -> None: ... + def HasField(self, field_name: typing.Literal["infra", b"infra"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "infra", b"infra", "project", b"project"]) -> None: ... global___UpdateInfraRequest = UpdateInfraRequest +@typing.final class GetInfraRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -147,10 +149,11 @@ class GetInfraRequest(google.protobuf.message.Message): project: builtins.str = ..., allow_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "project", b"project"]) -> None: ... global___GetInfraRequest = GetInfraRequest +@typing.final class ListProjectMetadataRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -164,10 +167,11 @@ class ListProjectMetadataRequest(google.protobuf.message.Message): project: builtins.str = ..., allow_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "project", b"project"]) -> None: ... global___ListProjectMetadataRequest = ListProjectMetadataRequest +@typing.final class ListProjectMetadataResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -179,10 +183,11 @@ class ListProjectMetadataResponse(google.protobuf.message.Message): *, project_metadata: collections.abc.Iterable[feast.core.Registry_pb2.ProjectMetadata] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["project_metadata", b"project_metadata"]) -> None: ... + def ClearField(self, field_name: typing.Literal["project_metadata", b"project_metadata"]) -> None: ... global___ListProjectMetadataResponse = ListProjectMetadataResponse +@typing.final class ApplyMaterializationRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -191,14 +196,14 @@ class ApplyMaterializationRequest(google.protobuf.message.Message): START_DATE_FIELD_NUMBER: builtins.int END_DATE_FIELD_NUMBER: builtins.int COMMIT_FIELD_NUMBER: builtins.int + project: builtins.str + commit: builtins.bool @property def feature_view(self) -> feast.core.FeatureView_pb2.FeatureView: ... - project: builtins.str @property def start_date(self) -> google.protobuf.timestamp_pb2.Timestamp: ... @property def end_date(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - commit: builtins.bool def __init__( self, *, @@ -208,21 +213,22 @@ class ApplyMaterializationRequest(google.protobuf.message.Message): end_date: google.protobuf.timestamp_pb2.Timestamp | None = ..., commit: builtins.bool = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["end_date", b"end_date", "feature_view", b"feature_view", "start_date", b"start_date"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "end_date", b"end_date", "feature_view", b"feature_view", "project", b"project", "start_date", b"start_date"]) -> None: ... + def HasField(self, field_name: typing.Literal["end_date", b"end_date", "feature_view", b"feature_view", "start_date", b"start_date"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "end_date", b"end_date", "feature_view", b"feature_view", "project", b"project", "start_date", b"start_date"]) -> None: ... global___ApplyMaterializationRequest = ApplyMaterializationRequest +@typing.final class ApplyEntityRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor ENTITY_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int COMMIT_FIELD_NUMBER: builtins.int - @property - def entity(self) -> feast.core.Entity_pb2.Entity: ... project: builtins.str commit: builtins.bool + @property + def entity(self) -> feast.core.Entity_pb2.Entity: ... def __init__( self, *, @@ -230,11 +236,12 @@ class ApplyEntityRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["entity", b"entity"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "entity", b"entity", "project", b"project"]) -> None: ... + def HasField(self, field_name: typing.Literal["entity", b"entity"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "entity", b"entity", "project", b"project"]) -> None: ... global___ApplyEntityRequest = ApplyEntityRequest +@typing.final class GetEntityRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -251,13 +258,15 @@ class GetEntityRequest(google.protobuf.message.Message): project: builtins.str = ..., allow_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... global___GetEntityRequest = GetEntityRequest +@typing.final class ListEntitiesRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -271,7 +280,7 @@ class ListEntitiesRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PROJECT_FIELD_NUMBER: builtins.int ALLOW_CACHE_FIELD_NUMBER: builtins.int @@ -295,11 +304,12 @@ class ListEntitiesRequest(google.protobuf.message.Message): pagination: global___PaginationParams | None = ..., sorting: global___SortingParams | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... global___ListEntitiesRequest = ListEntitiesRequest +@typing.final class ListEntitiesResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -315,11 +325,12 @@ class ListEntitiesResponse(google.protobuf.message.Message): entities: collections.abc.Iterable[feast.core.Entity_pb2.Entity] | None = ..., pagination: global___PaginationMetadata | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["entities", b"entities", "pagination", b"pagination"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["entities", b"entities", "pagination", b"pagination"]) -> None: ... global___ListEntitiesResponse = ListEntitiesResponse +@typing.final class DeleteEntityRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -336,10 +347,11 @@ class DeleteEntityRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "name", b"name", "project", b"project"]) -> None: ... global___DeleteEntityRequest = DeleteEntityRequest +@typing.final class ApplyDataSourceRequest(google.protobuf.message.Message): """DataSources""" @@ -348,10 +360,10 @@ class ApplyDataSourceRequest(google.protobuf.message.Message): DATA_SOURCE_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int COMMIT_FIELD_NUMBER: builtins.int - @property - def data_source(self) -> feast.core.DataSource_pb2.DataSource: ... project: builtins.str commit: builtins.bool + @property + def data_source(self) -> feast.core.DataSource_pb2.DataSource: ... def __init__( self, *, @@ -359,11 +371,12 @@ class ApplyDataSourceRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["data_source", b"data_source"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "data_source", b"data_source", "project", b"project"]) -> None: ... + def HasField(self, field_name: typing.Literal["data_source", b"data_source"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "data_source", b"data_source", "project", b"project"]) -> None: ... global___ApplyDataSourceRequest = ApplyDataSourceRequest +@typing.final class GetDataSourceRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -380,13 +393,15 @@ class GetDataSourceRequest(google.protobuf.message.Message): project: builtins.str = ..., allow_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... global___GetDataSourceRequest = GetDataSourceRequest +@typing.final class ListDataSourcesRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -400,7 +415,7 @@ class ListDataSourcesRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PROJECT_FIELD_NUMBER: builtins.int ALLOW_CACHE_FIELD_NUMBER: builtins.int @@ -424,11 +439,12 @@ class ListDataSourcesRequest(google.protobuf.message.Message): pagination: global___PaginationParams | None = ..., sorting: global___SortingParams | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... global___ListDataSourcesRequest = ListDataSourcesRequest +@typing.final class ListDataSourcesResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -444,11 +460,12 @@ class ListDataSourcesResponse(google.protobuf.message.Message): data_sources: collections.abc.Iterable[feast.core.DataSource_pb2.DataSource] | None = ..., pagination: global___PaginationMetadata | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["data_sources", b"data_sources", "pagination", b"pagination"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["data_sources", b"data_sources", "pagination", b"pagination"]) -> None: ... global___ListDataSourcesResponse = ListDataSourcesResponse +@typing.final class DeleteDataSourceRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -465,10 +482,11 @@ class DeleteDataSourceRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "name", b"name", "project", b"project"]) -> None: ... global___DeleteDataSourceRequest = DeleteDataSourceRequest +@typing.final class ApplyFeatureViewRequest(google.protobuf.message.Message): """FeatureViews""" @@ -479,14 +497,14 @@ class ApplyFeatureViewRequest(google.protobuf.message.Message): STREAM_FEATURE_VIEW_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int COMMIT_FIELD_NUMBER: builtins.int + project: builtins.str + commit: builtins.bool @property def feature_view(self) -> feast.core.FeatureView_pb2.FeatureView: ... @property def on_demand_feature_view(self) -> feast.core.OnDemandFeatureView_pb2.OnDemandFeatureView: ... @property def stream_feature_view(self) -> feast.core.StreamFeatureView_pb2.StreamFeatureView: ... - project: builtins.str - commit: builtins.bool def __init__( self, *, @@ -496,12 +514,13 @@ class ApplyFeatureViewRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["base_feature_view", b"base_feature_view", "feature_view", b"feature_view", "on_demand_feature_view", b"on_demand_feature_view", "stream_feature_view", b"stream_feature_view"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["base_feature_view", b"base_feature_view", "commit", b"commit", "feature_view", b"feature_view", "on_demand_feature_view", b"on_demand_feature_view", "project", b"project", "stream_feature_view", b"stream_feature_view"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["base_feature_view", b"base_feature_view"]) -> typing_extensions.Literal["feature_view", "on_demand_feature_view", "stream_feature_view"] | None: ... + def HasField(self, field_name: typing.Literal["base_feature_view", b"base_feature_view", "feature_view", b"feature_view", "on_demand_feature_view", b"on_demand_feature_view", "stream_feature_view", b"stream_feature_view"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["base_feature_view", b"base_feature_view", "commit", b"commit", "feature_view", b"feature_view", "on_demand_feature_view", b"on_demand_feature_view", "project", b"project", "stream_feature_view", b"stream_feature_view"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["base_feature_view", b"base_feature_view"]) -> typing.Literal["feature_view", "on_demand_feature_view", "stream_feature_view"] | None: ... global___ApplyFeatureViewRequest = ApplyFeatureViewRequest +@typing.final class GetFeatureViewRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -518,13 +537,15 @@ class GetFeatureViewRequest(google.protobuf.message.Message): project: builtins.str = ..., allow_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... global___GetFeatureViewRequest = GetFeatureViewRequest +@typing.final class ListFeatureViewsRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -538,7 +559,7 @@ class ListFeatureViewsRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PROJECT_FIELD_NUMBER: builtins.int ALLOW_CACHE_FIELD_NUMBER: builtins.int @@ -562,11 +583,12 @@ class ListFeatureViewsRequest(google.protobuf.message.Message): pagination: global___PaginationParams | None = ..., sorting: global___SortingParams | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... global___ListFeatureViewsRequest = ListFeatureViewsRequest +@typing.final class ListFeatureViewsResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -582,11 +604,12 @@ class ListFeatureViewsResponse(google.protobuf.message.Message): feature_views: collections.abc.Iterable[feast.core.FeatureView_pb2.FeatureView] | None = ..., pagination: global___PaginationMetadata | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["feature_views", b"feature_views", "pagination", b"pagination"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["feature_views", b"feature_views", "pagination", b"pagination"]) -> None: ... global___ListFeatureViewsResponse = ListFeatureViewsResponse +@typing.final class DeleteFeatureViewRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -603,10 +626,11 @@ class DeleteFeatureViewRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "name", b"name", "project", b"project"]) -> None: ... global___DeleteFeatureViewRequest = DeleteFeatureViewRequest +@typing.final class AnyFeatureView(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -626,12 +650,13 @@ class AnyFeatureView(google.protobuf.message.Message): on_demand_feature_view: feast.core.OnDemandFeatureView_pb2.OnDemandFeatureView | None = ..., stream_feature_view: feast.core.StreamFeatureView_pb2.StreamFeatureView | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["any_feature_view", b"any_feature_view", "feature_view", b"feature_view", "on_demand_feature_view", b"on_demand_feature_view", "stream_feature_view", b"stream_feature_view"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["any_feature_view", b"any_feature_view", "feature_view", b"feature_view", "on_demand_feature_view", b"on_demand_feature_view", "stream_feature_view", b"stream_feature_view"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["any_feature_view", b"any_feature_view"]) -> typing_extensions.Literal["feature_view", "on_demand_feature_view", "stream_feature_view"] | None: ... + def HasField(self, field_name: typing.Literal["any_feature_view", b"any_feature_view", "feature_view", b"feature_view", "on_demand_feature_view", b"on_demand_feature_view", "stream_feature_view", b"stream_feature_view"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["any_feature_view", b"any_feature_view", "feature_view", b"feature_view", "on_demand_feature_view", b"on_demand_feature_view", "stream_feature_view", b"stream_feature_view"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["any_feature_view", b"any_feature_view"]) -> typing.Literal["feature_view", "on_demand_feature_view", "stream_feature_view"] | None: ... global___AnyFeatureView = AnyFeatureView +@typing.final class GetAnyFeatureViewRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -648,10 +673,11 @@ class GetAnyFeatureViewRequest(google.protobuf.message.Message): project: builtins.str = ..., allow_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... global___GetAnyFeatureViewRequest = GetAnyFeatureViewRequest +@typing.final class GetAnyFeatureViewResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -663,14 +689,16 @@ class GetAnyFeatureViewResponse(google.protobuf.message.Message): *, any_feature_view: global___AnyFeatureView | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["any_feature_view", b"any_feature_view"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["any_feature_view", b"any_feature_view"]) -> None: ... + def HasField(self, field_name: typing.Literal["any_feature_view", b"any_feature_view"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["any_feature_view", b"any_feature_view"]) -> None: ... global___GetAnyFeatureViewResponse = GetAnyFeatureViewResponse +@typing.final class ListAllFeatureViewsRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -684,7 +712,7 @@ class ListAllFeatureViewsRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PROJECT_FIELD_NUMBER: builtins.int ALLOW_CACHE_FIELD_NUMBER: builtins.int @@ -697,13 +725,13 @@ class ListAllFeatureViewsRequest(google.protobuf.message.Message): SORTING_FIELD_NUMBER: builtins.int project: builtins.str allow_cache: builtins.bool - @property - def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... entity: builtins.str feature: builtins.str feature_service: builtins.str data_source: builtins.str @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + @property def pagination(self) -> global___PaginationParams: ... @property def sorting(self) -> global___SortingParams: ... @@ -720,11 +748,12 @@ class ListAllFeatureViewsRequest(google.protobuf.message.Message): pagination: global___PaginationParams | None = ..., sorting: global___SortingParams | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "data_source", b"data_source", "entity", b"entity", "feature", b"feature", "feature_service", b"feature_service", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "data_source", b"data_source", "entity", b"entity", "feature", b"feature", "feature_service", b"feature_service", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... global___ListAllFeatureViewsRequest = ListAllFeatureViewsRequest +@typing.final class ListAllFeatureViewsResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -740,11 +769,12 @@ class ListAllFeatureViewsResponse(google.protobuf.message.Message): feature_views: collections.abc.Iterable[global___AnyFeatureView] | None = ..., pagination: global___PaginationMetadata | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["feature_views", b"feature_views", "pagination", b"pagination"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["feature_views", b"feature_views", "pagination", b"pagination"]) -> None: ... global___ListAllFeatureViewsResponse = ListAllFeatureViewsResponse +@typing.final class GetStreamFeatureViewRequest(google.protobuf.message.Message): """StreamFeatureView""" @@ -763,13 +793,15 @@ class GetStreamFeatureViewRequest(google.protobuf.message.Message): project: builtins.str = ..., allow_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... global___GetStreamFeatureViewRequest = GetStreamFeatureViewRequest +@typing.final class ListStreamFeatureViewsRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -783,7 +815,7 @@ class ListStreamFeatureViewsRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PROJECT_FIELD_NUMBER: builtins.int ALLOW_CACHE_FIELD_NUMBER: builtins.int @@ -807,11 +839,12 @@ class ListStreamFeatureViewsRequest(google.protobuf.message.Message): pagination: global___PaginationParams | None = ..., sorting: global___SortingParams | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... global___ListStreamFeatureViewsRequest = ListStreamFeatureViewsRequest +@typing.final class ListStreamFeatureViewsResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -827,11 +860,12 @@ class ListStreamFeatureViewsResponse(google.protobuf.message.Message): stream_feature_views: collections.abc.Iterable[feast.core.StreamFeatureView_pb2.StreamFeatureView] | None = ..., pagination: global___PaginationMetadata | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "stream_feature_views", b"stream_feature_views"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["pagination", b"pagination", "stream_feature_views", b"stream_feature_views"]) -> None: ... global___ListStreamFeatureViewsResponse = ListStreamFeatureViewsResponse +@typing.final class GetOnDemandFeatureViewRequest(google.protobuf.message.Message): """OnDemandFeatureView""" @@ -850,13 +884,15 @@ class GetOnDemandFeatureViewRequest(google.protobuf.message.Message): project: builtins.str = ..., allow_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... global___GetOnDemandFeatureViewRequest = GetOnDemandFeatureViewRequest +@typing.final class ListOnDemandFeatureViewsRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -870,7 +906,7 @@ class ListOnDemandFeatureViewsRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PROJECT_FIELD_NUMBER: builtins.int ALLOW_CACHE_FIELD_NUMBER: builtins.int @@ -894,11 +930,12 @@ class ListOnDemandFeatureViewsRequest(google.protobuf.message.Message): pagination: global___PaginationParams | None = ..., sorting: global___SortingParams | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... global___ListOnDemandFeatureViewsRequest = ListOnDemandFeatureViewsRequest +@typing.final class ListOnDemandFeatureViewsResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -914,11 +951,12 @@ class ListOnDemandFeatureViewsResponse(google.protobuf.message.Message): on_demand_feature_views: collections.abc.Iterable[feast.core.OnDemandFeatureView_pb2.OnDemandFeatureView] | None = ..., pagination: global___PaginationMetadata | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["on_demand_feature_views", b"on_demand_feature_views", "pagination", b"pagination"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["on_demand_feature_views", b"on_demand_feature_views", "pagination", b"pagination"]) -> None: ... global___ListOnDemandFeatureViewsResponse = ListOnDemandFeatureViewsResponse +@typing.final class ApplyFeatureServiceRequest(google.protobuf.message.Message): """FeatureServices""" @@ -927,10 +965,10 @@ class ApplyFeatureServiceRequest(google.protobuf.message.Message): FEATURE_SERVICE_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int COMMIT_FIELD_NUMBER: builtins.int - @property - def feature_service(self) -> feast.core.FeatureService_pb2.FeatureService: ... project: builtins.str commit: builtins.bool + @property + def feature_service(self) -> feast.core.FeatureService_pb2.FeatureService: ... def __init__( self, *, @@ -938,11 +976,12 @@ class ApplyFeatureServiceRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["feature_service", b"feature_service"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "feature_service", b"feature_service", "project", b"project"]) -> None: ... + def HasField(self, field_name: typing.Literal["feature_service", b"feature_service"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "feature_service", b"feature_service", "project", b"project"]) -> None: ... global___ApplyFeatureServiceRequest = ApplyFeatureServiceRequest +@typing.final class GetFeatureServiceRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -959,13 +998,15 @@ class GetFeatureServiceRequest(google.protobuf.message.Message): project: builtins.str = ..., allow_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... global___GetFeatureServiceRequest = GetFeatureServiceRequest +@typing.final class ListFeatureServicesRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -979,7 +1020,7 @@ class ListFeatureServicesRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PROJECT_FIELD_NUMBER: builtins.int ALLOW_CACHE_FIELD_NUMBER: builtins.int @@ -989,9 +1030,9 @@ class ListFeatureServicesRequest(google.protobuf.message.Message): SORTING_FIELD_NUMBER: builtins.int project: builtins.str allow_cache: builtins.bool + feature_view: builtins.str @property def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... - feature_view: builtins.str @property def pagination(self) -> global___PaginationParams: ... @property @@ -1006,11 +1047,12 @@ class ListFeatureServicesRequest(google.protobuf.message.Message): pagination: global___PaginationParams | None = ..., sorting: global___SortingParams | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "feature_view", b"feature_view", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "feature_view", b"feature_view", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... global___ListFeatureServicesRequest = ListFeatureServicesRequest +@typing.final class ListFeatureServicesResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1026,11 +1068,12 @@ class ListFeatureServicesResponse(google.protobuf.message.Message): feature_services: collections.abc.Iterable[feast.core.FeatureService_pb2.FeatureService] | None = ..., pagination: global___PaginationMetadata | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["feature_services", b"feature_services", "pagination", b"pagination"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["feature_services", b"feature_services", "pagination", b"pagination"]) -> None: ... global___ListFeatureServicesResponse = ListFeatureServicesResponse +@typing.final class DeleteFeatureServiceRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1047,10 +1090,11 @@ class DeleteFeatureServiceRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "name", b"name", "project", b"project"]) -> None: ... global___DeleteFeatureServiceRequest = DeleteFeatureServiceRequest +@typing.final class ApplySavedDatasetRequest(google.protobuf.message.Message): """SavedDataset""" @@ -1059,10 +1103,10 @@ class ApplySavedDatasetRequest(google.protobuf.message.Message): SAVED_DATASET_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int COMMIT_FIELD_NUMBER: builtins.int - @property - def saved_dataset(self) -> feast.core.SavedDataset_pb2.SavedDataset: ... project: builtins.str commit: builtins.bool + @property + def saved_dataset(self) -> feast.core.SavedDataset_pb2.SavedDataset: ... def __init__( self, *, @@ -1070,11 +1114,12 @@ class ApplySavedDatasetRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["saved_dataset", b"saved_dataset"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "project", b"project", "saved_dataset", b"saved_dataset"]) -> None: ... + def HasField(self, field_name: typing.Literal["saved_dataset", b"saved_dataset"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "project", b"project", "saved_dataset", b"saved_dataset"]) -> None: ... global___ApplySavedDatasetRequest = ApplySavedDatasetRequest +@typing.final class GetSavedDatasetRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1091,13 +1136,15 @@ class GetSavedDatasetRequest(google.protobuf.message.Message): project: builtins.str = ..., allow_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... global___GetSavedDatasetRequest = GetSavedDatasetRequest +@typing.final class ListSavedDatasetsRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1111,7 +1158,7 @@ class ListSavedDatasetsRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PROJECT_FIELD_NUMBER: builtins.int ALLOW_CACHE_FIELD_NUMBER: builtins.int @@ -1135,11 +1182,12 @@ class ListSavedDatasetsRequest(google.protobuf.message.Message): pagination: global___PaginationParams | None = ..., sorting: global___SortingParams | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... global___ListSavedDatasetsRequest = ListSavedDatasetsRequest +@typing.final class ListSavedDatasetsResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1155,11 +1203,12 @@ class ListSavedDatasetsResponse(google.protobuf.message.Message): saved_datasets: collections.abc.Iterable[feast.core.SavedDataset_pb2.SavedDataset] | None = ..., pagination: global___PaginationMetadata | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "saved_datasets", b"saved_datasets"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["pagination", b"pagination", "saved_datasets", b"saved_datasets"]) -> None: ... global___ListSavedDatasetsResponse = ListSavedDatasetsResponse +@typing.final class DeleteSavedDatasetRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1176,10 +1225,11 @@ class DeleteSavedDatasetRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "name", b"name", "project", b"project"]) -> None: ... global___DeleteSavedDatasetRequest = DeleteSavedDatasetRequest +@typing.final class ApplyValidationReferenceRequest(google.protobuf.message.Message): """ValidationReference""" @@ -1188,10 +1238,10 @@ class ApplyValidationReferenceRequest(google.protobuf.message.Message): VALIDATION_REFERENCE_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int COMMIT_FIELD_NUMBER: builtins.int - @property - def validation_reference(self) -> feast.core.ValidationProfile_pb2.ValidationReference: ... project: builtins.str commit: builtins.bool + @property + def validation_reference(self) -> feast.core.ValidationProfile_pb2.ValidationReference: ... def __init__( self, *, @@ -1199,11 +1249,12 @@ class ApplyValidationReferenceRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["validation_reference", b"validation_reference"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "project", b"project", "validation_reference", b"validation_reference"]) -> None: ... + def HasField(self, field_name: typing.Literal["validation_reference", b"validation_reference"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "project", b"project", "validation_reference", b"validation_reference"]) -> None: ... global___ApplyValidationReferenceRequest = ApplyValidationReferenceRequest +@typing.final class GetValidationReferenceRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1220,13 +1271,15 @@ class GetValidationReferenceRequest(google.protobuf.message.Message): project: builtins.str = ..., allow_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... global___GetValidationReferenceRequest = GetValidationReferenceRequest +@typing.final class ListValidationReferencesRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1240,7 +1293,7 @@ class ListValidationReferencesRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PROJECT_FIELD_NUMBER: builtins.int ALLOW_CACHE_FIELD_NUMBER: builtins.int @@ -1264,11 +1317,12 @@ class ListValidationReferencesRequest(google.protobuf.message.Message): pagination: global___PaginationParams | None = ..., sorting: global___SortingParams | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... global___ListValidationReferencesRequest = ListValidationReferencesRequest +@typing.final class ListValidationReferencesResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1284,11 +1338,12 @@ class ListValidationReferencesResponse(google.protobuf.message.Message): validation_references: collections.abc.Iterable[feast.core.ValidationProfile_pb2.ValidationReference] | None = ..., pagination: global___PaginationMetadata | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "validation_references", b"validation_references"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["pagination", b"pagination", "validation_references", b"validation_references"]) -> None: ... global___ListValidationReferencesResponse = ListValidationReferencesResponse +@typing.final class DeleteValidationReferenceRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1305,10 +1360,11 @@ class DeleteValidationReferenceRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "name", b"name", "project", b"project"]) -> None: ... global___DeleteValidationReferenceRequest = DeleteValidationReferenceRequest +@typing.final class ApplyPermissionRequest(google.protobuf.message.Message): """Permissions""" @@ -1317,10 +1373,10 @@ class ApplyPermissionRequest(google.protobuf.message.Message): PERMISSION_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int COMMIT_FIELD_NUMBER: builtins.int - @property - def permission(self) -> feast.core.Permission_pb2.Permission: ... project: builtins.str commit: builtins.bool + @property + def permission(self) -> feast.core.Permission_pb2.Permission: ... def __init__( self, *, @@ -1328,11 +1384,12 @@ class ApplyPermissionRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["permission", b"permission"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "permission", b"permission", "project", b"project"]) -> None: ... + def HasField(self, field_name: typing.Literal["permission", b"permission"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "permission", b"permission", "project", b"project"]) -> None: ... global___ApplyPermissionRequest = ApplyPermissionRequest +@typing.final class GetPermissionRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1349,13 +1406,15 @@ class GetPermissionRequest(google.protobuf.message.Message): project: builtins.str = ..., allow_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "name", b"name", "project", b"project"]) -> None: ... global___GetPermissionRequest = GetPermissionRequest +@typing.final class ListPermissionsRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1369,7 +1428,7 @@ class ListPermissionsRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PROJECT_FIELD_NUMBER: builtins.int ALLOW_CACHE_FIELD_NUMBER: builtins.int @@ -1393,11 +1452,12 @@ class ListPermissionsRequest(google.protobuf.message.Message): pagination: global___PaginationParams | None = ..., sorting: global___SortingParams | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "project", b"project", "sorting", b"sorting", "tags", b"tags"]) -> None: ... global___ListPermissionsRequest = ListPermissionsRequest +@typing.final class ListPermissionsResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1413,11 +1473,12 @@ class ListPermissionsResponse(google.protobuf.message.Message): permissions: collections.abc.Iterable[feast.core.Permission_pb2.Permission] | None = ..., pagination: global___PaginationMetadata | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "permissions", b"permissions"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["pagination", b"pagination", "permissions", b"permissions"]) -> None: ... global___ListPermissionsResponse = ListPermissionsResponse +@typing.final class DeletePermissionRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1434,10 +1495,11 @@ class DeletePermissionRequest(google.protobuf.message.Message): project: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "name", b"name", "project", b"project"]) -> None: ... global___DeletePermissionRequest = DeletePermissionRequest +@typing.final class ApplyProjectRequest(google.protobuf.message.Message): """Projects""" @@ -1445,20 +1507,21 @@ class ApplyProjectRequest(google.protobuf.message.Message): PROJECT_FIELD_NUMBER: builtins.int COMMIT_FIELD_NUMBER: builtins.int + commit: builtins.bool @property def project(self) -> feast.core.Project_pb2.Project: ... - commit: builtins.bool def __init__( self, *, project: feast.core.Project_pb2.Project | None = ..., commit: builtins.bool = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["project", b"project"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "project", b"project"]) -> None: ... + def HasField(self, field_name: typing.Literal["project", b"project"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "project", b"project"]) -> None: ... global___ApplyProjectRequest = ApplyProjectRequest +@typing.final class GetProjectRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1472,13 +1535,15 @@ class GetProjectRequest(google.protobuf.message.Message): name: builtins.str = ..., allow_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "name", b"name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "name", b"name"]) -> None: ... global___GetProjectRequest = GetProjectRequest +@typing.final class ListProjectsRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1492,7 +1557,7 @@ class ListProjectsRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... ALLOW_CACHE_FIELD_NUMBER: builtins.int TAGS_FIELD_NUMBER: builtins.int @@ -1513,11 +1578,12 @@ class ListProjectsRequest(google.protobuf.message.Message): pagination: global___PaginationParams | None = ..., sorting: global___SortingParams | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "sorting", b"sorting", "tags", b"tags"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "pagination", b"pagination", "sorting", b"sorting", "tags", b"tags"]) -> None: ... global___ListProjectsRequest = ListProjectsRequest +@typing.final class ListProjectsResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1533,11 +1599,12 @@ class ListProjectsResponse(google.protobuf.message.Message): projects: collections.abc.Iterable[feast.core.Project_pb2.Project] | None = ..., pagination: global___PaginationMetadata | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "projects", b"projects"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["pagination", b"pagination", "projects", b"projects"]) -> None: ... global___ListProjectsResponse = ListProjectsResponse +@typing.final class DeleteProjectRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1551,10 +1618,11 @@ class DeleteProjectRequest(google.protobuf.message.Message): name: builtins.str = ..., commit: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "name", b"name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["commit", b"commit", "name", b"name"]) -> None: ... global___DeleteProjectRequest = DeleteProjectRequest +@typing.final class EntityReference(google.protobuf.message.Message): """Lineage""" @@ -1571,10 +1639,11 @@ class EntityReference(google.protobuf.message.Message): type: builtins.str = ..., name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "type", b"type"]) -> None: ... + def ClearField(self, field_name: typing.Literal["name", b"name", "type", b"type"]) -> None: ... global___EntityReference = EntityReference +@typing.final class EntityRelation(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1590,11 +1659,12 @@ class EntityRelation(google.protobuf.message.Message): source: global___EntityReference | None = ..., target: global___EntityReference | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["source", b"source", "target", b"target"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["source", b"source", "target", b"target"]) -> None: ... + def HasField(self, field_name: typing.Literal["source", b"source", "target", b"target"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["source", b"source", "target", b"target"]) -> None: ... global___EntityRelation = EntityRelation +@typing.final class GetRegistryLineageRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1622,11 +1692,12 @@ class GetRegistryLineageRequest(google.protobuf.message.Message): pagination: global___PaginationParams | None = ..., sorting: global___SortingParams | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "filter_object_name", b"filter_object_name", "filter_object_type", b"filter_object_type", "pagination", b"pagination", "project", b"project", "sorting", b"sorting"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "filter_object_name", b"filter_object_name", "filter_object_type", b"filter_object_type", "pagination", b"pagination", "project", b"project", "sorting", b"sorting"]) -> None: ... global___GetRegistryLineageRequest = GetRegistryLineageRequest +@typing.final class GetRegistryLineageResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1650,11 +1721,12 @@ class GetRegistryLineageResponse(google.protobuf.message.Message): relationships_pagination: global___PaginationMetadata | None = ..., indirect_relationships_pagination: global___PaginationMetadata | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["indirect_relationships_pagination", b"indirect_relationships_pagination", "relationships_pagination", b"relationships_pagination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["indirect_relationships", b"indirect_relationships", "indirect_relationships_pagination", b"indirect_relationships_pagination", "relationships", b"relationships", "relationships_pagination", b"relationships_pagination"]) -> None: ... + def HasField(self, field_name: typing.Literal["indirect_relationships_pagination", b"indirect_relationships_pagination", "relationships_pagination", b"relationships_pagination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["indirect_relationships", b"indirect_relationships", "indirect_relationships_pagination", b"indirect_relationships_pagination", "relationships", b"relationships", "relationships_pagination", b"relationships_pagination"]) -> None: ... global___GetRegistryLineageResponse = GetRegistryLineageResponse +@typing.final class GetObjectRelationshipsRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1685,11 +1757,12 @@ class GetObjectRelationshipsRequest(google.protobuf.message.Message): pagination: global___PaginationParams | None = ..., sorting: global___SortingParams | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "include_indirect", b"include_indirect", "object_name", b"object_name", "object_type", b"object_type", "pagination", b"pagination", "project", b"project", "sorting", b"sorting"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "include_indirect", b"include_indirect", "object_name", b"object_name", "object_type", b"object_type", "pagination", b"pagination", "project", b"project", "sorting", b"sorting"]) -> None: ... global___GetObjectRelationshipsRequest = GetObjectRelationshipsRequest +@typing.final class GetObjectRelationshipsResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1705,16 +1778,18 @@ class GetObjectRelationshipsResponse(google.protobuf.message.Message): relationships: collections.abc.Iterable[global___EntityRelation] | None = ..., pagination: global___PaginationMetadata | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "relationships", b"relationships"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["pagination", b"pagination", "relationships", b"relationships"]) -> None: ... global___GetObjectRelationshipsResponse = GetObjectRelationshipsResponse +@typing.final class Feature(google.protobuf.message.Message): """Feature messages""" DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1728,7 +1803,7 @@ class Feature(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int FEATURE_VIEW_FIELD_NUMBER: builtins.int @@ -1761,11 +1836,12 @@ class Feature(google.protobuf.message.Message): last_updated_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "description", b"description", "feature_view", b"feature_view", "last_updated_timestamp", b"last_updated_timestamp", "name", b"name", "owner", b"owner", "tags", b"tags", "type", b"type"]) -> None: ... + def HasField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["created_timestamp", b"created_timestamp", "description", b"description", "feature_view", b"feature_view", "last_updated_timestamp", b"last_updated_timestamp", "name", b"name", "owner", b"owner", "tags", b"tags", "type", b"type"]) -> None: ... global___Feature = Feature +@typing.final class ListFeaturesRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1793,11 +1869,12 @@ class ListFeaturesRequest(google.protobuf.message.Message): pagination: global___PaginationParams | None = ..., sorting: global___SortingParams | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "feature_view", b"feature_view", "name", b"name", "pagination", b"pagination", "project", b"project", "sorting", b"sorting"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination", "sorting", b"sorting"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "feature_view", b"feature_view", "name", b"name", "pagination", b"pagination", "project", b"project", "sorting", b"sorting"]) -> None: ... global___ListFeaturesRequest = ListFeaturesRequest +@typing.final class ListFeaturesResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1813,11 +1890,12 @@ class ListFeaturesResponse(google.protobuf.message.Message): features: collections.abc.Iterable[global___Feature] | None = ..., pagination: global___PaginationMetadata | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pagination", b"pagination"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["features", b"features", "pagination", b"pagination"]) -> None: ... + def HasField(self, field_name: typing.Literal["pagination", b"pagination"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["features", b"features", "pagination", b"pagination"]) -> None: ... global___ListFeaturesResponse = ListFeaturesResponse +@typing.final class GetFeatureRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1837,6 +1915,6 @@ class GetFeatureRequest(google.protobuf.message.Message): name: builtins.str = ..., allow_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "feature_view", b"feature_view", "name", b"name", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_cache", b"allow_cache", "feature_view", b"feature_view", "name", b"name", "project", b"project"]) -> None: ... global___GetFeatureRequest = GetFeatureRequest diff --git a/sdk/python/feast/protos/feast/registry/RegistryServer_pb2_grpc.py b/sdk/python/feast/protos/feast/registry/RegistryServer_pb2_grpc.py index 84de666b6b1..140b2b79a61 100644 --- a/sdk/python/feast/protos/feast/registry/RegistryServer_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/registry/RegistryServer_pb2_grpc.py @@ -1,6 +1,7 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings from feast.protos.feast.core import DataSource_pb2 as feast_dot_core_dot_DataSource__pb2 from feast.protos.feast.core import Entity_pb2 as feast_dot_core_dot_Entity__pb2 @@ -17,6 +18,25 @@ from feast.protos.feast.registry import RegistryServer_pb2 as feast_dot_registry_dot_RegistryServer__pb2 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/registry/RegistryServer_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + class RegistryServerStub(object): """Missing associated documentation comment in .proto file.""" @@ -31,247 +51,247 @@ def __init__(self, channel): '/feast.registry.RegistryServer/ApplyEntity', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyEntityRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.GetEntity = channel.unary_unary( '/feast.registry.RegistryServer/GetEntity', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetEntityRequest.SerializeToString, response_deserializer=feast_dot_core_dot_Entity__pb2.Entity.FromString, - ) + _registered_method=True) self.ListEntities = channel.unary_unary( '/feast.registry.RegistryServer/ListEntities', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListEntitiesRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListEntitiesResponse.FromString, - ) + _registered_method=True) self.DeleteEntity = channel.unary_unary( '/feast.registry.RegistryServer/DeleteEntity', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.DeleteEntityRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.ApplyDataSource = channel.unary_unary( '/feast.registry.RegistryServer/ApplyDataSource', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyDataSourceRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.GetDataSource = channel.unary_unary( '/feast.registry.RegistryServer/GetDataSource', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetDataSourceRequest.SerializeToString, response_deserializer=feast_dot_core_dot_DataSource__pb2.DataSource.FromString, - ) + _registered_method=True) self.ListDataSources = channel.unary_unary( '/feast.registry.RegistryServer/ListDataSources', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListDataSourcesRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListDataSourcesResponse.FromString, - ) + _registered_method=True) self.DeleteDataSource = channel.unary_unary( '/feast.registry.RegistryServer/DeleteDataSource', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.DeleteDataSourceRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.ApplyFeatureView = channel.unary_unary( '/feast.registry.RegistryServer/ApplyFeatureView', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyFeatureViewRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.DeleteFeatureView = channel.unary_unary( '/feast.registry.RegistryServer/DeleteFeatureView', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.DeleteFeatureViewRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.GetAnyFeatureView = channel.unary_unary( '/feast.registry.RegistryServer/GetAnyFeatureView', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetAnyFeatureViewRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetAnyFeatureViewResponse.FromString, - ) + _registered_method=True) self.ListAllFeatureViews = channel.unary_unary( '/feast.registry.RegistryServer/ListAllFeatureViews', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListAllFeatureViewsRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListAllFeatureViewsResponse.FromString, - ) + _registered_method=True) self.GetFeatureView = channel.unary_unary( '/feast.registry.RegistryServer/GetFeatureView', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetFeatureViewRequest.SerializeToString, response_deserializer=feast_dot_core_dot_FeatureView__pb2.FeatureView.FromString, - ) + _registered_method=True) self.ListFeatureViews = channel.unary_unary( '/feast.registry.RegistryServer/ListFeatureViews', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListFeatureViewsRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListFeatureViewsResponse.FromString, - ) + _registered_method=True) self.GetStreamFeatureView = channel.unary_unary( '/feast.registry.RegistryServer/GetStreamFeatureView', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetStreamFeatureViewRequest.SerializeToString, response_deserializer=feast_dot_core_dot_StreamFeatureView__pb2.StreamFeatureView.FromString, - ) + _registered_method=True) self.ListStreamFeatureViews = channel.unary_unary( '/feast.registry.RegistryServer/ListStreamFeatureViews', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListStreamFeatureViewsRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListStreamFeatureViewsResponse.FromString, - ) + _registered_method=True) self.GetOnDemandFeatureView = channel.unary_unary( '/feast.registry.RegistryServer/GetOnDemandFeatureView', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetOnDemandFeatureViewRequest.SerializeToString, response_deserializer=feast_dot_core_dot_OnDemandFeatureView__pb2.OnDemandFeatureView.FromString, - ) + _registered_method=True) self.ListOnDemandFeatureViews = channel.unary_unary( '/feast.registry.RegistryServer/ListOnDemandFeatureViews', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListOnDemandFeatureViewsRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListOnDemandFeatureViewsResponse.FromString, - ) + _registered_method=True) self.ApplyFeatureService = channel.unary_unary( '/feast.registry.RegistryServer/ApplyFeatureService', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyFeatureServiceRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.GetFeatureService = channel.unary_unary( '/feast.registry.RegistryServer/GetFeatureService', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetFeatureServiceRequest.SerializeToString, response_deserializer=feast_dot_core_dot_FeatureService__pb2.FeatureService.FromString, - ) + _registered_method=True) self.ListFeatureServices = channel.unary_unary( '/feast.registry.RegistryServer/ListFeatureServices', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListFeatureServicesRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListFeatureServicesResponse.FromString, - ) + _registered_method=True) self.DeleteFeatureService = channel.unary_unary( '/feast.registry.RegistryServer/DeleteFeatureService', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.DeleteFeatureServiceRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.ApplySavedDataset = channel.unary_unary( '/feast.registry.RegistryServer/ApplySavedDataset', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ApplySavedDatasetRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.GetSavedDataset = channel.unary_unary( '/feast.registry.RegistryServer/GetSavedDataset', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetSavedDatasetRequest.SerializeToString, response_deserializer=feast_dot_core_dot_SavedDataset__pb2.SavedDataset.FromString, - ) + _registered_method=True) self.ListSavedDatasets = channel.unary_unary( '/feast.registry.RegistryServer/ListSavedDatasets', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListSavedDatasetsRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListSavedDatasetsResponse.FromString, - ) + _registered_method=True) self.DeleteSavedDataset = channel.unary_unary( '/feast.registry.RegistryServer/DeleteSavedDataset', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.DeleteSavedDatasetRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.ApplyValidationReference = channel.unary_unary( '/feast.registry.RegistryServer/ApplyValidationReference', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyValidationReferenceRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.GetValidationReference = channel.unary_unary( '/feast.registry.RegistryServer/GetValidationReference', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetValidationReferenceRequest.SerializeToString, response_deserializer=feast_dot_core_dot_ValidationProfile__pb2.ValidationReference.FromString, - ) + _registered_method=True) self.ListValidationReferences = channel.unary_unary( '/feast.registry.RegistryServer/ListValidationReferences', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListValidationReferencesRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListValidationReferencesResponse.FromString, - ) + _registered_method=True) self.DeleteValidationReference = channel.unary_unary( '/feast.registry.RegistryServer/DeleteValidationReference', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.DeleteValidationReferenceRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.ApplyPermission = channel.unary_unary( '/feast.registry.RegistryServer/ApplyPermission', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyPermissionRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.GetPermission = channel.unary_unary( '/feast.registry.RegistryServer/GetPermission', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetPermissionRequest.SerializeToString, response_deserializer=feast_dot_core_dot_Permission__pb2.Permission.FromString, - ) + _registered_method=True) self.ListPermissions = channel.unary_unary( '/feast.registry.RegistryServer/ListPermissions', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListPermissionsRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListPermissionsResponse.FromString, - ) + _registered_method=True) self.DeletePermission = channel.unary_unary( '/feast.registry.RegistryServer/DeletePermission', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.DeletePermissionRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.ApplyProject = channel.unary_unary( '/feast.registry.RegistryServer/ApplyProject', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyProjectRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.GetProject = channel.unary_unary( '/feast.registry.RegistryServer/GetProject', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetProjectRequest.SerializeToString, response_deserializer=feast_dot_core_dot_Project__pb2.Project.FromString, - ) + _registered_method=True) self.ListProjects = channel.unary_unary( '/feast.registry.RegistryServer/ListProjects', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListProjectsRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListProjectsResponse.FromString, - ) + _registered_method=True) self.DeleteProject = channel.unary_unary( '/feast.registry.RegistryServer/DeleteProject', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.DeleteProjectRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.ApplyMaterialization = channel.unary_unary( '/feast.registry.RegistryServer/ApplyMaterialization', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyMaterializationRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.ListProjectMetadata = channel.unary_unary( '/feast.registry.RegistryServer/ListProjectMetadata', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListProjectMetadataRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListProjectMetadataResponse.FromString, - ) + _registered_method=True) self.UpdateInfra = channel.unary_unary( '/feast.registry.RegistryServer/UpdateInfra', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.UpdateInfraRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.GetInfra = channel.unary_unary( '/feast.registry.RegistryServer/GetInfra', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetInfraRequest.SerializeToString, response_deserializer=feast_dot_core_dot_InfraObject__pb2.Infra.FromString, - ) + _registered_method=True) self.Commit = channel.unary_unary( '/feast.registry.RegistryServer/Commit', request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.Refresh = channel.unary_unary( '/feast.registry.RegistryServer/Refresh', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.RefreshRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, - ) + _registered_method=True) self.Proto = channel.unary_unary( '/feast.registry.RegistryServer/Proto', request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, response_deserializer=feast_dot_core_dot_Registry__pb2.Registry.FromString, - ) + _registered_method=True) self.GetRegistryLineage = channel.unary_unary( '/feast.registry.RegistryServer/GetRegistryLineage', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetRegistryLineageRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetRegistryLineageResponse.FromString, - ) + _registered_method=True) self.GetObjectRelationships = channel.unary_unary( '/feast.registry.RegistryServer/GetObjectRelationships', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetObjectRelationshipsRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetObjectRelationshipsResponse.FromString, - ) + _registered_method=True) self.ListFeatures = channel.unary_unary( '/feast.registry.RegistryServer/ListFeatures', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListFeaturesRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListFeaturesResponse.FromString, - ) + _registered_method=True) self.GetFeature = channel.unary_unary( '/feast.registry.RegistryServer/GetFeature', request_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetFeatureRequest.SerializeToString, response_deserializer=feast_dot_registry_dot_RegistryServer__pb2.Feature.FromString, - ) + _registered_method=True) class RegistryServerServicer(object): @@ -836,6 +856,7 @@ def add_RegistryServerServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'feast.registry.RegistryServer', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('feast.registry.RegistryServer', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -853,11 +874,21 @@ def ApplyEntity(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ApplyEntity', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ApplyEntity', feast_dot_registry_dot_RegistryServer__pb2.ApplyEntityRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetEntity(request, @@ -870,11 +901,21 @@ def GetEntity(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetEntity', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetEntity', feast_dot_registry_dot_RegistryServer__pb2.GetEntityRequest.SerializeToString, feast_dot_core_dot_Entity__pb2.Entity.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ListEntities(request, @@ -887,11 +928,21 @@ def ListEntities(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ListEntities', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ListEntities', feast_dot_registry_dot_RegistryServer__pb2.ListEntitiesRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.ListEntitiesResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def DeleteEntity(request, @@ -904,11 +955,21 @@ def DeleteEntity(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/DeleteEntity', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/DeleteEntity', feast_dot_registry_dot_RegistryServer__pb2.DeleteEntityRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ApplyDataSource(request, @@ -921,11 +982,21 @@ def ApplyDataSource(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ApplyDataSource', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ApplyDataSource', feast_dot_registry_dot_RegistryServer__pb2.ApplyDataSourceRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetDataSource(request, @@ -938,11 +1009,21 @@ def GetDataSource(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetDataSource', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetDataSource', feast_dot_registry_dot_RegistryServer__pb2.GetDataSourceRequest.SerializeToString, feast_dot_core_dot_DataSource__pb2.DataSource.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ListDataSources(request, @@ -955,11 +1036,21 @@ def ListDataSources(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ListDataSources', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ListDataSources', feast_dot_registry_dot_RegistryServer__pb2.ListDataSourcesRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.ListDataSourcesResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def DeleteDataSource(request, @@ -972,11 +1063,21 @@ def DeleteDataSource(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/DeleteDataSource', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/DeleteDataSource', feast_dot_registry_dot_RegistryServer__pb2.DeleteDataSourceRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ApplyFeatureView(request, @@ -989,11 +1090,21 @@ def ApplyFeatureView(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ApplyFeatureView', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ApplyFeatureView', feast_dot_registry_dot_RegistryServer__pb2.ApplyFeatureViewRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def DeleteFeatureView(request, @@ -1006,11 +1117,21 @@ def DeleteFeatureView(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/DeleteFeatureView', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/DeleteFeatureView', feast_dot_registry_dot_RegistryServer__pb2.DeleteFeatureViewRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetAnyFeatureView(request, @@ -1023,11 +1144,21 @@ def GetAnyFeatureView(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetAnyFeatureView', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetAnyFeatureView', feast_dot_registry_dot_RegistryServer__pb2.GetAnyFeatureViewRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.GetAnyFeatureViewResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ListAllFeatureViews(request, @@ -1040,11 +1171,21 @@ def ListAllFeatureViews(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ListAllFeatureViews', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ListAllFeatureViews', feast_dot_registry_dot_RegistryServer__pb2.ListAllFeatureViewsRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.ListAllFeatureViewsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetFeatureView(request, @@ -1057,11 +1198,21 @@ def GetFeatureView(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetFeatureView', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetFeatureView', feast_dot_registry_dot_RegistryServer__pb2.GetFeatureViewRequest.SerializeToString, feast_dot_core_dot_FeatureView__pb2.FeatureView.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ListFeatureViews(request, @@ -1074,11 +1225,21 @@ def ListFeatureViews(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ListFeatureViews', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ListFeatureViews', feast_dot_registry_dot_RegistryServer__pb2.ListFeatureViewsRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.ListFeatureViewsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetStreamFeatureView(request, @@ -1091,11 +1252,21 @@ def GetStreamFeatureView(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetStreamFeatureView', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetStreamFeatureView', feast_dot_registry_dot_RegistryServer__pb2.GetStreamFeatureViewRequest.SerializeToString, feast_dot_core_dot_StreamFeatureView__pb2.StreamFeatureView.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ListStreamFeatureViews(request, @@ -1108,11 +1279,21 @@ def ListStreamFeatureViews(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ListStreamFeatureViews', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ListStreamFeatureViews', feast_dot_registry_dot_RegistryServer__pb2.ListStreamFeatureViewsRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.ListStreamFeatureViewsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetOnDemandFeatureView(request, @@ -1125,11 +1306,21 @@ def GetOnDemandFeatureView(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetOnDemandFeatureView', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetOnDemandFeatureView', feast_dot_registry_dot_RegistryServer__pb2.GetOnDemandFeatureViewRequest.SerializeToString, feast_dot_core_dot_OnDemandFeatureView__pb2.OnDemandFeatureView.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ListOnDemandFeatureViews(request, @@ -1142,11 +1333,21 @@ def ListOnDemandFeatureViews(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ListOnDemandFeatureViews', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ListOnDemandFeatureViews', feast_dot_registry_dot_RegistryServer__pb2.ListOnDemandFeatureViewsRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.ListOnDemandFeatureViewsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ApplyFeatureService(request, @@ -1159,11 +1360,21 @@ def ApplyFeatureService(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ApplyFeatureService', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ApplyFeatureService', feast_dot_registry_dot_RegistryServer__pb2.ApplyFeatureServiceRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetFeatureService(request, @@ -1176,11 +1387,21 @@ def GetFeatureService(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetFeatureService', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetFeatureService', feast_dot_registry_dot_RegistryServer__pb2.GetFeatureServiceRequest.SerializeToString, feast_dot_core_dot_FeatureService__pb2.FeatureService.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ListFeatureServices(request, @@ -1193,11 +1414,21 @@ def ListFeatureServices(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ListFeatureServices', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ListFeatureServices', feast_dot_registry_dot_RegistryServer__pb2.ListFeatureServicesRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.ListFeatureServicesResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def DeleteFeatureService(request, @@ -1210,11 +1441,21 @@ def DeleteFeatureService(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/DeleteFeatureService', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/DeleteFeatureService', feast_dot_registry_dot_RegistryServer__pb2.DeleteFeatureServiceRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ApplySavedDataset(request, @@ -1227,11 +1468,21 @@ def ApplySavedDataset(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ApplySavedDataset', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ApplySavedDataset', feast_dot_registry_dot_RegistryServer__pb2.ApplySavedDatasetRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetSavedDataset(request, @@ -1244,11 +1495,21 @@ def GetSavedDataset(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetSavedDataset', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetSavedDataset', feast_dot_registry_dot_RegistryServer__pb2.GetSavedDatasetRequest.SerializeToString, feast_dot_core_dot_SavedDataset__pb2.SavedDataset.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ListSavedDatasets(request, @@ -1261,11 +1522,21 @@ def ListSavedDatasets(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ListSavedDatasets', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ListSavedDatasets', feast_dot_registry_dot_RegistryServer__pb2.ListSavedDatasetsRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.ListSavedDatasetsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def DeleteSavedDataset(request, @@ -1278,11 +1549,21 @@ def DeleteSavedDataset(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/DeleteSavedDataset', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/DeleteSavedDataset', feast_dot_registry_dot_RegistryServer__pb2.DeleteSavedDatasetRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ApplyValidationReference(request, @@ -1295,11 +1576,21 @@ def ApplyValidationReference(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ApplyValidationReference', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ApplyValidationReference', feast_dot_registry_dot_RegistryServer__pb2.ApplyValidationReferenceRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetValidationReference(request, @@ -1312,11 +1603,21 @@ def GetValidationReference(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetValidationReference', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetValidationReference', feast_dot_registry_dot_RegistryServer__pb2.GetValidationReferenceRequest.SerializeToString, feast_dot_core_dot_ValidationProfile__pb2.ValidationReference.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ListValidationReferences(request, @@ -1329,11 +1630,21 @@ def ListValidationReferences(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ListValidationReferences', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ListValidationReferences', feast_dot_registry_dot_RegistryServer__pb2.ListValidationReferencesRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.ListValidationReferencesResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def DeleteValidationReference(request, @@ -1346,11 +1657,21 @@ def DeleteValidationReference(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/DeleteValidationReference', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/DeleteValidationReference', feast_dot_registry_dot_RegistryServer__pb2.DeleteValidationReferenceRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ApplyPermission(request, @@ -1363,11 +1684,21 @@ def ApplyPermission(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ApplyPermission', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ApplyPermission', feast_dot_registry_dot_RegistryServer__pb2.ApplyPermissionRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetPermission(request, @@ -1380,11 +1711,21 @@ def GetPermission(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetPermission', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetPermission', feast_dot_registry_dot_RegistryServer__pb2.GetPermissionRequest.SerializeToString, feast_dot_core_dot_Permission__pb2.Permission.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ListPermissions(request, @@ -1397,11 +1738,21 @@ def ListPermissions(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ListPermissions', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ListPermissions', feast_dot_registry_dot_RegistryServer__pb2.ListPermissionsRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.ListPermissionsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def DeletePermission(request, @@ -1414,11 +1765,21 @@ def DeletePermission(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/DeletePermission', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/DeletePermission', feast_dot_registry_dot_RegistryServer__pb2.DeletePermissionRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ApplyProject(request, @@ -1431,11 +1792,21 @@ def ApplyProject(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ApplyProject', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ApplyProject', feast_dot_registry_dot_RegistryServer__pb2.ApplyProjectRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetProject(request, @@ -1448,11 +1819,21 @@ def GetProject(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetProject', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetProject', feast_dot_registry_dot_RegistryServer__pb2.GetProjectRequest.SerializeToString, feast_dot_core_dot_Project__pb2.Project.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ListProjects(request, @@ -1465,11 +1846,21 @@ def ListProjects(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ListProjects', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ListProjects', feast_dot_registry_dot_RegistryServer__pb2.ListProjectsRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.ListProjectsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def DeleteProject(request, @@ -1482,11 +1873,21 @@ def DeleteProject(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/DeleteProject', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/DeleteProject', feast_dot_registry_dot_RegistryServer__pb2.DeleteProjectRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ApplyMaterialization(request, @@ -1499,11 +1900,21 @@ def ApplyMaterialization(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ApplyMaterialization', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ApplyMaterialization', feast_dot_registry_dot_RegistryServer__pb2.ApplyMaterializationRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ListProjectMetadata(request, @@ -1516,11 +1927,21 @@ def ListProjectMetadata(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ListProjectMetadata', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ListProjectMetadata', feast_dot_registry_dot_RegistryServer__pb2.ListProjectMetadataRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.ListProjectMetadataResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def UpdateInfra(request, @@ -1533,11 +1954,21 @@ def UpdateInfra(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/UpdateInfra', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/UpdateInfra', feast_dot_registry_dot_RegistryServer__pb2.UpdateInfraRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetInfra(request, @@ -1550,11 +1981,21 @@ def GetInfra(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetInfra', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetInfra', feast_dot_registry_dot_RegistryServer__pb2.GetInfraRequest.SerializeToString, feast_dot_core_dot_InfraObject__pb2.Infra.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def Commit(request, @@ -1567,11 +2008,21 @@ def Commit(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/Commit', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/Commit', google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def Refresh(request, @@ -1584,11 +2035,21 @@ def Refresh(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/Refresh', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/Refresh', feast_dot_registry_dot_RegistryServer__pb2.RefreshRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def Proto(request, @@ -1601,11 +2062,21 @@ def Proto(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/Proto', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/Proto', google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, feast_dot_core_dot_Registry__pb2.Registry.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetRegistryLineage(request, @@ -1618,11 +2089,21 @@ def GetRegistryLineage(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetRegistryLineage', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetRegistryLineage', feast_dot_registry_dot_RegistryServer__pb2.GetRegistryLineageRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.GetRegistryLineageResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetObjectRelationships(request, @@ -1635,11 +2116,21 @@ def GetObjectRelationships(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetObjectRelationships', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetObjectRelationships', feast_dot_registry_dot_RegistryServer__pb2.GetObjectRelationshipsRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.GetObjectRelationshipsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def ListFeatures(request, @@ -1652,11 +2143,21 @@ def ListFeatures(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/ListFeatures', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/ListFeatures', feast_dot_registry_dot_RegistryServer__pb2.ListFeaturesRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.ListFeaturesResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetFeature(request, @@ -1669,8 +2170,18 @@ def GetFeature(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.registry.RegistryServer/GetFeature', + return grpc.experimental.unary_unary( + request, + target, + '/feast.registry.RegistryServer/GetFeature', feast_dot_registry_dot_RegistryServer__pb2.GetFeatureRequest.SerializeToString, feast_dot_registry_dot_RegistryServer__pb2.Feature.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/sdk/python/feast/protos/feast/serving/Connector_pb2.py b/sdk/python/feast/protos/feast/serving/Connector_pb2.py index b38471dea8d..570522155fa 100644 --- a/sdk/python/feast/protos/feast/serving/Connector_pb2.py +++ b/sdk/python/feast/protos/feast/serving/Connector_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/serving/Connector.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/serving/Connector.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -23,8 +33,8 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.serving.Connector_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'Z2github.com/feast-dev/feast/go/protos/feast/serving' _globals['_CONNECTORFEATURE']._serialized_start=173 _globals['_CONNECTORFEATURE']._serialized_end=327 diff --git a/sdk/python/feast/protos/feast/serving/Connector_pb2.pyi b/sdk/python/feast/protos/feast/serving/Connector_pb2.pyi index f87109e0fa5..0bbf452ed20 100644 --- a/sdk/python/feast/protos/feast/serving/Connector_pb2.pyi +++ b/sdk/python/feast/protos/feast/serving/Connector_pb2.pyi @@ -2,6 +2,7 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ + import builtins import collections.abc import feast.serving.ServingService_pb2 @@ -11,15 +12,11 @@ import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import google.protobuf.timestamp_pb2 -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class ConnectorFeature(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -39,11 +36,12 @@ class ConnectorFeature(google.protobuf.message.Message): timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., value: feast.types.Value_pb2.Value | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["reference", b"reference", "timestamp", b"timestamp", "value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["reference", b"reference", "timestamp", b"timestamp", "value", b"value"]) -> None: ... + def HasField(self, field_name: typing.Literal["reference", b"reference", "timestamp", b"timestamp", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["reference", b"reference", "timestamp", b"timestamp", "value", b"value"]) -> None: ... global___ConnectorFeature = ConnectorFeature +@typing.final class ConnectorFeatureList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -55,19 +53,20 @@ class ConnectorFeatureList(google.protobuf.message.Message): *, featureList: collections.abc.Iterable[global___ConnectorFeature] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["featureList", b"featureList"]) -> None: ... + def ClearField(self, field_name: typing.Literal["featureList", b"featureList"]) -> None: ... global___ConnectorFeatureList = ConnectorFeatureList +@typing.final class OnlineReadRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor ENTITYKEYS_FIELD_NUMBER: builtins.int VIEW_FIELD_NUMBER: builtins.int FEATURES_FIELD_NUMBER: builtins.int + view: builtins.str @property def entityKeys(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.types.EntityKey_pb2.EntityKey]: ... - view: builtins.str @property def features(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... def __init__( @@ -77,10 +76,11 @@ class OnlineReadRequest(google.protobuf.message.Message): view: builtins.str = ..., features: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["entityKeys", b"entityKeys", "features", b"features", "view", b"view"]) -> None: ... + def ClearField(self, field_name: typing.Literal["entityKeys", b"entityKeys", "features", b"features", "view", b"view"]) -> None: ... global___OnlineReadRequest = OnlineReadRequest +@typing.final class OnlineReadResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -92,6 +92,6 @@ class OnlineReadResponse(google.protobuf.message.Message): *, results: collections.abc.Iterable[global___ConnectorFeatureList] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["results", b"results"]) -> None: ... + def ClearField(self, field_name: typing.Literal["results", b"results"]) -> None: ... global___OnlineReadResponse = OnlineReadResponse diff --git a/sdk/python/feast/protos/feast/serving/Connector_pb2_grpc.py b/sdk/python/feast/protos/feast/serving/Connector_pb2_grpc.py index dfadf982dd8..fde38b79c49 100644 --- a/sdk/python/feast/protos/feast/serving/Connector_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/serving/Connector_pb2_grpc.py @@ -1,9 +1,29 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings from feast.protos.feast.serving import Connector_pb2 as feast_dot_serving_dot_Connector__pb2 +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/serving/Connector_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + class OnlineStoreStub(object): """Missing associated documentation comment in .proto file.""" @@ -18,7 +38,7 @@ def __init__(self, channel): '/grpc.connector.OnlineStore/OnlineRead', request_serializer=feast_dot_serving_dot_Connector__pb2.OnlineReadRequest.SerializeToString, response_deserializer=feast_dot_serving_dot_Connector__pb2.OnlineReadResponse.FromString, - ) + _registered_method=True) class OnlineStoreServicer(object): @@ -42,6 +62,7 @@ def add_OnlineStoreServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'grpc.connector.OnlineStore', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('grpc.connector.OnlineStore', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -59,8 +80,18 @@ def OnlineRead(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/grpc.connector.OnlineStore/OnlineRead', + return grpc.experimental.unary_unary( + request, + target, + '/grpc.connector.OnlineStore/OnlineRead', feast_dot_serving_dot_Connector__pb2.OnlineReadRequest.SerializeToString, feast_dot_serving_dot_Connector__pb2.OnlineReadResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/sdk/python/feast/protos/feast/serving/GrpcServer_pb2.py b/sdk/python/feast/protos/feast/serving/GrpcServer_pb2.py index dcf91563185..d11fc79579d 100644 --- a/sdk/python/feast/protos/feast/serving/GrpcServer_pb2.py +++ b/sdk/python/feast/protos/feast/serving/GrpcServer_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/serving/GrpcServer.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/serving/GrpcServer.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -20,12 +30,12 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.serving.GrpcServer_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\023feast.proto.servingB\022GrpcServerAPIProtoZ2github.com/feast-dev/feast/go/protos/feast/serving' - _globals['_PUSHREQUEST_FEATURESENTRY']._options = None + _globals['_PUSHREQUEST_FEATURESENTRY']._loaded_options = None _globals['_PUSHREQUEST_FEATURESENTRY']._serialized_options = b'8\001' - _globals['_WRITETOONLINESTOREREQUEST_FEATURESENTRY']._options = None + _globals['_WRITETOONLINESTOREREQUEST_FEATURESENTRY']._loaded_options = None _globals['_WRITETOONLINESTOREREQUEST_FEATURESENTRY']._serialized_options = b'8\001' _globals['_PUSHREQUEST']._serialized_start=71 _globals['_PUSHREQUEST']._serialized_end=250 diff --git a/sdk/python/feast/protos/feast/serving/GrpcServer_pb2.pyi b/sdk/python/feast/protos/feast/serving/GrpcServer_pb2.pyi index 54964f46e58..d717a0f1d25 100644 --- a/sdk/python/feast/protos/feast/serving/GrpcServer_pb2.pyi +++ b/sdk/python/feast/protos/feast/serving/GrpcServer_pb2.pyi @@ -2,23 +2,21 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ + import builtins import collections.abc import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class PushRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class FeaturesEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -32,17 +30,17 @@ class PushRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... FEATURES_FIELD_NUMBER: builtins.int STREAM_FEATURE_VIEW_FIELD_NUMBER: builtins.int ALLOW_REGISTRY_CACHE_FIELD_NUMBER: builtins.int TO_FIELD_NUMBER: builtins.int - @property - def features(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... stream_feature_view: builtins.str allow_registry_cache: builtins.bool to: builtins.str + @property + def features(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... def __init__( self, *, @@ -51,10 +49,11 @@ class PushRequest(google.protobuf.message.Message): allow_registry_cache: builtins.bool = ..., to: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_registry_cache", b"allow_registry_cache", "features", b"features", "stream_feature_view", b"stream_feature_view", "to", b"to"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_registry_cache", b"allow_registry_cache", "features", b"features", "stream_feature_view", b"stream_feature_view", "to", b"to"]) -> None: ... global___PushRequest = PushRequest +@typing.final class PushResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -65,13 +64,15 @@ class PushResponse(google.protobuf.message.Message): *, status: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["status", b"status"]) -> None: ... + def ClearField(self, field_name: typing.Literal["status", b"status"]) -> None: ... global___PushResponse = PushResponse +@typing.final class WriteToOnlineStoreRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class FeaturesEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -85,15 +86,15 @@ class WriteToOnlineStoreRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... FEATURES_FIELD_NUMBER: builtins.int FEATURE_VIEW_NAME_FIELD_NUMBER: builtins.int ALLOW_REGISTRY_CACHE_FIELD_NUMBER: builtins.int - @property - def features(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... feature_view_name: builtins.str allow_registry_cache: builtins.bool + @property + def features(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... def __init__( self, *, @@ -101,10 +102,11 @@ class WriteToOnlineStoreRequest(google.protobuf.message.Message): feature_view_name: builtins.str = ..., allow_registry_cache: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_registry_cache", b"allow_registry_cache", "feature_view_name", b"feature_view_name", "features", b"features"]) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_registry_cache", b"allow_registry_cache", "feature_view_name", b"feature_view_name", "features", b"features"]) -> None: ... global___WriteToOnlineStoreRequest = WriteToOnlineStoreRequest +@typing.final class WriteToOnlineStoreResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -115,6 +117,6 @@ class WriteToOnlineStoreResponse(google.protobuf.message.Message): *, status: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["status", b"status"]) -> None: ... + def ClearField(self, field_name: typing.Literal["status", b"status"]) -> None: ... global___WriteToOnlineStoreResponse = WriteToOnlineStoreResponse diff --git a/sdk/python/feast/protos/feast/serving/GrpcServer_pb2_grpc.py b/sdk/python/feast/protos/feast/serving/GrpcServer_pb2_grpc.py index b381cc0f417..e298e8d1e5f 100644 --- a/sdk/python/feast/protos/feast/serving/GrpcServer_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/serving/GrpcServer_pb2_grpc.py @@ -1,10 +1,30 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings from feast.protos.feast.serving import GrpcServer_pb2 as feast_dot_serving_dot_GrpcServer__pb2 from feast.protos.feast.serving import ServingService_pb2 as feast_dot_serving_dot_ServingService__pb2 +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/serving/GrpcServer_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + class GrpcFeatureServerStub(object): """Missing associated documentation comment in .proto file.""" @@ -19,17 +39,17 @@ def __init__(self, channel): '/GrpcFeatureServer/Push', request_serializer=feast_dot_serving_dot_GrpcServer__pb2.PushRequest.SerializeToString, response_deserializer=feast_dot_serving_dot_GrpcServer__pb2.PushResponse.FromString, - ) + _registered_method=True) self.WriteToOnlineStore = channel.unary_unary( '/GrpcFeatureServer/WriteToOnlineStore', request_serializer=feast_dot_serving_dot_GrpcServer__pb2.WriteToOnlineStoreRequest.SerializeToString, response_deserializer=feast_dot_serving_dot_GrpcServer__pb2.WriteToOnlineStoreResponse.FromString, - ) + _registered_method=True) self.GetOnlineFeatures = channel.unary_unary( '/GrpcFeatureServer/GetOnlineFeatures', request_serializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesRequest.SerializeToString, response_deserializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesResponse.FromString, - ) + _registered_method=True) class GrpcFeatureServerServicer(object): @@ -75,6 +95,7 @@ def add_GrpcFeatureServerServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'GrpcFeatureServer', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('GrpcFeatureServer', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -92,11 +113,21 @@ def Push(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/GrpcFeatureServer/Push', + return grpc.experimental.unary_unary( + request, + target, + '/GrpcFeatureServer/Push', feast_dot_serving_dot_GrpcServer__pb2.PushRequest.SerializeToString, feast_dot_serving_dot_GrpcServer__pb2.PushResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def WriteToOnlineStore(request, @@ -109,11 +140,21 @@ def WriteToOnlineStore(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/GrpcFeatureServer/WriteToOnlineStore', + return grpc.experimental.unary_unary( + request, + target, + '/GrpcFeatureServer/WriteToOnlineStore', feast_dot_serving_dot_GrpcServer__pb2.WriteToOnlineStoreRequest.SerializeToString, feast_dot_serving_dot_GrpcServer__pb2.WriteToOnlineStoreResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetOnlineFeatures(request, @@ -126,8 +167,18 @@ def GetOnlineFeatures(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/GrpcFeatureServer/GetOnlineFeatures', + return grpc.experimental.unary_unary( + request, + target, + '/GrpcFeatureServer/GetOnlineFeatures', feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesRequest.SerializeToString, feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/sdk/python/feast/protos/feast/serving/ServingService_pb2.py b/sdk/python/feast/protos/feast/serving/ServingService_pb2.py index fa866640577..c56555baef8 100644 --- a/sdk/python/feast/protos/feast/serving/ServingService_pb2.py +++ b/sdk/python/feast/protos/feast/serving/ServingService_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/serving/ServingService.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/serving/ServingService.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -21,14 +31,14 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.serving.ServingService_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\023feast.proto.servingB\017ServingAPIProtoZ2github.com/feast-dev/feast/go/protos/feast/serving' - _globals['_GETONLINEFEATURESREQUESTV2_ENTITYROW_FIELDSENTRY']._options = None + _globals['_GETONLINEFEATURESREQUESTV2_ENTITYROW_FIELDSENTRY']._loaded_options = None _globals['_GETONLINEFEATURESREQUESTV2_ENTITYROW_FIELDSENTRY']._serialized_options = b'8\001' - _globals['_GETONLINEFEATURESREQUEST_ENTITIESENTRY']._options = None + _globals['_GETONLINEFEATURESREQUEST_ENTITIESENTRY']._loaded_options = None _globals['_GETONLINEFEATURESREQUEST_ENTITIESENTRY']._serialized_options = b'8\001' - _globals['_GETONLINEFEATURESREQUEST_REQUESTCONTEXTENTRY']._options = None + _globals['_GETONLINEFEATURESREQUEST_REQUESTCONTEXTENTRY']._loaded_options = None _globals['_GETONLINEFEATURESREQUEST_REQUESTCONTEXTENTRY']._serialized_options = b'8\001' _globals['_FIELDSTATUS']._serialized_start=1560 _globals['_FIELDSTATUS']._serialized_end=1651 diff --git a/sdk/python/feast/protos/feast/serving/ServingService_pb2.pyi b/sdk/python/feast/protos/feast/serving/ServingService_pb2.pyi index 3c5e57ae45a..5640d26d748 100644 --- a/sdk/python/feast/protos/feast/serving/ServingService_pb2.pyi +++ b/sdk/python/feast/protos/feast/serving/ServingService_pb2.pyi @@ -16,6 +16,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import feast.types.Value_pb2 @@ -38,7 +39,7 @@ class _FieldStatus: ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType -class _FieldStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_FieldStatus.ValueType], builtins.type): # noqa: F821 +class _FieldStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_FieldStatus.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor INVALID: _FieldStatus.ValueType # 0 """Status is unset for this field.""" @@ -79,6 +80,7 @@ allowable range. """ global___FieldStatus = FieldStatus +@typing.final class GetFeastServingInfoRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -88,6 +90,7 @@ class GetFeastServingInfoRequest(google.protobuf.message.Message): global___GetFeastServingInfoRequest = GetFeastServingInfoRequest +@typing.final class GetFeastServingInfoResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -99,10 +102,11 @@ class GetFeastServingInfoResponse(google.protobuf.message.Message): *, version: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["version", b"version"]) -> None: ... + def ClearField(self, field_name: typing.Literal["version", b"version"]) -> None: ... global___GetFeastServingInfoResponse = GetFeastServingInfoResponse +@typing.final class FeatureReferenceV2(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -118,18 +122,21 @@ class FeatureReferenceV2(google.protobuf.message.Message): feature_view_name: builtins.str = ..., feature_name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["feature_name", b"feature_name", "feature_view_name", b"feature_view_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["feature_name", b"feature_name", "feature_view_name", b"feature_view_name"]) -> None: ... global___FeatureReferenceV2 = FeatureReferenceV2 +@typing.final class GetOnlineFeaturesRequestV2(google.protobuf.message.Message): """ToDo (oleksii): remove this message (since it's not used) and move EntityRow on package level""" DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class EntityRow(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class FieldsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -144,8 +151,8 @@ class GetOnlineFeaturesRequestV2(google.protobuf.message.Message): key: builtins.str = ..., value: feast.types.Value_pb2.Value | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... TIMESTAMP_FIELD_NUMBER: builtins.int FIELDS_FIELD_NUMBER: builtins.int @@ -154,35 +161,39 @@ class GetOnlineFeaturesRequestV2(google.protobuf.message.Message): """Request timestamp of this row. This value will be used, together with maxAge, to determine feature staleness. """ + @property def fields(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, feast.types.Value_pb2.Value]: """Map containing mapping of entity name to entity value.""" + def __init__( self, *, timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., fields: collections.abc.Mapping[builtins.str, feast.types.Value_pb2.Value] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["timestamp", b"timestamp"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["fields", b"fields", "timestamp", b"timestamp"]) -> None: ... + def HasField(self, field_name: typing.Literal["timestamp", b"timestamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["fields", b"fields", "timestamp", b"timestamp"]) -> None: ... FEATURES_FIELD_NUMBER: builtins.int ENTITY_ROWS_FIELD_NUMBER: builtins.int PROJECT_FIELD_NUMBER: builtins.int + project: builtins.str + """Optional field to specify project name override. If specified, uses the + given project for retrieval. Overrides the projects specified in + Feature References if both are specified. + """ @property def features(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FeatureReferenceV2]: """List of features that are being retrieved""" + @property def entity_rows(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___GetOnlineFeaturesRequestV2.EntityRow]: """List of entity rows, containing entity id and timestamp data. Used during retrieval of feature rows and for joining feature rows into a final dataset """ - project: builtins.str - """Optional field to specify project name override. If specified, uses the - given project for retrieval. Overrides the projects specified in - Feature References if both are specified. - """ + def __init__( self, *, @@ -190,10 +201,11 @@ class GetOnlineFeaturesRequestV2(google.protobuf.message.Message): entity_rows: collections.abc.Iterable[global___GetOnlineFeaturesRequestV2.EntityRow] | None = ..., project: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["entity_rows", b"entity_rows", "features", b"features", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["entity_rows", b"entity_rows", "features", b"features", "project", b"project"]) -> None: ... global___GetOnlineFeaturesRequestV2 = GetOnlineFeaturesRequestV2 +@typing.final class FeatureList(google.protobuf.message.Message): """In JSON "val" field can be omitted""" @@ -207,13 +219,15 @@ class FeatureList(google.protobuf.message.Message): *, val: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + def ClearField(self, field_name: typing.Literal["val", b"val"]) -> None: ... global___FeatureList = FeatureList +@typing.final class GetOnlineFeaturesRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class EntitiesEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -228,9 +242,10 @@ class GetOnlineFeaturesRequest(google.protobuf.message.Message): key: builtins.str = ..., value: feast.types.Value_pb2.RepeatedValue | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + @typing.final class RequestContextEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -245,8 +260,8 @@ class GetOnlineFeaturesRequest(google.protobuf.message.Message): key: builtins.str = ..., value: feast.types.Value_pb2.RepeatedValue | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... FEATURE_SERVICE_FIELD_NUMBER: builtins.int FEATURES_FIELD_NUMBER: builtins.int @@ -254,6 +269,7 @@ class GetOnlineFeaturesRequest(google.protobuf.message.Message): FULL_FEATURE_NAMES_FIELD_NUMBER: builtins.int REQUEST_CONTEXT_FIELD_NUMBER: builtins.int feature_service: builtins.str + full_feature_names: builtins.bool @property def features(self) -> global___FeatureList: ... @property @@ -261,13 +277,14 @@ class GetOnlineFeaturesRequest(google.protobuf.message.Message): """The entity data is specified in a columnar format A map of entity name -> list of values """ - full_feature_names: builtins.bool + @property def request_context(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, feast.types.Value_pb2.RepeatedValue]: """Context for OnDemand Feature Transformation (was moved to dedicated parameter to avoid unnecessary separation logic on serving side) A map of variable name -> list of values """ + def __init__( self, *, @@ -277,15 +294,17 @@ class GetOnlineFeaturesRequest(google.protobuf.message.Message): full_feature_names: builtins.bool = ..., request_context: collections.abc.Mapping[builtins.str, feast.types.Value_pb2.RepeatedValue] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["feature_service", b"feature_service", "features", b"features", "kind", b"kind"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["entities", b"entities", "feature_service", b"feature_service", "features", b"features", "full_feature_names", b"full_feature_names", "kind", b"kind", "request_context", b"request_context"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["kind", b"kind"]) -> typing_extensions.Literal["feature_service", "features"] | None: ... + def HasField(self, field_name: typing.Literal["feature_service", b"feature_service", "features", b"features", "kind", b"kind"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["entities", b"entities", "feature_service", b"feature_service", "features", b"features", "full_feature_names", b"full_feature_names", "kind", b"kind", "request_context", b"request_context"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["kind", b"kind"]) -> typing.Literal["feature_service", "features"] | None: ... global___GetOnlineFeaturesRequest = GetOnlineFeaturesRequest +@typing.final class GetOnlineFeaturesResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class FeatureVector(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -305,11 +324,12 @@ class GetOnlineFeaturesResponse(google.protobuf.message.Message): statuses: collections.abc.Iterable[global___FieldStatus.ValueType] | None = ..., event_timestamps: collections.abc.Iterable[google.protobuf.timestamp_pb2.Timestamp] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["event_timestamps", b"event_timestamps", "statuses", b"statuses", "values", b"values"]) -> None: ... + def ClearField(self, field_name: typing.Literal["event_timestamps", b"event_timestamps", "statuses", b"statuses", "values", b"values"]) -> None: ... METADATA_FIELD_NUMBER: builtins.int RESULTS_FIELD_NUMBER: builtins.int STATUS_FIELD_NUMBER: builtins.int + status: builtins.bool @property def metadata(self) -> global___GetOnlineFeaturesResponseMetadata: ... @property @@ -317,7 +337,7 @@ class GetOnlineFeaturesResponse(google.protobuf.message.Message): """Length of "results" array should match length of requested features. We also preserve the same order of features here as in metadata.feature_names """ - status: builtins.bool + def __init__( self, *, @@ -325,11 +345,12 @@ class GetOnlineFeaturesResponse(google.protobuf.message.Message): results: collections.abc.Iterable[global___GetOnlineFeaturesResponse.FeatureVector] | None = ..., status: builtins.bool = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["metadata", b"metadata"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["metadata", b"metadata", "results", b"results", "status", b"status"]) -> None: ... + def HasField(self, field_name: typing.Literal["metadata", b"metadata"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["metadata", b"metadata", "results", b"results", "status", b"status"]) -> None: ... global___GetOnlineFeaturesResponse = GetOnlineFeaturesResponse +@typing.final class GetOnlineFeaturesResponseMetadata(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -341,7 +362,7 @@ class GetOnlineFeaturesResponseMetadata(google.protobuf.message.Message): *, feature_names: global___FeatureList | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["feature_names", b"feature_names"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["feature_names", b"feature_names"]) -> None: ... + def HasField(self, field_name: typing.Literal["feature_names", b"feature_names"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["feature_names", b"feature_names"]) -> None: ... global___GetOnlineFeaturesResponseMetadata = GetOnlineFeaturesResponseMetadata diff --git a/sdk/python/feast/protos/feast/serving/ServingService_pb2_grpc.py b/sdk/python/feast/protos/feast/serving/ServingService_pb2_grpc.py index d3cd055f665..b3b569d4de8 100644 --- a/sdk/python/feast/protos/feast/serving/ServingService_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/serving/ServingService_pb2_grpc.py @@ -1,9 +1,29 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings from feast.protos.feast.serving import ServingService_pb2 as feast_dot_serving_dot_ServingService__pb2 +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/serving/ServingService_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + class ServingServiceStub(object): """Missing associated documentation comment in .proto file.""" @@ -18,12 +38,12 @@ def __init__(self, channel): '/feast.serving.ServingService/GetFeastServingInfo', request_serializer=feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoRequest.SerializeToString, response_deserializer=feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoResponse.FromString, - ) + _registered_method=True) 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, - ) + _registered_method=True) class ServingServiceServicer(object): @@ -60,6 +80,7 @@ def add_ServingServiceServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'feast.serving.ServingService', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('feast.serving.ServingService', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -77,11 +98,21 @@ def GetFeastServingInfo(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.serving.ServingService/GetFeastServingInfo', + 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, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetOnlineFeatures(request, @@ -94,8 +125,18 @@ def GetOnlineFeatures(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.serving.ServingService/GetOnlineFeatures', + 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, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/sdk/python/feast/protos/feast/serving/TransformationService_pb2.py b/sdk/python/feast/protos/feast/serving/TransformationService_pb2.py index bc060e9a776..80311650f64 100644 --- a/sdk/python/feast/protos/feast/serving/TransformationService_pb2.py +++ b/sdk/python/feast/protos/feast/serving/TransformationService_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/serving/TransformationService.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/serving/TransformationService.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,8 +29,8 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.serving.TransformationService_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\023feast.proto.servingB\035TransformationServiceAPIProtoZ2github.com/feast-dev/feast/go/protos/feast/serving' _globals['_TRANSFORMATIONSERVICETYPE']._serialized_start=529 _globals['_TRANSFORMATIONSERVICETYPE']._serialized_end=677 diff --git a/sdk/python/feast/protos/feast/serving/TransformationService_pb2.pyi b/sdk/python/feast/protos/feast/serving/TransformationService_pb2.pyi index 3e0752b7bdd..c633306adf3 100644 --- a/sdk/python/feast/protos/feast/serving/TransformationService_pb2.pyi +++ b/sdk/python/feast/protos/feast/serving/TransformationService_pb2.pyi @@ -16,6 +16,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import google.protobuf.descriptor import google.protobuf.internal.enum_type_wrapper @@ -34,7 +35,7 @@ class _TransformationServiceType: ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType -class _TransformationServiceTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TransformationServiceType.ValueType], builtins.type): # noqa: F821 +class _TransformationServiceTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TransformationServiceType.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor TRANSFORMATION_SERVICE_TYPE_INVALID: _TransformationServiceType.ValueType # 0 TRANSFORMATION_SERVICE_TYPE_PYTHON: _TransformationServiceType.ValueType # 1 @@ -47,6 +48,7 @@ TRANSFORMATION_SERVICE_TYPE_PYTHON: TransformationServiceType.ValueType # 1 TRANSFORMATION_SERVICE_TYPE_CUSTOM: TransformationServiceType.ValueType # 100 global___TransformationServiceType = TransformationServiceType +@typing.final class ValueType(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -60,12 +62,13 @@ class ValueType(google.protobuf.message.Message): *, arrow_value: builtins.bytes = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["arrow_value", b"arrow_value", "value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["arrow_value", b"arrow_value", "value", b"value"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["value", b"value"]) -> typing_extensions.Literal["arrow_value"] | None: ... + def HasField(self, field_name: typing.Literal["arrow_value", b"arrow_value", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["arrow_value", b"arrow_value", "value", b"value"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["arrow_value"] | None: ... global___ValueType = ValueType +@typing.final class GetTransformationServiceInfoRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -75,6 +78,7 @@ class GetTransformationServiceInfoRequest(google.protobuf.message.Message): global___GetTransformationServiceInfoRequest = GetTransformationServiceInfoRequest +@typing.final class GetTransformationServiceInfoResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -93,10 +97,11 @@ class GetTransformationServiceInfoResponse(google.protobuf.message.Message): type: global___TransformationServiceType.ValueType = ..., transformation_service_type_details: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["transformation_service_type_details", b"transformation_service_type_details", "type", b"type", "version", b"version"]) -> None: ... + def ClearField(self, field_name: typing.Literal["transformation_service_type_details", b"transformation_service_type_details", "type", b"type", "version", b"version"]) -> None: ... global___GetTransformationServiceInfoResponse = GetTransformationServiceInfoResponse +@typing.final class TransformFeaturesRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -114,11 +119,12 @@ class TransformFeaturesRequest(google.protobuf.message.Message): project: builtins.str = ..., transformation_input: global___ValueType | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["transformation_input", b"transformation_input"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["on_demand_feature_view_name", b"on_demand_feature_view_name", "project", b"project", "transformation_input", b"transformation_input"]) -> None: ... + def HasField(self, field_name: typing.Literal["transformation_input", b"transformation_input"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["on_demand_feature_view_name", b"on_demand_feature_view_name", "project", b"project", "transformation_input", b"transformation_input"]) -> None: ... global___TransformFeaturesRequest = TransformFeaturesRequest +@typing.final class TransformFeaturesResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -130,7 +136,7 @@ class TransformFeaturesResponse(google.protobuf.message.Message): *, transformation_output: global___ValueType | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["transformation_output", b"transformation_output"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["transformation_output", b"transformation_output"]) -> None: ... + def HasField(self, field_name: typing.Literal["transformation_output", b"transformation_output"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["transformation_output", b"transformation_output"]) -> None: ... global___TransformFeaturesResponse = TransformFeaturesResponse diff --git a/sdk/python/feast/protos/feast/serving/TransformationService_pb2_grpc.py b/sdk/python/feast/protos/feast/serving/TransformationService_pb2_grpc.py index 30099e39cae..c0e0ce3181e 100644 --- a/sdk/python/feast/protos/feast/serving/TransformationService_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/serving/TransformationService_pb2_grpc.py @@ -1,9 +1,29 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings from feast.protos.feast.serving import TransformationService_pb2 as feast_dot_serving_dot_TransformationService__pb2 +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/serving/TransformationService_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + class TransformationServiceStub(object): """Missing associated documentation comment in .proto file.""" @@ -18,12 +38,12 @@ def __init__(self, channel): '/feast.serving.TransformationService/GetTransformationServiceInfo', request_serializer=feast_dot_serving_dot_TransformationService__pb2.GetTransformationServiceInfoRequest.SerializeToString, response_deserializer=feast_dot_serving_dot_TransformationService__pb2.GetTransformationServiceInfoResponse.FromString, - ) + _registered_method=True) self.TransformFeatures = channel.unary_unary( '/feast.serving.TransformationService/TransformFeatures', request_serializer=feast_dot_serving_dot_TransformationService__pb2.TransformFeaturesRequest.SerializeToString, response_deserializer=feast_dot_serving_dot_TransformationService__pb2.TransformFeaturesResponse.FromString, - ) + _registered_method=True) class TransformationServiceServicer(object): @@ -58,6 +78,7 @@ def add_TransformationServiceServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'feast.serving.TransformationService', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('feast.serving.TransformationService', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -75,11 +96,21 @@ def GetTransformationServiceInfo(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.serving.TransformationService/GetTransformationServiceInfo', + return grpc.experimental.unary_unary( + request, + target, + '/feast.serving.TransformationService/GetTransformationServiceInfo', feast_dot_serving_dot_TransformationService__pb2.GetTransformationServiceInfoRequest.SerializeToString, feast_dot_serving_dot_TransformationService__pb2.GetTransformationServiceInfoResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def TransformFeatures(request, @@ -92,8 +123,18 @@ def TransformFeatures(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/feast.serving.TransformationService/TransformFeatures', + return grpc.experimental.unary_unary( + request, + target, + '/feast.serving.TransformationService/TransformFeatures', feast_dot_serving_dot_TransformationService__pb2.TransformFeaturesRequest.SerializeToString, feast_dot_serving_dot_TransformationService__pb2.TransformFeaturesResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/sdk/python/feast/protos/feast/storage/Redis_pb2.py b/sdk/python/feast/protos/feast/storage/Redis_pb2.py index 37d59c9df5a..a64d778b662 100644 --- a/sdk/python/feast/protos/feast/storage/Redis_pb2.py +++ b/sdk/python/feast/protos/feast/storage/Redis_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/storage/Redis.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/storage/Redis.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -20,8 +30,8 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.storage.Redis_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\023feast.proto.storageB\nRedisProtoZ2github.com/feast-dev/feast/go/protos/feast/storage' _globals['_REDISKEYV2']._serialized_start=69 _globals['_REDISKEYV2']._serialized_end=163 diff --git a/sdk/python/feast/protos/feast/storage/Redis_pb2.pyi b/sdk/python/feast/protos/feast/storage/Redis_pb2.pyi index 74cc2b07f0a..8ac9750e31e 100644 --- a/sdk/python/feast/protos/feast/storage/Redis_pb2.pyi +++ b/sdk/python/feast/protos/feast/storage/Redis_pb2.pyi @@ -16,21 +16,18 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import feast.types.Value_pb2 import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class RedisKeyV2(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -49,6 +46,6 @@ class RedisKeyV2(google.protobuf.message.Message): entity_names: collections.abc.Iterable[builtins.str] | None = ..., entity_values: collections.abc.Iterable[feast.types.Value_pb2.Value] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["entity_names", b"entity_names", "entity_values", b"entity_values", "project", b"project"]) -> None: ... + def ClearField(self, field_name: typing.Literal["entity_names", b"entity_names", "entity_values", b"entity_values", "project", b"project"]) -> None: ... global___RedisKeyV2 = RedisKeyV2 diff --git a/sdk/python/feast/protos/feast/storage/Redis_pb2_grpc.py b/sdk/python/feast/protos/feast/storage/Redis_pb2_grpc.py index 2daafffebfc..eae7aff0b7f 100644 --- a/sdk/python/feast/protos/feast/storage/Redis_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/storage/Redis_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/storage/Redis_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/types/EntityKey_pb2.py b/sdk/python/feast/protos/feast/types/EntityKey_pb2.py index a6e1abf7302..a24dbc1fe07 100644 --- a/sdk/python/feast/protos/feast/types/EntityKey_pb2.py +++ b/sdk/python/feast/protos/feast/types/EntityKey_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/types/EntityKey.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/types/EntityKey.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -20,8 +30,8 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.types.EntityKey_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\021feast.proto.typesB\016EntityKeyProtoZ0github.com/feast-dev/feast/go/protos/feast/types' _globals['_ENTITYKEY']._serialized_start=69 _globals['_ENTITYKEY']._serialized_end=142 diff --git a/sdk/python/feast/protos/feast/types/EntityKey_pb2.pyi b/sdk/python/feast/protos/feast/types/EntityKey_pb2.pyi index fe65e0c1b32..c25dae6649b 100644 --- a/sdk/python/feast/protos/feast/types/EntityKey_pb2.pyi +++ b/sdk/python/feast/protos/feast/types/EntityKey_pb2.pyi @@ -16,21 +16,18 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import feast.types.Value_pb2 import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class EntityKey(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -46,6 +43,6 @@ class EntityKey(google.protobuf.message.Message): join_keys: collections.abc.Iterable[builtins.str] | None = ..., entity_values: collections.abc.Iterable[feast.types.Value_pb2.Value] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["entity_values", b"entity_values", "join_keys", b"join_keys"]) -> None: ... + def ClearField(self, field_name: typing.Literal["entity_values", b"entity_values", "join_keys", b"join_keys"]) -> None: ... global___EntityKey = EntityKey diff --git a/sdk/python/feast/protos/feast/types/EntityKey_pb2_grpc.py b/sdk/python/feast/protos/feast/types/EntityKey_pb2_grpc.py index 2daafffebfc..2969fbcb4a9 100644 --- a/sdk/python/feast/protos/feast/types/EntityKey_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/types/EntityKey_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/types/EntityKey_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/types/Field_pb2.py b/sdk/python/feast/protos/feast/types/Field_pb2.py index 973fdc6cdea..2bea8437720 100644 --- a/sdk/python/feast/protos/feast/types/Field_pb2.py +++ b/sdk/python/feast/protos/feast/types/Field_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/types/Field.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/types/Field.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -20,10 +30,10 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.types.Field_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\021feast.proto.typesB\nFieldProtoZ0github.com/feast-dev/feast/go/protos/feast/types' - _globals['_FIELD_TAGSENTRY']._options = None + _globals['_FIELD_TAGSENTRY']._loaded_options = None _globals['_FIELD_TAGSENTRY']._serialized_options = b'8\001' _globals['_FIELD']._serialized_start=66 _globals['_FIELD']._serialized_end=241 diff --git a/sdk/python/feast/protos/feast/types/Field_pb2.pyi b/sdk/python/feast/protos/feast/types/Field_pb2.pyi index 28a21942378..968192413c3 100644 --- a/sdk/python/feast/protos/feast/types/Field_pb2.pyi +++ b/sdk/python/feast/protos/feast/types/Field_pb2.pyi @@ -16,24 +16,22 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import feast.types.Value_pb2 import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Field(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing.final class TagsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -47,7 +45,7 @@ class Field(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int @@ -55,11 +53,12 @@ class Field(google.protobuf.message.Message): DESCRIPTION_FIELD_NUMBER: builtins.int name: builtins.str value: feast.types.Value_pb2.ValueType.Enum.ValueType + description: builtins.str + """Description of the field.""" @property def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """Tags for user defined metadata on a field""" - description: builtins.str - """Description of the field.""" + def __init__( self, *, @@ -68,6 +67,6 @@ class Field(google.protobuf.message.Message): tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., description: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["description", b"description", "name", b"name", "tags", b"tags", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["description", b"description", "name", b"name", "tags", b"tags", "value", b"value"]) -> None: ... global___Field = Field diff --git a/sdk/python/feast/protos/feast/types/Field_pb2_grpc.py b/sdk/python/feast/protos/feast/types/Field_pb2_grpc.py index 2daafffebfc..d45667af077 100644 --- a/sdk/python/feast/protos/feast/types/Field_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/types/Field_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/types/Field_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/sdk/python/feast/protos/feast/types/Value_pb2.py b/sdk/python/feast/protos/feast/types/Value_pb2.py index 18ee3311808..8a8723b86cd 100644 --- a/sdk/python/feast/protos/feast/types/Value_pb2.py +++ b/sdk/python/feast/protos/feast/types/Value_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: feast/types/Value.proto -# Protobuf Python Version: 4.25.1 +# Protobuf Python Version: 6.31.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'feast/types/Value.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,8 +29,8 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.types.Value_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - _globals['DESCRIPTOR']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\021feast.proto.typesB\nValueProtoZ0github.com/feast-dev/feast/go/protos/feast/types' _globals['_NULL']._serialized_start=1200 _globals['_NULL']._serialized_end=1216 diff --git a/sdk/python/feast/protos/feast/types/Value_pb2.pyi b/sdk/python/feast/protos/feast/types/Value_pb2.pyi index 15e4870e6a1..3aff8f69558 100644 --- a/sdk/python/feast/protos/feast/types/Value_pb2.pyi +++ b/sdk/python/feast/protos/feast/types/Value_pb2.pyi @@ -16,6 +16,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import google.protobuf.descriptor @@ -36,7 +37,7 @@ class _Null: ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType -class _NullEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Null.ValueType], builtins.type): # noqa: F821 +class _NullEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Null.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor NULL: _Null.ValueType # 0 @@ -45,6 +46,7 @@ class Null(_Null, metaclass=_NullEnumTypeWrapper): ... NULL: Null.ValueType # 0 global___Null = Null +@typing.final class ValueType(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -52,7 +54,7 @@ class ValueType(google.protobuf.message.Message): ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType - class _EnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ValueType._Enum.ValueType], builtins.type): # noqa: F821 + class _EnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ValueType._Enum.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor INVALID: ValueType._Enum.ValueType # 0 BYTES: ValueType._Enum.ValueType # 1 @@ -99,6 +101,7 @@ class ValueType(google.protobuf.message.Message): global___ValueType = ValueType +@typing.final class Value(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -127,6 +130,7 @@ class Value(google.protobuf.message.Message): float_val: builtins.float bool_val: builtins.bool unix_timestamp_val: builtins.int + null_val: global___Null.ValueType @property def bytes_list_val(self) -> global___BytesList: ... @property @@ -143,7 +147,6 @@ class Value(google.protobuf.message.Message): def bool_list_val(self) -> global___BoolList: ... @property def unix_timestamp_list_val(self) -> global___Int64List: ... - null_val: global___Null.ValueType def __init__( self, *, @@ -165,12 +168,13 @@ class Value(google.protobuf.message.Message): unix_timestamp_list_val: global___Int64List | None = ..., null_val: global___Null.ValueType = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["bool_list_val", b"bool_list_val", "bool_val", b"bool_val", "bytes_list_val", b"bytes_list_val", "bytes_val", b"bytes_val", "double_list_val", b"double_list_val", "double_val", b"double_val", "float_list_val", b"float_list_val", "float_val", b"float_val", "int32_list_val", b"int32_list_val", "int32_val", b"int32_val", "int64_list_val", b"int64_list_val", "int64_val", b"int64_val", "null_val", b"null_val", "string_list_val", b"string_list_val", "string_val", b"string_val", "unix_timestamp_list_val", b"unix_timestamp_list_val", "unix_timestamp_val", b"unix_timestamp_val", "val", b"val"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["bool_list_val", b"bool_list_val", "bool_val", b"bool_val", "bytes_list_val", b"bytes_list_val", "bytes_val", b"bytes_val", "double_list_val", b"double_list_val", "double_val", b"double_val", "float_list_val", b"float_list_val", "float_val", b"float_val", "int32_list_val", b"int32_list_val", "int32_val", b"int32_val", "int64_list_val", b"int64_list_val", "int64_val", b"int64_val", "null_val", b"null_val", "string_list_val", b"string_list_val", "string_val", b"string_val", "unix_timestamp_list_val", b"unix_timestamp_list_val", "unix_timestamp_val", b"unix_timestamp_val", "val", b"val"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["val", b"val"]) -> typing_extensions.Literal["bytes_val", "string_val", "int32_val", "int64_val", "double_val", "float_val", "bool_val", "unix_timestamp_val", "bytes_list_val", "string_list_val", "int32_list_val", "int64_list_val", "double_list_val", "float_list_val", "bool_list_val", "unix_timestamp_list_val", "null_val"] | None: ... + def HasField(self, field_name: typing.Literal["bool_list_val", b"bool_list_val", "bool_val", b"bool_val", "bytes_list_val", b"bytes_list_val", "bytes_val", b"bytes_val", "double_list_val", b"double_list_val", "double_val", b"double_val", "float_list_val", b"float_list_val", "float_val", b"float_val", "int32_list_val", b"int32_list_val", "int32_val", b"int32_val", "int64_list_val", b"int64_list_val", "int64_val", b"int64_val", "null_val", b"null_val", "string_list_val", b"string_list_val", "string_val", b"string_val", "unix_timestamp_list_val", b"unix_timestamp_list_val", "unix_timestamp_val", b"unix_timestamp_val", "val", b"val"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["bool_list_val", b"bool_list_val", "bool_val", b"bool_val", "bytes_list_val", b"bytes_list_val", "bytes_val", b"bytes_val", "double_list_val", b"double_list_val", "double_val", b"double_val", "float_list_val", b"float_list_val", "float_val", b"float_val", "int32_list_val", b"int32_list_val", "int32_val", b"int32_val", "int64_list_val", b"int64_list_val", "int64_val", b"int64_val", "null_val", b"null_val", "string_list_val", b"string_list_val", "string_val", b"string_val", "unix_timestamp_list_val", b"unix_timestamp_list_val", "unix_timestamp_val", b"unix_timestamp_val", "val", b"val"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["val", b"val"]) -> typing.Literal["bytes_val", "string_val", "int32_val", "int64_val", "double_val", "float_val", "bool_val", "unix_timestamp_val", "bytes_list_val", "string_list_val", "int32_list_val", "int64_list_val", "double_list_val", "float_list_val", "bool_list_val", "unix_timestamp_list_val", "null_val"] | None: ... global___Value = Value +@typing.final class BytesList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -182,10 +186,11 @@ class BytesList(google.protobuf.message.Message): *, val: collections.abc.Iterable[builtins.bytes] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + def ClearField(self, field_name: typing.Literal["val", b"val"]) -> None: ... global___BytesList = BytesList +@typing.final class StringList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -197,10 +202,11 @@ class StringList(google.protobuf.message.Message): *, val: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + def ClearField(self, field_name: typing.Literal["val", b"val"]) -> None: ... global___StringList = StringList +@typing.final class Int32List(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -212,10 +218,11 @@ class Int32List(google.protobuf.message.Message): *, val: collections.abc.Iterable[builtins.int] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + def ClearField(self, field_name: typing.Literal["val", b"val"]) -> None: ... global___Int32List = Int32List +@typing.final class Int64List(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -227,10 +234,11 @@ class Int64List(google.protobuf.message.Message): *, val: collections.abc.Iterable[builtins.int] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + def ClearField(self, field_name: typing.Literal["val", b"val"]) -> None: ... global___Int64List = Int64List +@typing.final class DoubleList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -242,10 +250,11 @@ class DoubleList(google.protobuf.message.Message): *, val: collections.abc.Iterable[builtins.float] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + def ClearField(self, field_name: typing.Literal["val", b"val"]) -> None: ... global___DoubleList = DoubleList +@typing.final class FloatList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -257,10 +266,11 @@ class FloatList(google.protobuf.message.Message): *, val: collections.abc.Iterable[builtins.float] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + def ClearField(self, field_name: typing.Literal["val", b"val"]) -> None: ... global___FloatList = FloatList +@typing.final class BoolList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -272,10 +282,11 @@ class BoolList(google.protobuf.message.Message): *, val: collections.abc.Iterable[builtins.bool] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + def ClearField(self, field_name: typing.Literal["val", b"val"]) -> None: ... global___BoolList = BoolList +@typing.final class RepeatedValue(google.protobuf.message.Message): """This is to avoid an issue of being unable to specify `repeated value` in oneofs or maps In JSON "val" field can be omitted @@ -291,6 +302,6 @@ class RepeatedValue(google.protobuf.message.Message): *, val: collections.abc.Iterable[global___Value] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + def ClearField(self, field_name: typing.Literal["val", b"val"]) -> None: ... global___RepeatedValue = RepeatedValue diff --git a/sdk/python/feast/protos/feast/types/Value_pb2_grpc.py b/sdk/python/feast/protos/feast/types/Value_pb2_grpc.py index 2daafffebfc..fab6e94574c 100644 --- a/sdk/python/feast/protos/feast/types/Value_pb2_grpc.py +++ b/sdk/python/feast/protos/feast/types/Value_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.75.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in feast/types/Value_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + )