diff --git a/.gitignore b/.gitignore index e4e82bfce46..d558463c657 100644 --- a/.gitignore +++ b/.gitignore @@ -185,7 +185,6 @@ dmypy.json # Protos sdk/python/docs/html -sdk/python/feast/protos/ sdk/go/protos/ go/protos/ diff --git a/Makefile b/Makefile index 8a9f6439673..f4b34124f7c 100644 --- a/Makefile +++ b/Makefile @@ -40,29 +40,20 @@ build: protos build-java build-docker install-python-ci-dependencies: python -m piptools sync sdk/python/requirements/py$(PYTHON_VERSION)-ci-requirements.txt pip install --no-deps -e . - python setup.py build_python_protos --inplace install-python-ci-dependencies-uv: uv pip sync --system sdk/python/requirements/py$(PYTHON_VERSION)-ci-requirements.txt uv pip install --system --no-deps -e . - python setup.py build_python_protos --inplace install-python-ci-dependencies-uv-venv: uv pip sync sdk/python/requirements/py$(PYTHON_VERSION)-ci-requirements.txt uv pip install --no-deps -e . - python setup.py build_python_protos --inplace - -install-protoc-dependencies: - pip install "protobuf<5" "grpcio-tools>=1.56.2,<2" "mypy-protobuf>=3.1" lock-python-ci-dependencies: uv pip compile --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py$(PYTHON_VERSION)-ci-requirements.txt -package-protos: - cp -r ${ROOT_DIR}/protos ${ROOT_DIR}/sdk/python/feast/protos - -compile-protos-python: install-protoc-dependencies - python setup.py build_python_protos --inplace +compile-protos-python: + python infra/scripts/generate_protos.py install-python: python -m piptools sync sdk/python/requirements/py$(PYTHON_VERSION)-requirements.txt diff --git a/infra/scripts/generate_protos.py b/infra/scripts/generate_protos.py new file mode 100644 index 00000000000..2ce7e29e12e --- /dev/null +++ b/infra/scripts/generate_protos.py @@ -0,0 +1,80 @@ +import os +import sys +import glob +import subprocess +from pathlib import Path + +repo_root = str(Path(__file__).resolve().parent) + +PROTO_SUBDIRS = ["core", "registry", "serving", "types", "storage"] +PYTHON_CODE_PREFIX = "sdk/python" + +class BuildPythonProtosCommand: + description = "Builds the proto files into Python files." + user_options = [ + ("inplace", "i", "Write generated proto files to source directory."), + ] + + def __init__(self): + self.python_protoc = [ + sys.executable, + "-m", + "grpc_tools.protoc", + ] + self.proto_folder = "protos" + self.sub_folders = PROTO_SUBDIRS + self.inplace = 0 + + @property + def python_folder(self): + return "sdk/python/feast/protos" + + def _generate_python_protos(self, path: str): + proto_files = glob.glob(os.path.join(self.proto_folder, path)) + Path(self.python_folder).mkdir(parents=True, exist_ok=True) + subprocess.check_call( + self.python_protoc + + [ + "-I", + self.proto_folder, + "--python_out", + self.python_folder, + "--grpc_python_out", + self.python_folder, + "--mypy_out", + self.python_folder, + ] + + proto_files + ) + + def run(self): + for sub_folder in self.sub_folders: + self._generate_python_protos(f"feast/{sub_folder}/*.proto") + # We need the __init__ files for each of the generated subdirs + # so that they are regular packages, and don't need the `--namespace-packages` flags + # when being typechecked using mypy. + with open(f"{self.python_folder}/feast/{sub_folder}/__init__.py", "w"): + pass + + with open(f"{self.python_folder}/__init__.py", "w"): + pass + with open(f"{self.python_folder}/feast/__init__.py", "w"): + pass + + for path in Path(self.python_folder).rglob("*.py"): + for folder in self.sub_folders: + # Read in the file + with open(path, "r") as file: + filedata = file.read() + + # Replace the target string + filedata = filedata.replace( + f"from feast.{folder}", f"from feast.protos.feast.{folder}" + ) + + # Write the file out again + with open(path, "w") as file: + file.write(filedata) + +if __name__ == "__main__": + BuildPythonProtosCommand().run() \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index c91608b6cee..d772bab9ead 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,5 @@ [build-system] requires = [ - "protobuf<5", - "grpcio-tools>=1.56.2,<2", - "mypy-protobuf>=3.1", "pybindgen==0.22.0", "setuptools>=60", "setuptools_scm>=6.2", diff --git a/sdk/python/feast/protos/__init__.py b/sdk/python/feast/protos/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sdk/python/feast/protos/feast/__init__.py b/sdk/python/feast/protos/feast/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sdk/python/feast/protos/feast/core/Aggregation_pb2.py b/sdk/python/feast/protos/feast/core/Aggregation_pb2.py new file mode 100644 index 00000000000..922f8f40aa2 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Aggregation_pb2.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/Aggregation.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66\x65\x61st/core/Aggregation.proto\x12\nfeast.core\x1a\x1egoogle/protobuf/duration.proto\"\x92\x01\n\x0b\x41ggregation\x12\x0e\n\x06\x63olumn\x18\x01 \x01(\t\x12\x10\n\x08\x66unction\x18\x02 \x01(\t\x12.\n\x0btime_window\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x31\n\x0eslide_interval\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationBU\n\x10\x66\x65\x61st.proto.coreB\x10\x41ggregationProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Aggregation_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/Aggregation_pb2.pyi b/sdk/python/feast/protos/feast/core/Aggregation_pb2.pyi new file mode 100644 index 00000000000..ceb8b1f8131 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Aggregation_pb2.pyi @@ -0,0 +1,42 @@ +""" +@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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class Aggregation(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + COLUMN_FIELD_NUMBER: builtins.int + FUNCTION_FIELD_NUMBER: builtins.int + TIME_WINDOW_FIELD_NUMBER: builtins.int + SLIDE_INTERVAL_FIELD_NUMBER: builtins.int + column: builtins.str + function: builtins.str + @property + def time_window(self) -> google.protobuf.duration_pb2.Duration: ... + @property + def slide_interval(self) -> google.protobuf.duration_pb2.Duration: ... + def __init__( + self, + *, + column: builtins.str = ..., + function: builtins.str = ..., + 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: ... + +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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Aggregation_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/DataFormat_pb2.py b/sdk/python/feast/protos/feast/core/DataFormat_pb2.py new file mode 100644 index 00000000000..a3883dcec3b --- /dev/null +++ b/sdk/python/feast/protos/feast/core/DataFormat_pb2.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/DataFormat.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66\x65\x61st/core/DataFormat.proto\x12\nfeast.core\"\xb2\x01\n\nFileFormat\x12>\n\x0eparquet_format\x18\x01 \x01(\x0b\x32$.feast.core.FileFormat.ParquetFormatH\x00\x12:\n\x0c\x64\x65lta_format\x18\x02 \x01(\x0b\x32\".feast.core.FileFormat.DeltaFormatH\x00\x1a\x0f\n\rParquetFormat\x1a\r\n\x0b\x44\x65ltaFormatB\x08\n\x06\x66ormat\"\xb7\x02\n\x0cStreamFormat\x12:\n\x0b\x61vro_format\x18\x01 \x01(\x0b\x32#.feast.core.StreamFormat.AvroFormatH\x00\x12<\n\x0cproto_format\x18\x02 \x01(\x0b\x32$.feast.core.StreamFormat.ProtoFormatH\x00\x12:\n\x0bjson_format\x18\x03 \x01(\x0b\x32#.feast.core.StreamFormat.JsonFormatH\x00\x1a!\n\x0bProtoFormat\x12\x12\n\nclass_path\x18\x01 \x01(\t\x1a!\n\nAvroFormat\x12\x13\n\x0bschema_json\x18\x01 \x01(\t\x1a!\n\nJsonFormat\x12\x13\n\x0bschema_json\x18\x01 \x01(\tB\x08\n\x06\x66ormatBT\n\x10\x66\x65\x61st.proto.coreB\x0f\x44\x61taFormatProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.DataFormat_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\017DataFormatProtoZ/github.com/feast-dev/feast/go/protos/feast/core' + _globals['_FILEFORMAT']._serialized_start=44 + _globals['_FILEFORMAT']._serialized_end=222 + _globals['_FILEFORMAT_PARQUETFORMAT']._serialized_start=182 + _globals['_FILEFORMAT_PARQUETFORMAT']._serialized_end=197 + _globals['_FILEFORMAT_DELTAFORMAT']._serialized_start=199 + _globals['_FILEFORMAT_DELTAFORMAT']._serialized_end=212 + _globals['_STREAMFORMAT']._serialized_start=225 + _globals['_STREAMFORMAT']._serialized_end=536 + _globals['_STREAMFORMAT_PROTOFORMAT']._serialized_start=423 + _globals['_STREAMFORMAT_PROTOFORMAT']._serialized_end=456 + _globals['_STREAMFORMAT_AVROFORMAT']._serialized_start=458 + _globals['_STREAMFORMAT_AVROFORMAT']._serialized_end=491 + _globals['_STREAMFORMAT_JSONFORMAT']._serialized_start=493 + _globals['_STREAMFORMAT_JSONFORMAT']._serialized_end=526 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/DataFormat_pb2.pyi b/sdk/python/feast/protos/feast/core/DataFormat_pb2.pyi new file mode 100644 index 00000000000..1f904e9886a --- /dev/null +++ b/sdk/python/feast/protos/feast/core/DataFormat_pb2.pyi @@ -0,0 +1,143 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2020 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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.message +import sys + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class FileFormat(google.protobuf.message.Message): + """Defines the file format encoding the features/entity data in files""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class ParquetFormat(google.protobuf.message.Message): + """Defines options for the Parquet data format""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + + class DeltaFormat(google.protobuf.message.Message): + """Defines options for delta data format""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + + PARQUET_FORMAT_FIELD_NUMBER: builtins.int + DELTA_FORMAT_FIELD_NUMBER: builtins.int + @property + def parquet_format(self) -> global___FileFormat.ParquetFormat: ... + @property + def delta_format(self) -> global___FileFormat.DeltaFormat: ... + def __init__( + self, + *, + parquet_format: global___FileFormat.ParquetFormat | None = ..., + delta_format: global___FileFormat.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: ... + +global___FileFormat = FileFormat + +class StreamFormat(google.protobuf.message.Message): + """Defines the data format encoding features/entity data in data streams""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class ProtoFormat(google.protobuf.message.Message): + """Defines options for the protobuf data format""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CLASS_PATH_FIELD_NUMBER: builtins.int + class_path: builtins.str + """Classpath to the generated Java Protobuf class that can be used to decode + Feature data from the obtained stream message + """ + def __init__( + self, + *, + class_path: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["class_path", b"class_path"]) -> None: ... + + class AvroFormat(google.protobuf.message.Message): + """Defines options for the avro data format""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SCHEMA_JSON_FIELD_NUMBER: builtins.int + schema_json: builtins.str + """Optional if used in a File DataSource as schema is embedded in avro file. + Specifies the schema of the Avro message as JSON string. + """ + def __init__( + self, + *, + schema_json: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["schema_json", b"schema_json"]) -> None: ... + + class JsonFormat(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SCHEMA_JSON_FIELD_NUMBER: builtins.int + schema_json: builtins.str + def __init__( + self, + *, + schema_json: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["schema_json", b"schema_json"]) -> None: ... + + AVRO_FORMAT_FIELD_NUMBER: builtins.int + PROTO_FORMAT_FIELD_NUMBER: builtins.int + JSON_FORMAT_FIELD_NUMBER: builtins.int + @property + def avro_format(self) -> global___StreamFormat.AvroFormat: ... + @property + def proto_format(self) -> global___StreamFormat.ProtoFormat: ... + @property + def json_format(self) -> global___StreamFormat.JsonFormat: ... + def __init__( + self, + *, + avro_format: global___StreamFormat.AvroFormat | None = ..., + 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: ... + +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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/DataFormat_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/DataSource_pb2.py b/sdk/python/feast/protos/feast/core/DataSource_pb2.py new file mode 100644 index 00000000000..b58c33a3830 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/DataSource_pb2.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/DataSource.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from feast.protos.feast.core import DataFormat_pb2 as feast_dot_core_dot_DataFormat__pb2 +from feast.protos.feast.types import Value_pb2 as feast_dot_types_dot_Value__pb2 +from feast.protos.feast.core import Feature_pb2 as feast_dot_core_dot_Feature__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66\x65\x61st/core/DataSource.proto\x12\nfeast.core\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1b\x66\x65\x61st/core/DataFormat.proto\x1a\x17\x66\x65\x61st/types/Value.proto\x1a\x18\x66\x65\x61st/core/Feature.proto\"\xc0\x16\n\nDataSource\x12\x0c\n\x04name\x18\x14 \x01(\t\x12\x0f\n\x07project\x18\x15 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x17 \x01(\t\x12.\n\x04tags\x18\x18 \x03(\x0b\x32 .feast.core.DataSource.TagsEntry\x12\r\n\x05owner\x18\x19 \x01(\t\x12/\n\x04type\x18\x01 \x01(\x0e\x32!.feast.core.DataSource.SourceType\x12?\n\rfield_mapping\x18\x02 \x03(\x0b\x32(.feast.core.DataSource.FieldMappingEntry\x12\x17\n\x0ftimestamp_field\x18\x03 \x01(\t\x12\x1d\n\x15\x64\x61te_partition_column\x18\x04 \x01(\t\x12 \n\x18\x63reated_timestamp_column\x18\x05 \x01(\t\x12\x1e\n\x16\x64\x61ta_source_class_type\x18\x11 \x01(\t\x12,\n\x0c\x62\x61tch_source\x18\x1a \x01(\x0b\x32\x16.feast.core.DataSource\x12/\n\x04meta\x18\x32 \x01(\x0b\x32!.feast.core.DataSource.SourceMeta\x12:\n\x0c\x66ile_options\x18\x0b \x01(\x0b\x32\".feast.core.DataSource.FileOptionsH\x00\x12\x42\n\x10\x62igquery_options\x18\x0c \x01(\x0b\x32&.feast.core.DataSource.BigQueryOptionsH\x00\x12<\n\rkafka_options\x18\r \x01(\x0b\x32#.feast.core.DataSource.KafkaOptionsH\x00\x12@\n\x0fkinesis_options\x18\x0e \x01(\x0b\x32%.feast.core.DataSource.KinesisOptionsH\x00\x12\x42\n\x10redshift_options\x18\x0f \x01(\x0b\x32&.feast.core.DataSource.RedshiftOptionsH\x00\x12I\n\x14request_data_options\x18\x12 \x01(\x0b\x32).feast.core.DataSource.RequestDataOptionsH\x00\x12\x44\n\x0e\x63ustom_options\x18\x10 \x01(\x0b\x32*.feast.core.DataSource.CustomSourceOptionsH\x00\x12\x44\n\x11snowflake_options\x18\x13 \x01(\x0b\x32\'.feast.core.DataSource.SnowflakeOptionsH\x00\x12:\n\x0cpush_options\x18\x16 \x01(\x0b\x32\".feast.core.DataSource.PushOptionsH\x00\x12<\n\rspark_options\x18\x1b \x01(\x0b\x32#.feast.core.DataSource.SparkOptionsH\x00\x12<\n\rtrino_options\x18\x1e \x01(\x0b\x32#.feast.core.DataSource.TrinoOptionsH\x00\x12>\n\x0e\x61thena_options\x18# \x01(\x0b\x32$.feast.core.DataSource.AthenaOptionsH\x00\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x33\n\x11\x46ieldMappingEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x82\x01\n\nSourceMeta\x12:\n\x16\x65\x61rliestEventTimestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x38\n\x14latestEventTimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\x65\n\x0b\x46ileOptions\x12+\n\x0b\x66ile_format\x18\x01 \x01(\x0b\x32\x16.feast.core.FileFormat\x12\x0b\n\x03uri\x18\x02 \x01(\t\x12\x1c\n\x14s3_endpoint_override\x18\x03 \x01(\t\x1a/\n\x0f\x42igQueryOptions\x12\r\n\x05table\x18\x01 \x01(\t\x12\r\n\x05query\x18\x02 \x01(\t\x1a,\n\x0cTrinoOptions\x12\r\n\x05table\x18\x01 \x01(\t\x12\r\n\x05query\x18\x02 \x01(\t\x1a\xae\x01\n\x0cKafkaOptions\x12\x1f\n\x17kafka_bootstrap_servers\x18\x01 \x01(\t\x12\r\n\x05topic\x18\x02 \x01(\t\x12\x30\n\x0emessage_format\x18\x03 \x01(\x0b\x32\x18.feast.core.StreamFormat\x12<\n\x19watermark_delay_threshold\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x66\n\x0eKinesisOptions\x12\x0e\n\x06region\x18\x01 \x01(\t\x12\x13\n\x0bstream_name\x18\x02 \x01(\t\x12/\n\rrecord_format\x18\x03 \x01(\x0b\x32\x18.feast.core.StreamFormat\x1aQ\n\x0fRedshiftOptions\x12\r\n\x05table\x18\x01 \x01(\t\x12\r\n\x05query\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x10\n\x08\x64\x61tabase\x18\x04 \x01(\t\x1aT\n\rAthenaOptions\x12\r\n\x05table\x18\x01 \x01(\t\x12\r\n\x05query\x18\x02 \x01(\t\x12\x10\n\x08\x64\x61tabase\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x61ta_source\x18\x04 \x01(\t\x1aX\n\x10SnowflakeOptions\x12\r\n\x05table\x18\x01 \x01(\t\x12\r\n\x05query\x18\x02 \x01(\t\x12\x0e\n\x06schema\x18\x03 \x01(\t\x12\x10\n\x08\x64\x61tabase\x18\x04 \x01(\tJ\x04\x08\x05\x10\x06\x1aO\n\x0cSparkOptions\x12\r\n\x05table\x18\x01 \x01(\t\x12\r\n\x05query\x18\x02 \x01(\t\x12\x0c\n\x04path\x18\x03 \x01(\t\x12\x13\n\x0b\x66ile_format\x18\x04 \x01(\t\x1a,\n\x13\x43ustomSourceOptions\x12\x15\n\rconfiguration\x18\x01 \x01(\x0c\x1a\xf7\x01\n\x12RequestDataOptions\x12Z\n\x11\x64\x65precated_schema\x18\x02 \x03(\x0b\x32?.feast.core.DataSource.RequestDataOptions.DeprecatedSchemaEntry\x12)\n\x06schema\x18\x03 \x03(\x0b\x32\x19.feast.core.FeatureSpecV2\x1aT\n\x15\x44\x65precatedSchemaEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12*\n\x05value\x18\x02 \x01(\x0e\x32\x1b.feast.types.ValueType.Enum:\x02\x38\x01J\x04\x08\x01\x10\x02\x1a\x13\n\x0bPushOptionsJ\x04\x08\x01\x10\x02\"\xf8\x01\n\nSourceType\x12\x0b\n\x07INVALID\x10\x00\x12\x0e\n\nBATCH_FILE\x10\x01\x12\x13\n\x0f\x42\x41TCH_SNOWFLAKE\x10\x08\x12\x12\n\x0e\x42\x41TCH_BIGQUERY\x10\x02\x12\x12\n\x0e\x42\x41TCH_REDSHIFT\x10\x05\x12\x10\n\x0cSTREAM_KAFKA\x10\x03\x12\x12\n\x0eSTREAM_KINESIS\x10\x04\x12\x11\n\rCUSTOM_SOURCE\x10\x06\x12\x12\n\x0eREQUEST_SOURCE\x10\x07\x12\x0f\n\x0bPUSH_SOURCE\x10\t\x12\x0f\n\x0b\x42\x41TCH_TRINO\x10\n\x12\x0f\n\x0b\x42\x41TCH_SPARK\x10\x0b\x12\x10\n\x0c\x42\x41TCH_ATHENA\x10\x0c\x42\t\n\x07optionsJ\x04\x08\x06\x10\x0b\x42T\n\x10\x66\x65\x61st.proto.coreB\x0f\x44\x61taSourceProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.DataSource_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'8\001' + _globals['_DATASOURCE_FIELDMAPPINGENTRY']._options = None + _globals['_DATASOURCE_FIELDMAPPINGENTRY']._serialized_options = b'8\001' + _globals['_DATASOURCE_REQUESTDATAOPTIONS_DEPRECATEDSCHEMAENTRY']._options = None + _globals['_DATASOURCE_REQUESTDATAOPTIONS_DEPRECATEDSCHEMAENTRY']._serialized_options = b'8\001' + _globals['_DATASOURCE']._serialized_start=189 + _globals['_DATASOURCE']._serialized_end=3069 + _globals['_DATASOURCE_TAGSENTRY']._serialized_start=1436 + _globals['_DATASOURCE_TAGSENTRY']._serialized_end=1479 + _globals['_DATASOURCE_FIELDMAPPINGENTRY']._serialized_start=1481 + _globals['_DATASOURCE_FIELDMAPPINGENTRY']._serialized_end=1532 + _globals['_DATASOURCE_SOURCEMETA']._serialized_start=1535 + _globals['_DATASOURCE_SOURCEMETA']._serialized_end=1665 + _globals['_DATASOURCE_FILEOPTIONS']._serialized_start=1667 + _globals['_DATASOURCE_FILEOPTIONS']._serialized_end=1768 + _globals['_DATASOURCE_BIGQUERYOPTIONS']._serialized_start=1770 + _globals['_DATASOURCE_BIGQUERYOPTIONS']._serialized_end=1817 + _globals['_DATASOURCE_TRINOOPTIONS']._serialized_start=1819 + _globals['_DATASOURCE_TRINOOPTIONS']._serialized_end=1863 + _globals['_DATASOURCE_KAFKAOPTIONS']._serialized_start=1866 + _globals['_DATASOURCE_KAFKAOPTIONS']._serialized_end=2040 + _globals['_DATASOURCE_KINESISOPTIONS']._serialized_start=2042 + _globals['_DATASOURCE_KINESISOPTIONS']._serialized_end=2144 + _globals['_DATASOURCE_REDSHIFTOPTIONS']._serialized_start=2146 + _globals['_DATASOURCE_REDSHIFTOPTIONS']._serialized_end=2227 + _globals['_DATASOURCE_ATHENAOPTIONS']._serialized_start=2229 + _globals['_DATASOURCE_ATHENAOPTIONS']._serialized_end=2313 + _globals['_DATASOURCE_SNOWFLAKEOPTIONS']._serialized_start=2315 + _globals['_DATASOURCE_SNOWFLAKEOPTIONS']._serialized_end=2403 + _globals['_DATASOURCE_SPARKOPTIONS']._serialized_start=2405 + _globals['_DATASOURCE_SPARKOPTIONS']._serialized_end=2484 + _globals['_DATASOURCE_CUSTOMSOURCEOPTIONS']._serialized_start=2486 + _globals['_DATASOURCE_CUSTOMSOURCEOPTIONS']._serialized_end=2530 + _globals['_DATASOURCE_REQUESTDATAOPTIONS']._serialized_start=2533 + _globals['_DATASOURCE_REQUESTDATAOPTIONS']._serialized_end=2780 + _globals['_DATASOURCE_REQUESTDATAOPTIONS_DEPRECATEDSCHEMAENTRY']._serialized_start=2690 + _globals['_DATASOURCE_REQUESTDATAOPTIONS_DEPRECATEDSCHEMAENTRY']._serialized_end=2774 + _globals['_DATASOURCE_PUSHOPTIONS']._serialized_start=2782 + _globals['_DATASOURCE_PUSHOPTIONS']._serialized_end=2801 + _globals['_DATASOURCE_SOURCETYPE']._serialized_start=2804 + _globals['_DATASOURCE_SOURCETYPE']._serialized_end=3052 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/DataSource_pb2.pyi b/sdk/python/feast/protos/feast/core/DataSource_pb2.pyi new file mode 100644 index 00000000000..94336638e19 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/DataSource_pb2.pyi @@ -0,0 +1,559 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2020 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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 +import feast.core.Feature_pb2 +import feast.types.Value_pb2 +import google.protobuf.descriptor +import google.protobuf.duration_pb2 +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import google.protobuf.timestamp_pb2 +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class DataSource(google.protobuf.message.Message): + """Defines a Data Source that can be used source Feature data + Next available id: 28 + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _SourceType: + 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 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + INVALID: DataSource._SourceType.ValueType # 0 + BATCH_FILE: DataSource._SourceType.ValueType # 1 + BATCH_SNOWFLAKE: DataSource._SourceType.ValueType # 8 + BATCH_BIGQUERY: DataSource._SourceType.ValueType # 2 + BATCH_REDSHIFT: DataSource._SourceType.ValueType # 5 + STREAM_KAFKA: DataSource._SourceType.ValueType # 3 + STREAM_KINESIS: DataSource._SourceType.ValueType # 4 + CUSTOM_SOURCE: DataSource._SourceType.ValueType # 6 + REQUEST_SOURCE: DataSource._SourceType.ValueType # 7 + PUSH_SOURCE: DataSource._SourceType.ValueType # 9 + BATCH_TRINO: DataSource._SourceType.ValueType # 10 + BATCH_SPARK: DataSource._SourceType.ValueType # 11 + BATCH_ATHENA: DataSource._SourceType.ValueType # 12 + + class SourceType(_SourceType, metaclass=_SourceTypeEnumTypeWrapper): + """Type of Data Source. + Next available id: 12 + """ + + INVALID: DataSource.SourceType.ValueType # 0 + BATCH_FILE: DataSource.SourceType.ValueType # 1 + BATCH_SNOWFLAKE: DataSource.SourceType.ValueType # 8 + BATCH_BIGQUERY: DataSource.SourceType.ValueType # 2 + BATCH_REDSHIFT: DataSource.SourceType.ValueType # 5 + STREAM_KAFKA: DataSource.SourceType.ValueType # 3 + STREAM_KINESIS: DataSource.SourceType.ValueType # 4 + CUSTOM_SOURCE: DataSource.SourceType.ValueType # 6 + REQUEST_SOURCE: DataSource.SourceType.ValueType # 7 + PUSH_SOURCE: DataSource.SourceType.ValueType # 9 + BATCH_TRINO: DataSource.SourceType.ValueType # 10 + BATCH_SPARK: DataSource.SourceType.ValueType # 11 + BATCH_ATHENA: DataSource.SourceType.ValueType # 12 + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + class FieldMappingEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + class SourceMeta(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + EARLIESTEVENTTIMESTAMP_FIELD_NUMBER: builtins.int + LATESTEVENTTIMESTAMP_FIELD_NUMBER: builtins.int + @property + def earliestEventTimestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def latestEventTimestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + def __init__( + self, + *, + earliestEventTimestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + latestEventTimestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["earliestEventTimestamp", b"earliestEventTimestamp", "latestEventTimestamp", b"latestEventTimestamp"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["earliestEventTimestamp", b"earliestEventTimestamp", "latestEventTimestamp", b"latestEventTimestamp"]) -> None: ... + + class FileOptions(google.protobuf.message.Message): + """Defines options for DataSource that sources features from a file""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + 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 + gs://path/to/file for GCP GCS storage + file:///path/to/file for local storage + """ + s3_endpoint_override: builtins.str + """override AWS S3 storage endpoint with custom S3 endpoint""" + def __init__( + self, + *, + file_format: feast.core.DataFormat_pb2.FileFormat | None = ..., + 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: ... + + class BigQueryOptions(google.protobuf.message.Message): + """Defines options for DataSource that sources features from a BigQuery Query""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TABLE_FIELD_NUMBER: builtins.int + QUERY_FIELD_NUMBER: builtins.int + table: builtins.str + """Full table reference in the form of [project:dataset.table]""" + query: builtins.str + """SQL query that returns a table containing feature data. Must contain an event_timestamp column, and respective + entity columns + """ + def __init__( + self, + *, + table: builtins.str = ..., + query: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["query", b"query", "table", b"table"]) -> None: ... + + class TrinoOptions(google.protobuf.message.Message): + """Defines options for DataSource that sources features from a Trino Query""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TABLE_FIELD_NUMBER: builtins.int + QUERY_FIELD_NUMBER: builtins.int + table: builtins.str + """Full table reference in the form of [project:dataset.table]""" + query: builtins.str + """SQL query that returns a table containing feature data. Must contain an event_timestamp column, and respective + entity columns + """ + def __init__( + self, + *, + table: builtins.str = ..., + query: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["query", b"query", "table", b"table"]) -> None: ... + + 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 + Java Protobuf class at the given class path + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KAFKA_BOOTSTRAP_SERVERS_FIELD_NUMBER: builtins.int + TOPIC_FIELD_NUMBER: builtins.int + MESSAGE_FORMAT_FIELD_NUMBER: builtins.int + WATERMARK_DELAY_THRESHOLD_FIELD_NUMBER: builtins.int + kafka_bootstrap_servers: builtins.str + """Comma separated list of Kafka bootstrap servers. Used for feature tables without a defined source host[:port]]""" + topic: builtins.str + """Kafka topic to collect feature data from.""" + @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, + *, + kafka_bootstrap_servers: builtins.str = ..., + topic: builtins.str = ..., + 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: ... + + 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 + Java Protobuf class at the given class path + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + REGION_FIELD_NUMBER: builtins.int + STREAM_NAME_FIELD_NUMBER: builtins.int + RECORD_FORMAT_FIELD_NUMBER: builtins.int + region: builtins.str + """AWS region of the Kinesis stream""" + stream_name: builtins.str + """Name of the Kinesis stream to obtain feature data from.""" + @property + def record_format(self) -> feast.core.DataFormat_pb2.StreamFormat: + """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, + *, + region: builtins.str = ..., + 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: ... + + class RedshiftOptions(google.protobuf.message.Message): + """Defines options for DataSource that sources features from a Redshift Query""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TABLE_FIELD_NUMBER: builtins.int + QUERY_FIELD_NUMBER: builtins.int + SCHEMA_FIELD_NUMBER: builtins.int + DATABASE_FIELD_NUMBER: builtins.int + table: builtins.str + """Redshift table name""" + query: builtins.str + """SQL query that returns a table containing feature data. Must contain an event_timestamp column, and respective + entity columns + """ + schema: builtins.str + """Redshift schema name""" + database: builtins.str + """Redshift database name""" + def __init__( + self, + *, + table: builtins.str = ..., + query: builtins.str = ..., + 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: ... + + class AthenaOptions(google.protobuf.message.Message): + """Defines options for DataSource that sources features from a Athena Query""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TABLE_FIELD_NUMBER: builtins.int + QUERY_FIELD_NUMBER: builtins.int + DATABASE_FIELD_NUMBER: builtins.int + DATA_SOURCE_FIELD_NUMBER: builtins.int + table: builtins.str + """Athena table name""" + query: builtins.str + """SQL query that returns a table containing feature data. Must contain an event_timestamp column, and respective + entity columns + """ + database: builtins.str + """Athena database name""" + data_source: builtins.str + """Athena schema name""" + def __init__( + self, + *, + table: builtins.str = ..., + query: builtins.str = ..., + 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: ... + + class SnowflakeOptions(google.protobuf.message.Message): + """Defines options for DataSource that sources features from a Snowflake Query""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TABLE_FIELD_NUMBER: builtins.int + QUERY_FIELD_NUMBER: builtins.int + SCHEMA_FIELD_NUMBER: builtins.int + DATABASE_FIELD_NUMBER: builtins.int + table: builtins.str + """Snowflake table name""" + query: builtins.str + """SQL query that returns a table containing feature data. Must contain an event_timestamp column, and respective + entity columns + """ + schema: builtins.str + """Snowflake schema name""" + database: builtins.str + """Snowflake schema name""" + def __init__( + self, + *, + table: builtins.str = ..., + query: builtins.str = ..., + 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: ... + + class SparkOptions(google.protobuf.message.Message): + """Defines options for DataSource that sources features from a spark table/query""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TABLE_FIELD_NUMBER: builtins.int + QUERY_FIELD_NUMBER: builtins.int + PATH_FIELD_NUMBER: builtins.int + FILE_FORMAT_FIELD_NUMBER: builtins.int + table: builtins.str + """Table name""" + query: builtins.str + """Spark SQl query that returns the table, this is an alternative to `table`""" + path: builtins.str + """Path from which spark can read the table, this is an alternative to `table`""" + file_format: builtins.str + """Format of files at `path` (e.g. parquet, avro, etc)""" + def __init__( + self, + *, + table: builtins.str = ..., + query: builtins.str = ..., + path: builtins.str = ..., + file_format: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["file_format", b"file_format", "path", b"path", "query", b"query", "table", b"table"]) -> None: ... + + class CustomSourceOptions(google.protobuf.message.Message): + """Defines configuration for custom third-party data sources.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CONFIGURATION_FIELD_NUMBER: builtins.int + configuration: builtins.bytes + """Serialized configuration information for the data source. The implementer of the custom data source is + responsible for serializing and deserializing data from bytes + """ + def __init__( + self, + *, + configuration: builtins.bytes = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["configuration", b"configuration"]) -> None: ... + + class RequestDataOptions(google.protobuf.message.Message): + """Defines options for DataSource that sources features from request data""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class DeprecatedSchemaEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: feast.types.Value_pb2.ValueType.Enum.ValueType + def __init__( + self, + *, + 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: ... + + 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__( + self, + *, + 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: ... + + 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. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + DESCRIPTION_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + OWNER_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + FIELD_MAPPING_FIELD_NUMBER: builtins.int + TIMESTAMP_FIELD_FIELD_NUMBER: builtins.int + DATE_PARTITION_COLUMN_FIELD_NUMBER: builtins.int + CREATED_TIMESTAMP_COLUMN_FIELD_NUMBER: builtins.int + DATA_SOURCE_CLASS_TYPE_FIELD_NUMBER: builtins.int + BATCH_SOURCE_FIELD_NUMBER: builtins.int + META_FIELD_NUMBER: builtins.int + FILE_OPTIONS_FIELD_NUMBER: builtins.int + BIGQUERY_OPTIONS_FIELD_NUMBER: builtins.int + KAFKA_OPTIONS_FIELD_NUMBER: builtins.int + KINESIS_OPTIONS_FIELD_NUMBER: builtins.int + REDSHIFT_OPTIONS_FIELD_NUMBER: builtins.int + REQUEST_DATA_OPTIONS_FIELD_NUMBER: builtins.int + CUSTOM_OPTIONS_FIELD_NUMBER: builtins.int + SNOWFLAKE_OPTIONS_FIELD_NUMBER: builtins.int + PUSH_OPTIONS_FIELD_NUMBER: builtins.int + SPARK_OPTIONS_FIELD_NUMBER: builtins.int + TRINO_OPTIONS_FIELD_NUMBER: builtins.int + ATHENA_OPTIONS_FIELD_NUMBER: builtins.int + name: builtins.str + """Unique name of data source within the project""" + 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 + """(Optional) Specify partition column + useful for file sources + """ + created_timestamp_column: builtins.str + """Must specify creation timestamp column name""" + data_source_class_type: builtins.str + """This is an internal field that is represents the python class for the data source object a proto object represents. + This should be set by feast, and not by users. + 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 batch_source(self) -> global___DataSource: + """Optional batch source for streaming sources for historical features and materialization.""" + @property + def meta(self) -> global___DataSource.SourceMeta: ... + @property + def file_options(self) -> global___DataSource.FileOptions: ... + @property + def bigquery_options(self) -> global___DataSource.BigQueryOptions: ... + @property + def kafka_options(self) -> global___DataSource.KafkaOptions: ... + @property + def kinesis_options(self) -> global___DataSource.KinesisOptions: ... + @property + def redshift_options(self) -> global___DataSource.RedshiftOptions: ... + @property + def request_data_options(self) -> global___DataSource.RequestDataOptions: ... + @property + def custom_options(self) -> global___DataSource.CustomSourceOptions: ... + @property + def snowflake_options(self) -> global___DataSource.SnowflakeOptions: ... + @property + def push_options(self) -> global___DataSource.PushOptions: ... + @property + def spark_options(self) -> global___DataSource.SparkOptions: ... + @property + def trino_options(self) -> global___DataSource.TrinoOptions: ... + @property + def athena_options(self) -> global___DataSource.AthenaOptions: ... + def __init__( + self, + *, + name: builtins.str = ..., + project: builtins.str = ..., + description: builtins.str = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + owner: builtins.str = ..., + type: global___DataSource.SourceType.ValueType = ..., + field_mapping: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + timestamp_field: builtins.str = ..., + date_partition_column: builtins.str = ..., + created_timestamp_column: builtins.str = ..., + data_source_class_type: builtins.str = ..., + batch_source: global___DataSource | None = ..., + meta: global___DataSource.SourceMeta | None = ..., + file_options: global___DataSource.FileOptions | None = ..., + bigquery_options: global___DataSource.BigQueryOptions | None = ..., + kafka_options: global___DataSource.KafkaOptions | None = ..., + kinesis_options: global___DataSource.KinesisOptions | None = ..., + redshift_options: global___DataSource.RedshiftOptions | None = ..., + request_data_options: global___DataSource.RequestDataOptions | None = ..., + custom_options: global___DataSource.CustomSourceOptions | None = ..., + snowflake_options: global___DataSource.SnowflakeOptions | None = ..., + push_options: global___DataSource.PushOptions | None = ..., + spark_options: global___DataSource.SparkOptions | None = ..., + 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: ... + +global___DataSource = DataSource diff --git a/sdk/python/feast/protos/feast/core/DataSource_pb2_grpc.py b/sdk/python/feast/protos/feast/core/DataSource_pb2_grpc.py new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/DataSource_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/DatastoreTable_pb2.py b/sdk/python/feast/protos/feast/core/DatastoreTable_pb2.py new file mode 100644 index 00000000000..c5dbc3ec64a --- /dev/null +++ b/sdk/python/feast/protos/feast/core/DatastoreTable_pb2.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/DatastoreTable.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x66\x65\x61st/core/DatastoreTable.proto\x12\nfeast.core\x1a\x1egoogle/protobuf/wrappers.proto\"\xc2\x01\n\x0e\x44\x61tastoreTable\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x30\n\nproject_id\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12/\n\tnamespace\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12.\n\x08\x64\x61tabase\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.StringValueBX\n\x10\x66\x65\x61st.proto.coreB\x13\x44\x61tastoreTableProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.DatastoreTable_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/DatastoreTable_pb2.pyi b/sdk/python/feast/protos/feast/core/DatastoreTable_pb2.pyi new file mode 100644 index 00000000000..6339a97536e --- /dev/null +++ b/sdk/python/feast/protos/feast/core/DatastoreTable_pb2.pyi @@ -0,0 +1,67 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +* Copyright 2021 The Feast Authors +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* 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.message +import google.protobuf.wrappers_pb2 +import sys + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class DatastoreTable(google.protobuf.message.Message): + """Represents a Datastore table""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PROJECT_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + PROJECT_ID_FIELD_NUMBER: builtins.int + NAMESPACE_FIELD_NUMBER: builtins.int + DATABASE_FIELD_NUMBER: builtins.int + project: builtins.str + """Feast project of the table""" + name: builtins.str + """Name of the table""" + @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, + *, + project: builtins.str = ..., + name: builtins.str = ..., + project_id: google.protobuf.wrappers_pb2.StringValue | None = ..., + 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: ... + +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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/DatastoreTable_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/DynamoDBTable_pb2.py b/sdk/python/feast/protos/feast/core/DynamoDBTable_pb2.py new file mode 100644 index 00000000000..34b813f39a1 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/DynamoDBTable_pb2.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/DynamoDBTable.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1e\x66\x65\x61st/core/DynamoDBTable.proto\x12\nfeast.core\"-\n\rDynamoDBTable\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06region\x18\x02 \x01(\tBW\n\x10\x66\x65\x61st.proto.coreB\x12\x44ynamoDBTableProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.DynamoDBTable_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\020feast.proto.coreB\022DynamoDBTableProtoZ/github.com/feast-dev/feast/go/protos/feast/core' + _globals['_DYNAMODBTABLE']._serialized_start=46 + _globals['_DYNAMODBTABLE']._serialized_end=91 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/DynamoDBTable_pb2.pyi b/sdk/python/feast/protos/feast/core/DynamoDBTable_pb2.pyi new file mode 100644 index 00000000000..cd9edd9a031 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/DynamoDBTable_pb2.pyi @@ -0,0 +1,50 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +* Copyright 2021 The Feast Authors +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* 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.message +import sys + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class DynamoDBTable(google.protobuf.message.Message): + """Represents a DynamoDB table""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + REGION_FIELD_NUMBER: builtins.int + name: builtins.str + """Name of the table""" + region: builtins.str + """Region of the table""" + def __init__( + self, + *, + name: builtins.str = ..., + region: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "region", b"region"]) -> None: ... + +global___DynamoDBTable = DynamoDBTable diff --git a/sdk/python/feast/protos/feast/core/DynamoDBTable_pb2_grpc.py b/sdk/python/feast/protos/feast/core/DynamoDBTable_pb2_grpc.py new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/DynamoDBTable_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/Entity_pb2.py b/sdk/python/feast/protos/feast/core/Entity_pb2.py new file mode 100644 index 00000000000..5a192854cab --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Entity_pb2.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/Entity.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from feast.protos.feast.types import Value_pb2 as feast_dot_types_dot_Value__pb2 +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.TimestampBP\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 + _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']._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 +# @@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 new file mode 100644 index 00000000000..732b3e10326 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Entity_pb2.pyi @@ -0,0 +1,130 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +* Copyright 2020 The Feast Authors +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* 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 google.protobuf.timestamp_pb2 +import sys + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class Entity(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEC_FIELD_NUMBER: builtins.int + META_FIELD_NUMBER: builtins.int + @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: ... + +global___Entity = Entity + +class EntitySpecV2(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + VALUE_TYPE_FIELD_NUMBER: builtins.int + DESCRIPTION_FIELD_NUMBER: builtins.int + JOIN_KEY_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + OWNER_FIELD_NUMBER: builtins.int + name: builtins.str + """Name of the entity.""" + project: builtins.str + """Name of Feast project that this feature table belongs to.""" + value_type: feast.types.Value_pb2.ValueType.Enum.ValueType + """Type of the entity.""" + 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).""" + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + """User defined metadata""" + owner: builtins.str + """Owner of the entity.""" + def __init__( + self, + *, + name: builtins.str = ..., + project: builtins.str = ..., + value_type: feast.types.Value_pb2.ValueType.Enum.ValueType = ..., + description: builtins.str = ..., + join_key: builtins.str = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + owner: builtins.str = ..., + ) -> 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: ... + +global___EntitySpecV2 = EntitySpecV2 + +class EntityMeta(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CREATED_TIMESTAMP_FIELD_NUMBER: builtins.int + LAST_UPDATED_TIMESTAMP_FIELD_NUMBER: builtins.int + @property + def created_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def last_updated_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + 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: ... + +global___EntityMeta = EntityMeta diff --git a/sdk/python/feast/protos/feast/core/Entity_pb2_grpc.py b/sdk/python/feast/protos/feast/core/Entity_pb2_grpc.py new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Entity_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/FeatureService_pb2.py b/sdk/python/feast/protos/feast/core/FeatureService_pb2.py new file mode 100644 index 00000000000..cf6ac46ac54 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/FeatureService_pb2.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/FeatureService.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from feast.protos.feast.core import FeatureViewProjection_pb2 as feast_dot_core_dot_FeatureViewProjection__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x66\x65\x61st/core/FeatureService.proto\x12\nfeast.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a&feast/core/FeatureViewProjection.proto\"l\n\x0e\x46\x65\x61tureService\x12,\n\x04spec\x18\x01 \x01(\x0b\x32\x1e.feast.core.FeatureServiceSpec\x12,\n\x04meta\x18\x02 \x01(\x0b\x32\x1e.feast.core.FeatureServiceMeta\"\xa4\x02\n\x12\x46\x65\x61tureServiceSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x33\n\x08\x66\x65\x61tures\x18\x03 \x03(\x0b\x32!.feast.core.FeatureViewProjection\x12\x36\n\x04tags\x18\x04 \x03(\x0b\x32(.feast.core.FeatureServiceSpec.TagsEntry\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\x12\r\n\x05owner\x18\x06 \x01(\t\x12\x31\n\x0elogging_config\x18\x07 \x01(\x0b\x32\x19.feast.core.LoggingConfig\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x87\x01\n\x12\x46\x65\x61tureServiceMeta\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\"\x9a\x07\n\rLoggingConfig\x12\x13\n\x0bsample_rate\x18\x01 \x01(\x02\x12\x45\n\x10\x66ile_destination\x18\x03 \x01(\x0b\x32).feast.core.LoggingConfig.FileDestinationH\x00\x12M\n\x14\x62igquery_destination\x18\x04 \x01(\x0b\x32-.feast.core.LoggingConfig.BigQueryDestinationH\x00\x12M\n\x14redshift_destination\x18\x05 \x01(\x0b\x32-.feast.core.LoggingConfig.RedshiftDestinationH\x00\x12O\n\x15snowflake_destination\x18\x06 \x01(\x0b\x32..feast.core.LoggingConfig.SnowflakeDestinationH\x00\x12I\n\x12\x63ustom_destination\x18\x07 \x01(\x0b\x32+.feast.core.LoggingConfig.CustomDestinationH\x00\x12I\n\x12\x61thena_destination\x18\x08 \x01(\x0b\x32+.feast.core.LoggingConfig.AthenaDestinationH\x00\x1aS\n\x0f\x46ileDestination\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x1c\n\x14s3_endpoint_override\x18\x02 \x01(\t\x12\x14\n\x0cpartition_by\x18\x03 \x03(\t\x1a(\n\x13\x42igQueryDestination\x12\x11\n\ttable_ref\x18\x01 \x01(\t\x1a)\n\x13RedshiftDestination\x12\x12\n\ntable_name\x18\x01 \x01(\t\x1a\'\n\x11\x41thenaDestination\x12\x12\n\ntable_name\x18\x01 \x01(\t\x1a*\n\x14SnowflakeDestination\x12\x12\n\ntable_name\x18\x01 \x01(\t\x1a\x99\x01\n\x11\x43ustomDestination\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12G\n\x06\x63onfig\x18\x02 \x03(\x0b\x32\x37.feast.core.LoggingConfig.CustomDestination.ConfigEntry\x1a-\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\r\n\x0b\x64\x65stinationBX\n\x10\x66\x65\x61st.proto.coreB\x13\x46\x65\x61tureServiceProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.FeatureService_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'8\001' + _globals['_LOGGINGCONFIG_CUSTOMDESTINATION_CONFIGENTRY']._options = None + _globals['_LOGGINGCONFIG_CUSTOMDESTINATION_CONFIGENTRY']._serialized_options = b'8\001' + _globals['_FEATURESERVICE']._serialized_start=120 + _globals['_FEATURESERVICE']._serialized_end=228 + _globals['_FEATURESERVICESPEC']._serialized_start=231 + _globals['_FEATURESERVICESPEC']._serialized_end=523 + _globals['_FEATURESERVICESPEC_TAGSENTRY']._serialized_start=480 + _globals['_FEATURESERVICESPEC_TAGSENTRY']._serialized_end=523 + _globals['_FEATURESERVICEMETA']._serialized_start=526 + _globals['_FEATURESERVICEMETA']._serialized_end=661 + _globals['_LOGGINGCONFIG']._serialized_start=664 + _globals['_LOGGINGCONFIG']._serialized_end=1586 + _globals['_LOGGINGCONFIG_FILEDESTINATION']._serialized_start=1162 + _globals['_LOGGINGCONFIG_FILEDESTINATION']._serialized_end=1245 + _globals['_LOGGINGCONFIG_BIGQUERYDESTINATION']._serialized_start=1247 + _globals['_LOGGINGCONFIG_BIGQUERYDESTINATION']._serialized_end=1287 + _globals['_LOGGINGCONFIG_REDSHIFTDESTINATION']._serialized_start=1289 + _globals['_LOGGINGCONFIG_REDSHIFTDESTINATION']._serialized_end=1330 + _globals['_LOGGINGCONFIG_ATHENADESTINATION']._serialized_start=1332 + _globals['_LOGGINGCONFIG_ATHENADESTINATION']._serialized_end=1371 + _globals['_LOGGINGCONFIG_SNOWFLAKEDESTINATION']._serialized_start=1373 + _globals['_LOGGINGCONFIG_SNOWFLAKEDESTINATION']._serialized_end=1415 + _globals['_LOGGINGCONFIG_CUSTOMDESTINATION']._serialized_start=1418 + _globals['_LOGGINGCONFIG_CUSTOMDESTINATION']._serialized_end=1571 + _globals['_LOGGINGCONFIG_CUSTOMDESTINATION_CONFIGENTRY']._serialized_start=1526 + _globals['_LOGGINGCONFIG_CUSTOMDESTINATION_CONFIGENTRY']._serialized_end=1571 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/FeatureService_pb2.pyi b/sdk/python/feast/protos/feast/core/FeatureService_pb2.pyi new file mode 100644 index 00000000000..b3305b72df9 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/FeatureService_pb2.pyi @@ -0,0 +1,266 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import collections.abc +import feast.core.FeatureViewProjection_pb2 +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class FeatureService(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEC_FIELD_NUMBER: builtins.int + META_FIELD_NUMBER: builtins.int + @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: ... + +global___FeatureService = FeatureService + +class FeatureServiceSpec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + FEATURES_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + DESCRIPTION_FIELD_NUMBER: builtins.int + OWNER_FIELD_NUMBER: builtins.int + LOGGING_CONFIG_FIELD_NUMBER: builtins.int + name: builtins.str + """Name of the Feature Service. Must be unique. Not updated.""" + project: builtins.str + """Name of Feast project that this Feature Service belongs to.""" + @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, + *, + name: builtins.str = ..., + project: builtins.str = ..., + features: collections.abc.Iterable[feast.core.FeatureViewProjection_pb2.FeatureViewProjection] | None = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + description: builtins.str = ..., + 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: ... + +global___FeatureServiceSpec = FeatureServiceSpec + +class FeatureServiceMeta(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CREATED_TIMESTAMP_FIELD_NUMBER: builtins.int + LAST_UPDATED_TIMESTAMP_FIELD_NUMBER: builtins.int + @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: ... + +global___FeatureServiceMeta = FeatureServiceMeta + +class LoggingConfig(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class FileDestination(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PATH_FIELD_NUMBER: builtins.int + S3_ENDPOINT_OVERRIDE_FIELD_NUMBER: builtins.int + PARTITION_BY_FIELD_NUMBER: builtins.int + path: builtins.str + s3_endpoint_override: builtins.str + @property + def partition_by(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """column names to use for partitioning""" + def __init__( + self, + *, + path: builtins.str = ..., + 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: ... + + class BigQueryDestination(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TABLE_REF_FIELD_NUMBER: builtins.int + table_ref: builtins.str + """Full table reference in the form of [project:dataset.table]""" + def __init__( + self, + *, + table_ref: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["table_ref", b"table_ref"]) -> None: ... + + class RedshiftDestination(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TABLE_NAME_FIELD_NUMBER: builtins.int + table_name: builtins.str + """Destination table name. ClusterId and database will be taken from an offline store config""" + def __init__( + self, + *, + table_name: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["table_name", b"table_name"]) -> None: ... + + class AthenaDestination(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TABLE_NAME_FIELD_NUMBER: builtins.int + table_name: builtins.str + """Destination table name. data_source and database will be taken from an offline store config""" + def __init__( + self, + *, + table_name: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["table_name", b"table_name"]) -> None: ... + + class SnowflakeDestination(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TABLE_NAME_FIELD_NUMBER: builtins.int + table_name: builtins.str + """Destination table name. Schema and database will be taken from an offline store config""" + def __init__( + self, + *, + table_name: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["table_name", b"table_name"]) -> None: ... + + class CustomDestination(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class ConfigEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + KIND_FIELD_NUMBER: builtins.int + CONFIG_FIELD_NUMBER: builtins.int + kind: builtins.str + @property + def config(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + 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: ... + + SAMPLE_RATE_FIELD_NUMBER: builtins.int + FILE_DESTINATION_FIELD_NUMBER: builtins.int + BIGQUERY_DESTINATION_FIELD_NUMBER: builtins.int + REDSHIFT_DESTINATION_FIELD_NUMBER: builtins.int + SNOWFLAKE_DESTINATION_FIELD_NUMBER: builtins.int + CUSTOM_DESTINATION_FIELD_NUMBER: builtins.int + ATHENA_DESTINATION_FIELD_NUMBER: builtins.int + sample_rate: builtins.float + @property + def file_destination(self) -> global___LoggingConfig.FileDestination: ... + @property + def bigquery_destination(self) -> global___LoggingConfig.BigQueryDestination: ... + @property + def redshift_destination(self) -> global___LoggingConfig.RedshiftDestination: ... + @property + def snowflake_destination(self) -> global___LoggingConfig.SnowflakeDestination: ... + @property + def custom_destination(self) -> global___LoggingConfig.CustomDestination: ... + @property + def athena_destination(self) -> global___LoggingConfig.AthenaDestination: ... + def __init__( + self, + *, + sample_rate: builtins.float = ..., + file_destination: global___LoggingConfig.FileDestination | None = ..., + bigquery_destination: global___LoggingConfig.BigQueryDestination | None = ..., + redshift_destination: global___LoggingConfig.RedshiftDestination | None = ..., + snowflake_destination: global___LoggingConfig.SnowflakeDestination | None = ..., + custom_destination: global___LoggingConfig.CustomDestination | None = ..., + athena_destination: global___LoggingConfig.AthenaDestination | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["athena_destination", b"athena_destination", "bigquery_destination", b"bigquery_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", "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"] | None: ... + +global___LoggingConfig = LoggingConfig diff --git a/sdk/python/feast/protos/feast/core/FeatureService_pb2_grpc.py b/sdk/python/feast/protos/feast/core/FeatureService_pb2_grpc.py new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/FeatureService_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/FeatureTable_pb2.py b/sdk/python/feast/protos/feast/core/FeatureTable_pb2.py new file mode 100644 index 00000000000..713e72b5d33 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/FeatureTable_pb2.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/FeatureTable.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from feast.protos.feast.core import DataSource_pb2 as feast_dot_core_dot_DataSource__pb2 +from feast.protos.feast.core import Feature_pb2 as feast_dot_core_dot_Feature__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x66\x65\x61st/core/FeatureTable.proto\x12\nfeast.core\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1b\x66\x65\x61st/core/DataSource.proto\x1a\x18\x66\x65\x61st/core/Feature.proto\"f\n\x0c\x46\x65\x61tureTable\x12*\n\x04spec\x18\x01 \x01(\x0b\x32\x1c.feast.core.FeatureTableSpec\x12*\n\x04meta\x18\x02 \x01(\x0b\x32\x1c.feast.core.FeatureTableMeta\"\xe2\x02\n\x10\x46\x65\x61tureTableSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\t \x01(\t\x12\x10\n\x08\x65ntities\x18\x03 \x03(\t\x12+\n\x08\x66\x65\x61tures\x18\x04 \x03(\x0b\x32\x19.feast.core.FeatureSpecV2\x12\x38\n\x06labels\x18\x05 \x03(\x0b\x32(.feast.core.FeatureTableSpec.LabelsEntry\x12*\n\x07max_age\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12,\n\x0c\x62\x61tch_source\x18\x07 \x01(\x0b\x32\x16.feast.core.DataSource\x12-\n\rstream_source\x18\x08 \x01(\x0b\x32\x16.feast.core.DataSource\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa5\x01\n\x10\x46\x65\x61tureTableMeta\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\x12\x10\n\x08revision\x18\x03 \x01(\x03\x12\x0c\n\x04hash\x18\x04 \x01(\tBV\n\x10\x66\x65\x61st.proto.coreB\x11\x46\x65\x61tureTableProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.FeatureTable_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'8\001' + _globals['_FEATURETABLE']._serialized_start=165 + _globals['_FEATURETABLE']._serialized_end=267 + _globals['_FEATURETABLESPEC']._serialized_start=270 + _globals['_FEATURETABLESPEC']._serialized_end=624 + _globals['_FEATURETABLESPEC_LABELSENTRY']._serialized_start=579 + _globals['_FEATURETABLESPEC_LABELSENTRY']._serialized_end=624 + _globals['_FEATURETABLEMETA']._serialized_start=627 + _globals['_FEATURETABLEMETA']._serialized_end=792 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/FeatureTable_pb2.pyi b/sdk/python/feast/protos/feast/core/FeatureTable_pb2.pyi new file mode 100644 index 00000000000..dd41c2d214a --- /dev/null +++ b/sdk/python/feast/protos/feast/core/FeatureTable_pb2.pyi @@ -0,0 +1,166 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2020 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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 +import feast.core.Feature_pb2 +import google.protobuf.descriptor +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class FeatureTable(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEC_FIELD_NUMBER: builtins.int + META_FIELD_NUMBER: builtins.int + @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: ... + +global___FeatureTable = FeatureTable + +class FeatureTableSpec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class LabelsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + ENTITIES_FIELD_NUMBER: builtins.int + FEATURES_FIELD_NUMBER: builtins.int + LABELS_FIELD_NUMBER: builtins.int + MAX_AGE_FIELD_NUMBER: builtins.int + BATCH_SOURCE_FIELD_NUMBER: builtins.int + STREAM_SOURCE_FIELD_NUMBER: builtins.int + name: builtins.str + """Name of the feature table. Must be unique. Not updated.""" + project: builtins.str + """Name of Feast project that this feature table belongs to.""" + @property + def entities(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """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 + younger than max age. Age is measured as the duration of time between + 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, + *, + name: builtins.str = ..., + project: builtins.str = ..., + entities: collections.abc.Iterable[builtins.str] | None = ..., + features: collections.abc.Iterable[feast.core.Feature_pb2.FeatureSpecV2] | None = ..., + labels: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + max_age: google.protobuf.duration_pb2.Duration | None = ..., + 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: ... + +global___FeatureTableSpec = FeatureTableSpec + +class FeatureTableMeta(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CREATED_TIMESTAMP_FIELD_NUMBER: builtins.int + 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 + """ + def __init__( + self, + *, + created_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + last_updated_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + 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: ... + +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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/FeatureTable_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2.py b/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2.py new file mode 100644 index 00000000000..286f5116584 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/FeatureViewProjection.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from feast.protos.feast.core import Feature_pb2 as feast_dot_core_dot_Feature__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&feast/core/FeatureViewProjection.proto\x12\nfeast.core\x1a\x18\x66\x65\x61st/core/Feature.proto\"\x83\x02\n\x15\x46\x65\x61tureViewProjection\x12\x19\n\x11\x66\x65\x61ture_view_name\x18\x01 \x01(\t\x12\x1f\n\x17\x66\x65\x61ture_view_name_alias\x18\x03 \x01(\t\x12\x32\n\x0f\x66\x65\x61ture_columns\x18\x02 \x03(\x0b\x32\x19.feast.core.FeatureSpecV2\x12G\n\x0cjoin_key_map\x18\x04 \x03(\x0b\x32\x31.feast.core.FeatureViewProjection.JoinKeyMapEntry\x1a\x31\n\x0fJoinKeyMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42Z\n\x10\x66\x65\x61st.proto.coreB\x15\x46\x65\x61tureReferenceProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.FeatureViewProjection_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'8\001' + _globals['_FEATUREVIEWPROJECTION']._serialized_start=81 + _globals['_FEATUREVIEWPROJECTION']._serialized_end=340 + _globals['_FEATUREVIEWPROJECTION_JOINKEYMAPENTRY']._serialized_start=291 + _globals['_FEATUREVIEWPROJECTION_JOINKEYMAPENTRY']._serialized_end=340 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2.pyi b/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2.pyi new file mode 100644 index 00000000000..2c0a298e140 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2.pyi @@ -0,0 +1,66 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import collections.abc +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +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. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class JoinKeyMapEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + FEATURE_VIEW_NAME_FIELD_NUMBER: builtins.int + FEATURE_VIEW_NAME_ALIAS_FIELD_NUMBER: builtins.int + FEATURE_COLUMNS_FIELD_NUMBER: builtins.int + JOIN_KEY_MAP_FIELD_NUMBER: builtins.int + feature_view_name: builtins.str + """The feature view name""" + feature_view_name_alias: builtins.str + """Alias for feature view name""" + @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""" + def __init__( + self, + *, + feature_view_name: builtins.str = ..., + feature_view_name_alias: builtins.str = ..., + feature_columns: collections.abc.Iterable[feast.core.Feature_pb2.FeatureSpecV2] | None = ..., + join_key_map: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["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"]) -> 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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/FeatureViewProjection_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/FeatureView_pb2.py b/sdk/python/feast/protos/feast/core/FeatureView_pb2.py new file mode 100644 index 00000000000..f1480593d9a --- /dev/null +++ b/sdk/python/feast/protos/feast/core/FeatureView_pb2.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/FeatureView.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from feast.protos.feast.core import DataSource_pb2 as feast_dot_core_dot_DataSource__pb2 +from feast.protos.feast.core import Feature_pb2 as feast_dot_core_dot_Feature__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66\x65\x61st/core/FeatureView.proto\x12\nfeast.core\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1b\x66\x65\x61st/core/DataSource.proto\x1a\x18\x66\x65\x61st/core/Feature.proto\"c\n\x0b\x46\x65\x61tureView\x12)\n\x04spec\x18\x01 \x01(\x0b\x32\x1b.feast.core.FeatureViewSpec\x12)\n\x04meta\x18\x02 \x01(\x0b\x32\x1b.feast.core.FeatureViewMeta\"\xbd\x03\n\x0f\x46\x65\x61tureViewSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x10\n\x08\x65ntities\x18\x03 \x03(\t\x12+\n\x08\x66\x65\x61tures\x18\x04 \x03(\x0b\x32\x19.feast.core.FeatureSpecV2\x12\x31\n\x0e\x65ntity_columns\x18\x0c \x03(\x0b\x32\x19.feast.core.FeatureSpecV2\x12\x13\n\x0b\x64\x65scription\x18\n \x01(\t\x12\x33\n\x04tags\x18\x05 \x03(\x0b\x32%.feast.core.FeatureViewSpec.TagsEntry\x12\r\n\x05owner\x18\x0b \x01(\t\x12&\n\x03ttl\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12,\n\x0c\x62\x61tch_source\x18\x07 \x01(\x0b\x32\x16.feast.core.DataSource\x12-\n\rstream_source\x18\t \x01(\x0b\x32\x16.feast.core.DataSource\x12\x0e\n\x06online\x18\x08 \x01(\x08\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xcc\x01\n\x0f\x46\x65\x61tureViewMeta\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\x12\x46\n\x19materialization_intervals\x18\x03 \x03(\x0b\x32#.feast.core.MaterializationInterval\"w\n\x17MaterializationInterval\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampBU\n\x10\x66\x65\x61st.proto.coreB\x10\x46\x65\x61tureViewProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.FeatureView_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'8\001' + _globals['_FEATUREVIEW']._serialized_start=164 + _globals['_FEATUREVIEW']._serialized_end=263 + _globals['_FEATUREVIEWSPEC']._serialized_start=266 + _globals['_FEATUREVIEWSPEC']._serialized_end=711 + _globals['_FEATUREVIEWSPEC_TAGSENTRY']._serialized_start=668 + _globals['_FEATUREVIEWSPEC_TAGSENTRY']._serialized_end=711 + _globals['_FEATUREVIEWMETA']._serialized_start=714 + _globals['_FEATUREVIEWMETA']._serialized_end=918 + _globals['_MATERIALIZATIONINTERVAL']._serialized_start=920 + _globals['_MATERIALIZATIONINTERVAL']._serialized_end=1039 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/FeatureView_pb2.pyi b/sdk/python/feast/protos/feast/core/FeatureView_pb2.pyi new file mode 100644 index 00000000000..e1d4e2dfee8 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/FeatureView_pb2.pyi @@ -0,0 +1,194 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2020 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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 +import feast.core.Feature_pb2 +import google.protobuf.descriptor +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class FeatureView(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEC_FIELD_NUMBER: builtins.int + META_FIELD_NUMBER: builtins.int + @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: ... + +global___FeatureView = FeatureView + +class FeatureViewSpec(google.protobuf.message.Message): + """Next available id: 13 + TODO(adchia): refactor common fields from this and ODFV into separate metadata proto + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + ENTITIES_FIELD_NUMBER: builtins.int + FEATURES_FIELD_NUMBER: builtins.int + ENTITY_COLUMNS_FIELD_NUMBER: builtins.int + DESCRIPTION_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + OWNER_FIELD_NUMBER: builtins.int + TTL_FIELD_NUMBER: builtins.int + BATCH_SOURCE_FIELD_NUMBER: builtins.int + STREAM_SOURCE_FIELD_NUMBER: builtins.int + ONLINE_FIELD_NUMBER: builtins.int + name: builtins.str + """Name of the feature view. Must be unique. Not updated.""" + project: builtins.str + """Name of Feast project that this feature view belongs to.""" + @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 + younger than ttl. Ttl is measured as the duration of time between + 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""" + def __init__( + self, + *, + name: builtins.str = ..., + project: builtins.str = ..., + entities: collections.abc.Iterable[builtins.str] | None = ..., + features: collections.abc.Iterable[feast.core.Feature_pb2.FeatureSpecV2] | None = ..., + entity_columns: collections.abc.Iterable[feast.core.Feature_pb2.FeatureSpecV2] | None = ..., + description: builtins.str = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + owner: builtins.str = ..., + ttl: google.protobuf.duration_pb2.Duration | None = ..., + batch_source: feast.core.DataSource_pb2.DataSource | None = ..., + stream_source: feast.core.DataSource_pb2.DataSource | None = ..., + online: builtins.bool = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["batch_source", b"batch_source", "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", "features", b"features", "name", b"name", "online", b"online", "owner", b"owner", "project", b"project", "stream_source", b"stream_source", "tags", b"tags", "ttl", b"ttl"]) -> None: ... + +global___FeatureViewSpec = FeatureViewSpec + +class FeatureViewMeta(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CREATED_TIMESTAMP_FIELD_NUMBER: builtins.int + LAST_UPDATED_TIMESTAMP_FIELD_NUMBER: builtins.int + MATERIALIZATION_INTERVALS_FIELD_NUMBER: builtins.int + @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, + *, + created_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + 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: ... + +global___FeatureViewMeta = FeatureViewMeta + +class MaterializationInterval(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + START_TIME_FIELD_NUMBER: builtins.int + END_TIME_FIELD_NUMBER: builtins.int + @property + def start_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def end_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + def __init__( + self, + *, + 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: ... + +global___MaterializationInterval = MaterializationInterval diff --git a/sdk/python/feast/protos/feast/core/FeatureView_pb2_grpc.py b/sdk/python/feast/protos/feast/core/FeatureView_pb2_grpc.py new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/FeatureView_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/Feature_pb2.py b/sdk/python/feast/protos/feast/core/Feature_pb2.py new file mode 100644 index 00000000000..dd7c6008ef1 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Feature_pb2.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/Feature.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from feast.protos.feast.types import Value_pb2 as feast_dot_types_dot_Value__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66\x65\x61st/core/Feature.proto\x12\nfeast.core\x1a\x17\x66\x65\x61st/types/Value.proto\"\xc3\x01\n\rFeatureSpecV2\x12\x0c\n\x04name\x18\x01 \x01(\t\x12/\n\nvalue_type\x18\x02 \x01(\x0e\x32\x1b.feast.types.ValueType.Enum\x12\x31\n\x04tags\x18\x03 \x03(\x0b\x32#.feast.core.FeatureSpecV2.TagsEntry\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42Q\n\x10\x66\x65\x61st.proto.coreB\x0c\x46\x65\x61tureProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Feature_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'8\001' + _globals['_FEATURESPECV2']._serialized_start=66 + _globals['_FEATURESPECV2']._serialized_end=261 + _globals['_FEATURESPECV2_TAGSENTRY']._serialized_start=218 + _globals['_FEATURESPECV2_TAGSENTRY']._serialized_end=261 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/Feature_pb2.pyi b/sdk/python/feast/protos/feast/core/Feature_pb2.pyi new file mode 100644 index 00000000000..f4235b0965b --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Feature_pb2.pyi @@ -0,0 +1,75 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2020 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class FeatureSpecV2(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + NAME_FIELD_NUMBER: builtins.int + VALUE_TYPE_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + DESCRIPTION_FIELD_NUMBER: builtins.int + name: builtins.str + """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.""" + def __init__( + self, + *, + name: builtins.str = ..., + value_type: feast.types.Value_pb2.ValueType.Enum.ValueType = ..., + 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_type", b"value_type"]) -> 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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Feature_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/InfraObject_pb2.py b/sdk/python/feast/protos/feast/core/InfraObject_pb2.py new file mode 100644 index 00000000000..0804aecbf65 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/InfraObject_pb2.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/InfraObject.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from feast.protos.feast.core import DatastoreTable_pb2 as feast_dot_core_dot_DatastoreTable__pb2 +from feast.protos.feast.core import DynamoDBTable_pb2 as feast_dot_core_dot_DynamoDBTable__pb2 +from feast.protos.feast.core import SqliteTable_pb2 as feast_dot_core_dot_SqliteTable__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66\x65\x61st/core/InfraObject.proto\x12\nfeast.core\x1a\x1f\x66\x65\x61st/core/DatastoreTable.proto\x1a\x1e\x66\x65\x61st/core/DynamoDBTable.proto\x1a\x1c\x66\x65\x61st/core/SqliteTable.proto\"7\n\x05Infra\x12.\n\rinfra_objects\x18\x01 \x03(\x0b\x32\x17.feast.core.InfraObject\"\xb6\x02\n\x0bInfraObject\x12\x1f\n\x17infra_object_class_type\x18\x01 \x01(\t\x12\x33\n\x0e\x64ynamodb_table\x18\x02 \x01(\x0b\x32\x19.feast.core.DynamoDBTableH\x00\x12\x35\n\x0f\x64\x61tastore_table\x18\x03 \x01(\x0b\x32\x1a.feast.core.DatastoreTableH\x00\x12/\n\x0csqlite_table\x18\x04 \x01(\x0b\x32\x17.feast.core.SqliteTableH\x00\x12;\n\x0c\x63ustom_infra\x18\x64 \x01(\x0b\x32#.feast.core.InfraObject.CustomInfraH\x00\x1a\x1c\n\x0b\x43ustomInfra\x12\r\n\x05\x66ield\x18\x01 \x01(\x0c\x42\x0e\n\x0cinfra_objectBU\n\x10\x66\x65\x61st.proto.coreB\x10InfraObjectProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.InfraObject_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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=139 + _globals['_INFRA']._serialized_end=194 + _globals['_INFRAOBJECT']._serialized_start=197 + _globals['_INFRAOBJECT']._serialized_end=507 + _globals['_INFRAOBJECT_CUSTOMINFRA']._serialized_start=463 + _globals['_INFRAOBJECT_CUSTOMINFRA']._serialized_end=491 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/InfraObject_pb2.pyi b/sdk/python/feast/protos/feast/core/InfraObject_pb2.pyi new file mode 100644 index 00000000000..38b31b7317a --- /dev/null +++ b/sdk/python/feast/protos/feast/core/InfraObject_pb2.pyi @@ -0,0 +1,101 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +* Copyright 2021 The Feast Authors +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* 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.DatastoreTable_pb2 +import feast.core.DynamoDBTable_pb2 +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class Infra(google.protobuf.message.Message): + """Represents a set of infrastructure objects managed by Feast""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + INFRA_OBJECTS_FIELD_NUMBER: builtins.int + @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: ... + +global___Infra = Infra + +class InfraObject(google.protobuf.message.Message): + """Represents a single infrastructure object managed by Feast""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class CustomInfra(google.protobuf.message.Message): + """Allows for custom infra objects to be added""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FIELD_FIELD_NUMBER: builtins.int + field: builtins.bytes + def __init__( + self, + *, + field: builtins.bytes = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["field", b"field"]) -> None: ... + + INFRA_OBJECT_CLASS_TYPE_FIELD_NUMBER: builtins.int + DYNAMODB_TABLE_FIELD_NUMBER: builtins.int + DATASTORE_TABLE_FIELD_NUMBER: builtins.int + SQLITE_TABLE_FIELD_NUMBER: builtins.int + CUSTOM_INFRA_FIELD_NUMBER: builtins.int + infra_object_class_type: builtins.str + """Represents the Python class for the infrastructure object""" + @property + def dynamodb_table(self) -> feast.core.DynamoDBTable_pb2.DynamoDBTable: ... + @property + def datastore_table(self) -> feast.core.DatastoreTable_pb2.DatastoreTable: ... + @property + def sqlite_table(self) -> feast.core.SqliteTable_pb2.SqliteTable: ... + @property + def custom_infra(self) -> global___InfraObject.CustomInfra: ... + def __init__( + self, + *, + infra_object_class_type: builtins.str = ..., + dynamodb_table: feast.core.DynamoDBTable_pb2.DynamoDBTable | None = ..., + datastore_table: feast.core.DatastoreTable_pb2.DatastoreTable | None = ..., + 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", "dynamodb_table", b"dynamodb_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", "dynamodb_table", b"dynamodb_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["dynamodb_table", "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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/InfraObject_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2.py b/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2.py new file mode 100644 index 00000000000..4be551724c7 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/OnDemandFeatureView.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from feast.protos.feast.core import FeatureView_pb2 as feast_dot_core_dot_FeatureView__pb2 +from feast.protos.feast.core import FeatureViewProjection_pb2 as feast_dot_core_dot_FeatureViewProjection__pb2 +from feast.protos.feast.core import Feature_pb2 as feast_dot_core_dot_Feature__pb2 +from feast.protos.feast.core import DataSource_pb2 as feast_dot_core_dot_DataSource__pb2 +from feast.protos.feast.core import Transformation_pb2 as feast_dot_core_dot_Transformation__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$feast/core/OnDemandFeatureView.proto\x12\nfeast.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1c\x66\x65\x61st/core/FeatureView.proto\x1a&feast/core/FeatureViewProjection.proto\x1a\x18\x66\x65\x61st/core/Feature.proto\x1a\x1b\x66\x65\x61st/core/DataSource.proto\x1a\x1f\x66\x65\x61st/core/Transformation.proto\"{\n\x13OnDemandFeatureView\x12\x31\n\x04spec\x18\x01 \x01(\x0b\x32#.feast.core.OnDemandFeatureViewSpec\x12\x31\n\x04meta\x18\x02 \x01(\x0b\x32#.feast.core.OnDemandFeatureViewMeta\"\x99\x04\n\x17OnDemandFeatureViewSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12+\n\x08\x66\x65\x61tures\x18\x03 \x03(\x0b\x32\x19.feast.core.FeatureSpecV2\x12\x41\n\x07sources\x18\x04 \x03(\x0b\x32\x30.feast.core.OnDemandFeatureViewSpec.SourcesEntry\x12\x42\n\x15user_defined_function\x18\x05 \x01(\x0b\x32\x1f.feast.core.UserDefinedFunctionB\x02\x18\x01\x12\x43\n\x16\x66\x65\x61ture_transformation\x18\n \x01(\x0b\x32#.feast.core.FeatureTransformationV2\x12\x13\n\x0b\x64\x65scription\x18\x06 \x01(\t\x12;\n\x04tags\x18\x07 \x03(\x0b\x32-.feast.core.OnDemandFeatureViewSpec.TagsEntry\x12\r\n\x05owner\x18\x08 \x01(\t\x12\x0c\n\x04mode\x18\x0b \x01(\t\x1aJ\n\x0cSourcesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12)\n\x05value\x18\x02 \x01(\x0b\x32\x1a.feast.core.OnDemandSource:\x02\x38\x01\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x8c\x01\n\x17OnDemandFeatureViewMeta\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\"\xc8\x01\n\x0eOnDemandSource\x12/\n\x0c\x66\x65\x61ture_view\x18\x01 \x01(\x0b\x32\x17.feast.core.FeatureViewH\x00\x12\x44\n\x17\x66\x65\x61ture_view_projection\x18\x03 \x01(\x0b\x32!.feast.core.FeatureViewProjectionH\x00\x12\x35\n\x13request_data_source\x18\x02 \x01(\x0b\x32\x16.feast.core.DataSourceH\x00\x42\x08\n\x06source\"H\n\x13UserDefinedFunction\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04\x62ody\x18\x02 \x01(\x0c\x12\x11\n\tbody_text\x18\x03 \x01(\t:\x02\x18\x01\x42]\n\x10\x66\x65\x61st.proto.coreB\x18OnDemandFeatureViewProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.OnDemandFeatureView_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'8\001' + _globals['_ONDEMANDFEATUREVIEWSPEC_TAGSENTRY']._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']._serialized_options = b'\030\001' + _globals['_USERDEFINEDFUNCTION']._options = None + _globals['_USERDEFINEDFUNCTION']._serialized_options = b'\030\001' + _globals['_ONDEMANDFEATUREVIEW']._serialized_start=243 + _globals['_ONDEMANDFEATUREVIEW']._serialized_end=366 + _globals['_ONDEMANDFEATUREVIEWSPEC']._serialized_start=369 + _globals['_ONDEMANDFEATUREVIEWSPEC']._serialized_end=906 + _globals['_ONDEMANDFEATUREVIEWSPEC_SOURCESENTRY']._serialized_start=787 + _globals['_ONDEMANDFEATUREVIEWSPEC_SOURCESENTRY']._serialized_end=861 + _globals['_ONDEMANDFEATUREVIEWSPEC_TAGSENTRY']._serialized_start=863 + _globals['_ONDEMANDFEATUREVIEWSPEC_TAGSENTRY']._serialized_end=906 + _globals['_ONDEMANDFEATUREVIEWMETA']._serialized_start=909 + _globals['_ONDEMANDFEATUREVIEWMETA']._serialized_end=1049 + _globals['_ONDEMANDSOURCE']._serialized_start=1052 + _globals['_ONDEMANDSOURCE']._serialized_end=1252 + _globals['_USERDEFINEDFUNCTION']._serialized_start=1254 + _globals['_USERDEFINEDFUNCTION']._serialized_end=1326 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2.pyi b/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2.pyi new file mode 100644 index 00000000000..d72a8f98629 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2.pyi @@ -0,0 +1,219 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2020 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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 +import feast.core.FeatureViewProjection_pb2 +import feast.core.FeatureView_pb2 +import feast.core.Feature_pb2 +import feast.core.Transformation_pb2 +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class OnDemandFeatureView(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEC_FIELD_NUMBER: builtins.int + META_FIELD_NUMBER: builtins.int + @property + def spec(self) -> global___OnDemandFeatureViewSpec: + """User-specified specifications of this feature view.""" + @property + def meta(self) -> global___OnDemandFeatureViewMeta: ... + def __init__( + self, + *, + 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: ... + +global___OnDemandFeatureView = OnDemandFeatureView + +class OnDemandFeatureViewSpec(google.protobuf.message.Message): + """Next available id: 9""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class SourcesEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + @property + def value(self) -> global___OnDemandSource: ... + def __init__( + self, + *, + 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: ... + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + FEATURES_FIELD_NUMBER: builtins.int + SOURCES_FIELD_NUMBER: builtins.int + USER_DEFINED_FUNCTION_FIELD_NUMBER: builtins.int + FEATURE_TRANSFORMATION_FIELD_NUMBER: builtins.int + DESCRIPTION_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + OWNER_FIELD_NUMBER: builtins.int + MODE_FIELD_NUMBER: builtins.int + name: builtins.str + """Name of the feature view. Must be unique. Not updated.""" + project: builtins.str + """Name of Feast project that this feature view belongs to.""" + @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 + def __init__( + self, + *, + name: builtins.str = ..., + project: builtins.str = ..., + features: collections.abc.Iterable[feast.core.Feature_pb2.FeatureSpecV2] | None = ..., + sources: collections.abc.Mapping[builtins.str, global___OnDemandSource] | None = ..., + user_defined_function: global___UserDefinedFunction | None = ..., + feature_transformation: feast.core.Transformation_pb2.FeatureTransformationV2 | None = ..., + description: builtins.str = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + owner: builtins.str = ..., + mode: builtins.str = ..., + ) -> 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["description", b"description", "feature_transformation", b"feature_transformation", "features", b"features", "mode", b"mode", "name", b"name", "owner", b"owner", "project", b"project", "sources", b"sources", "tags", b"tags", "user_defined_function", b"user_defined_function"]) -> None: ... + +global___OnDemandFeatureViewSpec = OnDemandFeatureViewSpec + +class OnDemandFeatureViewMeta(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CREATED_TIMESTAMP_FIELD_NUMBER: builtins.int + LAST_UPDATED_TIMESTAMP_FIELD_NUMBER: builtins.int + @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: ... + +global___OnDemandFeatureViewMeta = OnDemandFeatureViewMeta + +class OnDemandSource(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FEATURE_VIEW_FIELD_NUMBER: builtins.int + FEATURE_VIEW_PROJECTION_FIELD_NUMBER: builtins.int + REQUEST_DATA_SOURCE_FIELD_NUMBER: builtins.int + @property + def feature_view(self) -> feast.core.FeatureView_pb2.FeatureView: ... + @property + def feature_view_projection(self) -> feast.core.FeatureViewProjection_pb2.FeatureViewProjection: ... + @property + def request_data_source(self) -> feast.core.DataSource_pb2.DataSource: ... + def __init__( + self, + *, + feature_view: feast.core.FeatureView_pb2.FeatureView | None = ..., + 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: ... + +global___OnDemandSource = OnDemandSource + +class UserDefinedFunction(google.protobuf.message.Message): + """Serialized representation of python function.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + BODY_FIELD_NUMBER: builtins.int + BODY_TEXT_FIELD_NUMBER: builtins.int + name: builtins.str + """The function name""" + body: builtins.bytes + """The python-syntax function body (serialized by dill)""" + body_text: builtins.str + """The string representation of the udf""" + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___UserDefinedFunction = UserDefinedFunction diff --git a/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2_grpc.py b/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2_grpc.py new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/OnDemandFeatureView_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/Permission_pb2.py b/sdk/python/feast/protos/feast/core/Permission_pb2.py new file mode 100644 index 00000000000..822ad0261b0 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Permission_pb2.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/Permission.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from feast.protos.feast.core import Policy_pb2 as feast_dot_core_dot_Policy__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66\x65\x61st/core/Permission.proto\x12\nfeast.core\x1a\x17\x66\x65\x61st/core/Policy.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"`\n\nPermission\x12(\n\x04spec\x18\x01 \x01(\x0b\x32\x1a.feast.core.PermissionSpec\x12(\n\x04meta\x18\x02 \x01(\x0b\x32\x1a.feast.core.PermissionMeta\"\x9f\x06\n\x0ePermissionSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12.\n\x05types\x18\x03 \x03(\x0e\x32\x1f.feast.core.PermissionSpec.Type\x12\x14\n\x0cname_pattern\x18\x04 \x01(\t\x12\x43\n\rrequired_tags\x18\x05 \x03(\x0b\x32,.feast.core.PermissionSpec.RequiredTagsEntry\x12\x39\n\x07\x61\x63tions\x18\x06 \x03(\x0e\x32(.feast.core.PermissionSpec.AuthzedAction\x12\"\n\x06policy\x18\x07 \x01(\x0b\x32\x12.feast.core.Policy\x12\x32\n\x04tags\x18\x08 \x03(\x0b\x32$.feast.core.PermissionSpec.TagsEntry\x1a\x33\n\x11RequiredTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x89\x01\n\rAuthzedAction\x12\n\n\x06\x43REATE\x10\x00\x12\x0c\n\x08\x44\x45SCRIBE\x10\x01\x12\n\n\x06UPDATE\x10\x02\x12\n\n\x06\x44\x45LETE\x10\x03\x12\x0f\n\x0bREAD_ONLINE\x10\x04\x12\x10\n\x0cREAD_OFFLINE\x10\x05\x12\x10\n\x0cWRITE_ONLINE\x10\x06\x12\x11\n\rWRITE_OFFLINE\x10\x07\"\xe1\x01\n\x04Type\x12\x10\n\x0c\x46\x45\x41TURE_VIEW\x10\x00\x12\x1a\n\x16ON_DEMAND_FEATURE_VIEW\x10\x01\x12\x16\n\x12\x42\x41TCH_FEATURE_VIEW\x10\x02\x12\x17\n\x13STREAM_FEATURE_VIEW\x10\x03\x12\n\n\x06\x45NTITY\x10\x04\x12\x13\n\x0f\x46\x45\x41TURE_SERVICE\x10\x05\x12\x0f\n\x0b\x44\x41TA_SOURCE\x10\x06\x12\x18\n\x14VALIDATION_REFERENCE\x10\x07\x12\x11\n\rSAVED_DATASET\x10\x08\x12\x0e\n\nPERMISSION\x10\t\x12\x0b\n\x07PROJECT\x10\n\"\x83\x01\n\x0ePermissionMeta\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.TimestampBT\n\x10\x66\x65\x61st.proto.coreB\x0fPermissionProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Permission_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'8\001' + _globals['_PERMISSIONSPEC_TAGSENTRY']._options = None + _globals['_PERMISSIONSPEC_TAGSENTRY']._serialized_options = b'8\001' + _globals['_PERMISSION']._serialized_start=101 + _globals['_PERMISSION']._serialized_end=197 + _globals['_PERMISSIONSPEC']._serialized_start=200 + _globals['_PERMISSIONSPEC']._serialized_end=999 + _globals['_PERMISSIONSPEC_REQUIREDTAGSENTRY']._serialized_start=535 + _globals['_PERMISSIONSPEC_REQUIREDTAGSENTRY']._serialized_end=586 + _globals['_PERMISSIONSPEC_TAGSENTRY']._serialized_start=588 + _globals['_PERMISSIONSPEC_TAGSENTRY']._serialized_end=631 + _globals['_PERMISSIONSPEC_AUTHZEDACTION']._serialized_start=634 + _globals['_PERMISSIONSPEC_AUTHZEDACTION']._serialized_end=771 + _globals['_PERMISSIONSPEC_TYPE']._serialized_start=774 + _globals['_PERMISSIONSPEC_TYPE']._serialized_end=999 + _globals['_PERMISSIONMETA']._serialized_start=1002 + _globals['_PERMISSIONMETA']._serialized_end=1133 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/Permission_pb2.pyi b/sdk/python/feast/protos/feast/core/Permission_pb2.pyi new file mode 100644 index 00000000000..1155c131881 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Permission_pb2.pyi @@ -0,0 +1,195 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import collections.abc +import feast.core.Policy_pb2 +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import google.protobuf.timestamp_pb2 +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class Permission(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEC_FIELD_NUMBER: builtins.int + META_FIELD_NUMBER: builtins.int + @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: ... + +global___Permission = Permission + +class PermissionSpec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _AuthzedAction: + 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 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + CREATE: PermissionSpec._AuthzedAction.ValueType # 0 + DESCRIBE: PermissionSpec._AuthzedAction.ValueType # 1 + UPDATE: PermissionSpec._AuthzedAction.ValueType # 2 + DELETE: PermissionSpec._AuthzedAction.ValueType # 3 + READ_ONLINE: PermissionSpec._AuthzedAction.ValueType # 4 + READ_OFFLINE: PermissionSpec._AuthzedAction.ValueType # 5 + WRITE_ONLINE: PermissionSpec._AuthzedAction.ValueType # 6 + WRITE_OFFLINE: PermissionSpec._AuthzedAction.ValueType # 7 + + class AuthzedAction(_AuthzedAction, metaclass=_AuthzedActionEnumTypeWrapper): ... + CREATE: PermissionSpec.AuthzedAction.ValueType # 0 + DESCRIBE: PermissionSpec.AuthzedAction.ValueType # 1 + UPDATE: PermissionSpec.AuthzedAction.ValueType # 2 + DELETE: PermissionSpec.AuthzedAction.ValueType # 3 + READ_ONLINE: PermissionSpec.AuthzedAction.ValueType # 4 + READ_OFFLINE: PermissionSpec.AuthzedAction.ValueType # 5 + WRITE_ONLINE: PermissionSpec.AuthzedAction.ValueType # 6 + WRITE_OFFLINE: PermissionSpec.AuthzedAction.ValueType # 7 + + class _Type: + 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 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + FEATURE_VIEW: PermissionSpec._Type.ValueType # 0 + ON_DEMAND_FEATURE_VIEW: PermissionSpec._Type.ValueType # 1 + BATCH_FEATURE_VIEW: PermissionSpec._Type.ValueType # 2 + STREAM_FEATURE_VIEW: PermissionSpec._Type.ValueType # 3 + ENTITY: PermissionSpec._Type.ValueType # 4 + FEATURE_SERVICE: PermissionSpec._Type.ValueType # 5 + DATA_SOURCE: PermissionSpec._Type.ValueType # 6 + VALIDATION_REFERENCE: PermissionSpec._Type.ValueType # 7 + SAVED_DATASET: PermissionSpec._Type.ValueType # 8 + PERMISSION: PermissionSpec._Type.ValueType # 9 + PROJECT: PermissionSpec._Type.ValueType # 10 + + class Type(_Type, metaclass=_TypeEnumTypeWrapper): ... + FEATURE_VIEW: PermissionSpec.Type.ValueType # 0 + ON_DEMAND_FEATURE_VIEW: PermissionSpec.Type.ValueType # 1 + BATCH_FEATURE_VIEW: PermissionSpec.Type.ValueType # 2 + STREAM_FEATURE_VIEW: PermissionSpec.Type.ValueType # 3 + ENTITY: PermissionSpec.Type.ValueType # 4 + FEATURE_SERVICE: PermissionSpec.Type.ValueType # 5 + DATA_SOURCE: PermissionSpec.Type.ValueType # 6 + VALIDATION_REFERENCE: PermissionSpec.Type.ValueType # 7 + SAVED_DATASET: PermissionSpec.Type.ValueType # 8 + PERMISSION: PermissionSpec.Type.ValueType # 9 + PROJECT: PermissionSpec.Type.ValueType # 10 + + class RequiredTagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + TYPES_FIELD_NUMBER: builtins.int + NAME_PATTERN_FIELD_NUMBER: builtins.int + REQUIRED_TAGS_FIELD_NUMBER: builtins.int + ACTIONS_FIELD_NUMBER: builtins.int + POLICY_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + name: builtins.str + """Name of the permission. Must be unique. Not updated.""" + project: builtins.str + """Name of Feast project.""" + @property + def types(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___PermissionSpec.Type.ValueType]: ... + name_pattern: builtins.str + @property + def required_tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + @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, + *, + name: builtins.str = ..., + project: builtins.str = ..., + types: collections.abc.Iterable[global___PermissionSpec.Type.ValueType] | None = ..., + name_pattern: builtins.str = ..., + required_tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + actions: collections.abc.Iterable[global___PermissionSpec.AuthzedAction.ValueType] | None = ..., + 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_pattern", b"name_pattern", "policy", b"policy", "project", b"project", "required_tags", b"required_tags", "tags", b"tags", "types", b"types"]) -> None: ... + +global___PermissionSpec = PermissionSpec + +class PermissionMeta(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CREATED_TIMESTAMP_FIELD_NUMBER: builtins.int + LAST_UPDATED_TIMESTAMP_FIELD_NUMBER: builtins.int + @property + def created_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def last_updated_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + 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: ... + +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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Permission_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/Policy_pb2.py b/sdk/python/feast/protos/feast/core/Policy_pb2.py new file mode 100644 index 00000000000..2fac866115c --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Policy_pb2.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/Policy.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66\x65\x61st/core/Policy.proto\x12\nfeast.core\"p\n\x06Policy\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x38\n\x11role_based_policy\x18\x03 \x01(\x0b\x32\x1b.feast.core.RoleBasedPolicyH\x00\x42\r\n\x0bpolicy_type\" \n\x0fRoleBasedPolicy\x12\r\n\x05roles\x18\x01 \x03(\tBP\n\x10\x66\x65\x61st.proto.coreB\x0bPolicyProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Policy_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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=39 + _globals['_POLICY']._serialized_end=151 + _globals['_ROLEBASEDPOLICY']._serialized_start=153 + _globals['_ROLEBASEDPOLICY']._serialized_end=185 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/Policy_pb2.pyi b/sdk/python/feast/protos/feast/core/Policy_pb2.pyi new file mode 100644 index 00000000000..f19b18fff40 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Policy_pb2.pyi @@ -0,0 +1,58 @@ +""" +@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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class Policy(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + ROLE_BASED_POLICY_FIELD_NUMBER: builtins.int + name: builtins.str + """Name of the policy.""" + project: builtins.str + """Name of Feast project.""" + @property + def role_based_policy(self) -> global___RoleBasedPolicy: ... + def __init__( + self, + *, + name: builtins.str = ..., + project: builtins.str = ..., + role_based_policy: global___RoleBasedPolicy | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["policy_type", b"policy_type", "role_based_policy", b"role_based_policy"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "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"] | None: ... + +global___Policy = Policy + +class RoleBasedPolicy(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ROLES_FIELD_NUMBER: builtins.int + @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: ... + +global___RoleBasedPolicy = RoleBasedPolicy diff --git a/sdk/python/feast/protos/feast/core/Policy_pb2_grpc.py b/sdk/python/feast/protos/feast/core/Policy_pb2_grpc.py new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Policy_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/Project_pb2.py b/sdk/python/feast/protos/feast/core/Project_pb2.py new file mode 100644 index 00000000000..cfbf1220143 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Project_pb2.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/Project.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66\x65\x61st/core/Project.proto\x12\nfeast.core\x1a\x1fgoogle/protobuf/timestamp.proto\"W\n\x07Project\x12%\n\x04spec\x18\x01 \x01(\x0b\x32\x17.feast.core.ProjectSpec\x12%\n\x04meta\x18\x02 \x01(\x0b\x32\x17.feast.core.ProjectMeta\"\x9d\x01\n\x0bProjectSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12/\n\x04tags\x18\x03 \x03(\x0b\x32!.feast.core.ProjectSpec.TagsEntry\x12\r\n\x05owner\x18\x04 \x01(\t\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x80\x01\n\x0bProjectMeta\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.TimestampBQ\n\x10\x66\x65\x61st.proto.coreB\x0cProjectProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Project_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'8\001' + _globals['_PROJECT']._serialized_start=73 + _globals['_PROJECT']._serialized_end=160 + _globals['_PROJECTSPEC']._serialized_start=163 + _globals['_PROJECTSPEC']._serialized_end=320 + _globals['_PROJECTSPEC_TAGSENTRY']._serialized_start=277 + _globals['_PROJECTSPEC_TAGSENTRY']._serialized_end=320 + _globals['_PROJECTMETA']._serialized_start=323 + _globals['_PROJECTMETA']._serialized_end=451 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/Project_pb2.pyi b/sdk/python/feast/protos/feast/core/Project_pb2.pyi new file mode 100644 index 00000000000..e3cce2ec425 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Project_pb2.pyi @@ -0,0 +1,119 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +* Copyright 2020 The Feast Authors +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* 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 google.protobuf.timestamp_pb2 +import sys + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class Project(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEC_FIELD_NUMBER: builtins.int + META_FIELD_NUMBER: builtins.int + @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: ... + +global___Project = Project + +class ProjectSpec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + NAME_FIELD_NUMBER: builtins.int + DESCRIPTION_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + OWNER_FIELD_NUMBER: builtins.int + name: builtins.str + """Name of the Project""" + description: builtins.str + """Description 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, + *, + name: builtins.str = ..., + description: builtins.str = ..., + 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: ... + +global___ProjectSpec = ProjectSpec + +class ProjectMeta(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CREATED_TIMESTAMP_FIELD_NUMBER: builtins.int + LAST_UPDATED_TIMESTAMP_FIELD_NUMBER: builtins.int + @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: ... + +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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Project_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/Registry_pb2.py b/sdk/python/feast/protos/feast/core/Registry_pb2.py new file mode 100644 index 00000000000..671958d80c7 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Registry_pb2.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/Registry.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from feast.protos.feast.core import Entity_pb2 as feast_dot_core_dot_Entity__pb2 +from feast.protos.feast.core import FeatureService_pb2 as feast_dot_core_dot_FeatureService__pb2 +from feast.protos.feast.core import FeatureTable_pb2 as feast_dot_core_dot_FeatureTable__pb2 +from feast.protos.feast.core import FeatureView_pb2 as feast_dot_core_dot_FeatureView__pb2 +from feast.protos.feast.core import InfraObject_pb2 as feast_dot_core_dot_InfraObject__pb2 +from feast.protos.feast.core import OnDemandFeatureView_pb2 as feast_dot_core_dot_OnDemandFeatureView__pb2 +from feast.protos.feast.core import StreamFeatureView_pb2 as feast_dot_core_dot_StreamFeatureView__pb2 +from feast.protos.feast.core import DataSource_pb2 as feast_dot_core_dot_DataSource__pb2 +from feast.protos.feast.core import SavedDataset_pb2 as feast_dot_core_dot_SavedDataset__pb2 +from feast.protos.feast.core import ValidationProfile_pb2 as feast_dot_core_dot_ValidationProfile__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from feast.protos.feast.core import Permission_pb2 as feast_dot_core_dot_Permission__pb2 +from feast.protos.feast.core import Project_pb2 as feast_dot_core_dot_Project__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19\x66\x65\x61st/core/Registry.proto\x12\nfeast.core\x1a\x17\x66\x65\x61st/core/Entity.proto\x1a\x1f\x66\x65\x61st/core/FeatureService.proto\x1a\x1d\x66\x65\x61st/core/FeatureTable.proto\x1a\x1c\x66\x65\x61st/core/FeatureView.proto\x1a\x1c\x66\x65\x61st/core/InfraObject.proto\x1a$feast/core/OnDemandFeatureView.proto\x1a\"feast/core/StreamFeatureView.proto\x1a\x1b\x66\x65\x61st/core/DataSource.proto\x1a\x1d\x66\x65\x61st/core/SavedDataset.proto\x1a\"feast/core/ValidationProfile.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1b\x66\x65\x61st/core/Permission.proto\x1a\x18\x66\x65\x61st/core/Project.proto\"\xff\x05\n\x08Registry\x12$\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x12.feast.core.Entity\x12\x30\n\x0e\x66\x65\x61ture_tables\x18\x02 \x03(\x0b\x32\x18.feast.core.FeatureTable\x12.\n\rfeature_views\x18\x06 \x03(\x0b\x32\x17.feast.core.FeatureView\x12,\n\x0c\x64\x61ta_sources\x18\x0c \x03(\x0b\x32\x16.feast.core.DataSource\x12@\n\x17on_demand_feature_views\x18\x08 \x03(\x0b\x32\x1f.feast.core.OnDemandFeatureView\x12;\n\x14stream_feature_views\x18\x0e \x03(\x0b\x32\x1d.feast.core.StreamFeatureView\x12\x34\n\x10\x66\x65\x61ture_services\x18\x07 \x03(\x0b\x32\x1a.feast.core.FeatureService\x12\x30\n\x0esaved_datasets\x18\x0b \x03(\x0b\x32\x18.feast.core.SavedDataset\x12>\n\x15validation_references\x18\r \x03(\x0b\x32\x1f.feast.core.ValidationReference\x12 \n\x05infra\x18\n \x01(\x0b\x32\x11.feast.core.Infra\x12\x39\n\x10project_metadata\x18\x0f \x03(\x0b\x32\x1b.feast.core.ProjectMetadataB\x02\x18\x01\x12\x1f\n\x17registry_schema_version\x18\x03 \x01(\t\x12\x12\n\nversion_id\x18\x04 \x01(\t\x12\x30\n\x0clast_updated\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x0bpermissions\x18\x10 \x03(\x0b\x32\x16.feast.core.Permission\x12%\n\x08projects\x18\x11 \x03(\x0b\x32\x13.feast.core.Project\"8\n\x0fProjectMetadata\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x14\n\x0cproject_uuid\x18\x02 \x01(\tBR\n\x10\x66\x65\x61st.proto.coreB\rRegistryProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Registry_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'\030\001' + _globals['_REGISTRY']._serialized_start=449 + _globals['_REGISTRY']._serialized_end=1216 + _globals['_PROJECTMETADATA']._serialized_start=1218 + _globals['_PROJECTMETADATA']._serialized_end=1274 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/Registry_pb2.pyi b/sdk/python/feast/protos/feast/core/Registry_pb2.pyi new file mode 100644 index 00000000000..fca49c75481 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Registry_pb2.pyi @@ -0,0 +1,140 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +* Copyright 2020 The Feast Authors +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* 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 +import feast.core.Entity_pb2 +import feast.core.FeatureService_pb2 +import feast.core.FeatureTable_pb2 +import feast.core.FeatureView_pb2 +import feast.core.InfraObject_pb2 +import feast.core.OnDemandFeatureView_pb2 +import feast.core.Permission_pb2 +import feast.core.Project_pb2 +import feast.core.SavedDataset_pb2 +import feast.core.StreamFeatureView_pb2 +import feast.core.ValidationProfile_pb2 +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class Registry(google.protobuf.message.Message): + """Next id: 18""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ENTITIES_FIELD_NUMBER: builtins.int + FEATURE_TABLES_FIELD_NUMBER: builtins.int + FEATURE_VIEWS_FIELD_NUMBER: builtins.int + DATA_SOURCES_FIELD_NUMBER: builtins.int + ON_DEMAND_FEATURE_VIEWS_FIELD_NUMBER: builtins.int + STREAM_FEATURE_VIEWS_FIELD_NUMBER: builtins.int + FEATURE_SERVICES_FIELD_NUMBER: builtins.int + SAVED_DATASETS_FIELD_NUMBER: builtins.int + VALIDATION_REFERENCES_FIELD_NUMBER: builtins.int + INFRA_FIELD_NUMBER: builtins.int + PROJECT_METADATA_FIELD_NUMBER: builtins.int + REGISTRY_SCHEMA_VERSION_FIELD_NUMBER: builtins.int + VERSION_ID_FIELD_NUMBER: builtins.int + LAST_UPDATED_FIELD_NUMBER: builtins.int + PERMISSIONS_FIELD_NUMBER: builtins.int + PROJECTS_FIELD_NUMBER: builtins.int + @property + def entities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Entity_pb2.Entity]: ... + @property + def feature_tables(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.FeatureTable_pb2.FeatureTable]: ... + @property + def feature_views(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.FeatureView_pb2.FeatureView]: ... + @property + def data_sources(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.DataSource_pb2.DataSource]: ... + @property + def on_demand_feature_views(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.OnDemandFeatureView_pb2.OnDemandFeatureView]: ... + @property + def stream_feature_views(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.StreamFeatureView_pb2.StreamFeatureView]: ... + @property + def feature_services(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.FeatureService_pb2.FeatureService]: ... + @property + def saved_datasets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.SavedDataset_pb2.SavedDataset]: ... + @property + def validation_references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.ValidationProfile_pb2.ValidationReference]: ... + @property + def infra(self) -> feast.core.InfraObject_pb2.Infra: ... + @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 + def permissions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Permission_pb2.Permission]: ... + @property + def projects(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Project_pb2.Project]: ... + def __init__( + self, + *, + entities: collections.abc.Iterable[feast.core.Entity_pb2.Entity] | None = ..., + feature_tables: collections.abc.Iterable[feast.core.FeatureTable_pb2.FeatureTable] | None = ..., + feature_views: collections.abc.Iterable[feast.core.FeatureView_pb2.FeatureView] | None = ..., + data_sources: collections.abc.Iterable[feast.core.DataSource_pb2.DataSource] | None = ..., + on_demand_feature_views: collections.abc.Iterable[feast.core.OnDemandFeatureView_pb2.OnDemandFeatureView] | None = ..., + stream_feature_views: collections.abc.Iterable[feast.core.StreamFeatureView_pb2.StreamFeatureView] | None = ..., + feature_services: collections.abc.Iterable[feast.core.FeatureService_pb2.FeatureService] | None = ..., + saved_datasets: collections.abc.Iterable[feast.core.SavedDataset_pb2.SavedDataset] | None = ..., + validation_references: collections.abc.Iterable[feast.core.ValidationProfile_pb2.ValidationReference] | None = ..., + infra: feast.core.InfraObject_pb2.Infra | None = ..., + project_metadata: collections.abc.Iterable[global___ProjectMetadata] | None = ..., + registry_schema_version: builtins.str = ..., + version_id: builtins.str = ..., + last_updated: google.protobuf.timestamp_pb2.Timestamp | None = ..., + 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: ... + +global___Registry = Registry + +class ProjectMetadata(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PROJECT_FIELD_NUMBER: builtins.int + PROJECT_UUID_FIELD_NUMBER: builtins.int + project: builtins.str + project_uuid: builtins.str + def __init__( + self, + *, + 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: ... + +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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Registry_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/SavedDataset_pb2.py b/sdk/python/feast/protos/feast/core/SavedDataset_pb2.py new file mode 100644 index 00000000000..fe1e2d49eac --- /dev/null +++ b/sdk/python/feast/protos/feast/core/SavedDataset_pb2.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/SavedDataset.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from feast.protos.feast.core import DataSource_pb2 as feast_dot_core_dot_DataSource__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x66\x65\x61st/core/SavedDataset.proto\x12\nfeast.core\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1b\x66\x65\x61st/core/DataSource.proto\"\xa5\x02\n\x10SavedDatasetSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x10\n\x08\x66\x65\x61tures\x18\x03 \x03(\t\x12\x11\n\tjoin_keys\x18\x04 \x03(\t\x12\x1a\n\x12\x66ull_feature_names\x18\x05 \x01(\x08\x12\x30\n\x07storage\x18\x06 \x01(\x0b\x32\x1f.feast.core.SavedDatasetStorage\x12\x1c\n\x14\x66\x65\x61ture_service_name\x18\x08 \x01(\t\x12\x34\n\x04tags\x18\x07 \x03(\x0b\x32&.feast.core.SavedDatasetSpec.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa9\x04\n\x13SavedDatasetStorage\x12:\n\x0c\x66ile_storage\x18\x04 \x01(\x0b\x32\".feast.core.DataSource.FileOptionsH\x00\x12\x42\n\x10\x62igquery_storage\x18\x05 \x01(\x0b\x32&.feast.core.DataSource.BigQueryOptionsH\x00\x12\x42\n\x10redshift_storage\x18\x06 \x01(\x0b\x32&.feast.core.DataSource.RedshiftOptionsH\x00\x12\x44\n\x11snowflake_storage\x18\x07 \x01(\x0b\x32\'.feast.core.DataSource.SnowflakeOptionsH\x00\x12<\n\rtrino_storage\x18\x08 \x01(\x0b\x32#.feast.core.DataSource.TrinoOptionsH\x00\x12<\n\rspark_storage\x18\t \x01(\x0b\x32#.feast.core.DataSource.SparkOptionsH\x00\x12\x44\n\x0e\x63ustom_storage\x18\n \x01(\x0b\x32*.feast.core.DataSource.CustomSourceOptionsH\x00\x12>\n\x0e\x61thena_storage\x18\x0b \x01(\x0b\x32$.feast.core.DataSource.AthenaOptionsH\x00\x42\x06\n\x04kind\"\xf7\x01\n\x10SavedDatasetMeta\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\x12\x37\n\x13min_event_timestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x37\n\x13max_event_timestamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"f\n\x0cSavedDataset\x12*\n\x04spec\x18\x01 \x01(\x0b\x32\x1c.feast.core.SavedDatasetSpec\x12*\n\x04meta\x18\x02 \x01(\x0b\x32\x1c.feast.core.SavedDatasetMetaBV\n\x10\x66\x65\x61st.proto.coreB\x11SavedDatasetProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.SavedDataset_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'8\001' + _globals['_SAVEDDATASETSPEC']._serialized_start=108 + _globals['_SAVEDDATASETSPEC']._serialized_end=401 + _globals['_SAVEDDATASETSPEC_TAGSENTRY']._serialized_start=358 + _globals['_SAVEDDATASETSPEC_TAGSENTRY']._serialized_end=401 + _globals['_SAVEDDATASETSTORAGE']._serialized_start=404 + _globals['_SAVEDDATASETSTORAGE']._serialized_end=957 + _globals['_SAVEDDATASETMETA']._serialized_start=960 + _globals['_SAVEDDATASETMETA']._serialized_end=1207 + _globals['_SAVEDDATASET']._serialized_start=1209 + _globals['_SAVEDDATASET']._serialized_end=1311 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/SavedDataset_pb2.pyi b/sdk/python/feast/protos/feast/core/SavedDataset_pb2.pyi new file mode 100644 index 00000000000..47525b64ede --- /dev/null +++ b/sdk/python/feast/protos/feast/core/SavedDataset_pb2.pyi @@ -0,0 +1,192 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2021 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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 +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class SavedDatasetSpec(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + FEATURES_FIELD_NUMBER: builtins.int + JOIN_KEYS_FIELD_NUMBER: builtins.int + FULL_FEATURE_NAMES_FIELD_NUMBER: builtins.int + STORAGE_FIELD_NUMBER: builtins.int + FEATURE_SERVICE_NAME_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + name: builtins.str + """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.""" + @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, + *, + name: builtins.str = ..., + project: builtins.str = ..., + features: collections.abc.Iterable[builtins.str] | None = ..., + join_keys: collections.abc.Iterable[builtins.str] | None = ..., + full_feature_names: builtins.bool = ..., + storage: global___SavedDatasetStorage | None = ..., + 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: ... + +global___SavedDatasetSpec = SavedDatasetSpec + +class SavedDatasetStorage(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FILE_STORAGE_FIELD_NUMBER: builtins.int + BIGQUERY_STORAGE_FIELD_NUMBER: builtins.int + REDSHIFT_STORAGE_FIELD_NUMBER: builtins.int + SNOWFLAKE_STORAGE_FIELD_NUMBER: builtins.int + TRINO_STORAGE_FIELD_NUMBER: builtins.int + SPARK_STORAGE_FIELD_NUMBER: builtins.int + CUSTOM_STORAGE_FIELD_NUMBER: builtins.int + ATHENA_STORAGE_FIELD_NUMBER: builtins.int + @property + def file_storage(self) -> feast.core.DataSource_pb2.DataSource.FileOptions: ... + @property + def bigquery_storage(self) -> feast.core.DataSource_pb2.DataSource.BigQueryOptions: ... + @property + def redshift_storage(self) -> feast.core.DataSource_pb2.DataSource.RedshiftOptions: ... + @property + def snowflake_storage(self) -> feast.core.DataSource_pb2.DataSource.SnowflakeOptions: ... + @property + def trino_storage(self) -> feast.core.DataSource_pb2.DataSource.TrinoOptions: ... + @property + def spark_storage(self) -> feast.core.DataSource_pb2.DataSource.SparkOptions: ... + @property + def custom_storage(self) -> feast.core.DataSource_pb2.DataSource.CustomSourceOptions: ... + @property + def athena_storage(self) -> feast.core.DataSource_pb2.DataSource.AthenaOptions: ... + def __init__( + self, + *, + file_storage: feast.core.DataSource_pb2.DataSource.FileOptions | None = ..., + bigquery_storage: feast.core.DataSource_pb2.DataSource.BigQueryOptions | None = ..., + redshift_storage: feast.core.DataSource_pb2.DataSource.RedshiftOptions | None = ..., + snowflake_storage: feast.core.DataSource_pb2.DataSource.SnowflakeOptions | None = ..., + trino_storage: feast.core.DataSource_pb2.DataSource.TrinoOptions | None = ..., + spark_storage: feast.core.DataSource_pb2.DataSource.SparkOptions | None = ..., + 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: ... + +global___SavedDatasetStorage = SavedDatasetStorage + +class SavedDatasetMeta(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CREATED_TIMESTAMP_FIELD_NUMBER: builtins.int + LAST_UPDATED_TIMESTAMP_FIELD_NUMBER: builtins.int + MIN_EVENT_TIMESTAMP_FIELD_NUMBER: builtins.int + MAX_EVENT_TIMESTAMP_FIELD_NUMBER: builtins.int + @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, + *, + created_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + last_updated_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + 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: ... + +global___SavedDatasetMeta = SavedDatasetMeta + +class SavedDataset(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEC_FIELD_NUMBER: builtins.int + META_FIELD_NUMBER: builtins.int + @property + def spec(self) -> global___SavedDatasetSpec: ... + @property + def meta(self) -> global___SavedDatasetMeta: ... + def __init__( + self, + *, + 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: ... + +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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/SavedDataset_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/SqliteTable_pb2.py b/sdk/python/feast/protos/feast/core/SqliteTable_pb2.py new file mode 100644 index 00000000000..8cc14781c72 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/SqliteTable_pb2.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/SqliteTable.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66\x65\x61st/core/SqliteTable.proto\x12\nfeast.core\")\n\x0bSqliteTable\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\tBU\n\x10\x66\x65\x61st.proto.coreB\x10SqliteTableProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.SqliteTable_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/SqliteTable_pb2.pyi b/sdk/python/feast/protos/feast/core/SqliteTable_pb2.pyi new file mode 100644 index 00000000000..10ecebf362b --- /dev/null +++ b/sdk/python/feast/protos/feast/core/SqliteTable_pb2.pyi @@ -0,0 +1,50 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +* Copyright 2021 The Feast Authors +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* 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.message +import sys + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class SqliteTable(google.protobuf.message.Message): + """Represents a Sqlite table""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PATH_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + path: builtins.str + """Absolute path of the table""" + name: builtins.str + """Name of the table""" + def __init__( + self, + *, + path: builtins.str = ..., + name: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/SqliteTable_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/Store_pb2.py b/sdk/python/feast/protos/feast/core/Store_pb2.py new file mode 100644 index 00000000000..7d24e11947f --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Store_pb2.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/Store.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x66\x65\x61st/core/Store.proto\x12\nfeast.core\"\xfd\x06\n\x05Store\x12\x0c\n\x04name\x18\x01 \x01(\t\x12)\n\x04type\x18\x02 \x01(\x0e\x32\x1b.feast.core.Store.StoreType\x12\x35\n\rsubscriptions\x18\x04 \x03(\x0b\x32\x1e.feast.core.Store.Subscription\x12\x35\n\x0credis_config\x18\x0b \x01(\x0b\x32\x1d.feast.core.Store.RedisConfigH\x00\x12\x44\n\x14redis_cluster_config\x18\x0e \x01(\x0b\x32$.feast.core.Store.RedisClusterConfigH\x00\x1a\x88\x01\n\x0bRedisConfig\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\x12\x1a\n\x12initial_backoff_ms\x18\x03 \x01(\x05\x12\x13\n\x0bmax_retries\x18\x04 \x01(\x05\x12\x1f\n\x17\x66lush_frequency_seconds\x18\x05 \x01(\x05\x12\x0b\n\x03ssl\x18\x06 \x01(\x08\x1a\xdb\x02\n\x12RedisClusterConfig\x12\x19\n\x11\x63onnection_string\x18\x01 \x01(\t\x12\x1a\n\x12initial_backoff_ms\x18\x02 \x01(\x05\x12\x13\n\x0bmax_retries\x18\x03 \x01(\x05\x12\x1f\n\x17\x66lush_frequency_seconds\x18\x04 \x01(\x05\x12\x12\n\nkey_prefix\x18\x05 \x01(\t\x12\x17\n\x0f\x65nable_fallback\x18\x06 \x01(\x08\x12\x17\n\x0f\x66\x61llback_prefix\x18\x07 \x01(\t\x12@\n\tread_from\x18\x08 \x01(\x0e\x32-.feast.core.Store.RedisClusterConfig.ReadFrom\"P\n\x08ReadFrom\x12\n\n\x06MASTER\x10\x00\x12\x14\n\x10MASTER_PREFERRED\x10\x01\x12\x0b\n\x07REPLICA\x10\x02\x12\x15\n\x11REPLICA_PREFERRED\x10\x03\x1a\x44\n\x0cSubscription\x12\x0f\n\x07project\x18\x03 \x01(\t\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x65xclude\x18\x04 \x01(\x08J\x04\x08\x02\x10\x03\"N\n\tStoreType\x12\x0b\n\x07INVALID\x10\x00\x12\t\n\x05REDIS\x10\x01\x12\x11\n\rREDIS_CLUSTER\x10\x04\"\x04\x08\x02\x10\x02\"\x04\x08\x03\x10\x03\"\x04\x08\x0c\x10\x0c\"\x04\x08\r\x10\rB\x08\n\x06\x63onfigBO\n\x10\x66\x65\x61st.proto.coreB\nStoreProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Store_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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 + _globals['_STORE_REDISCONFIG']._serialized_start=286 + _globals['_STORE_REDISCONFIG']._serialized_end=422 + _globals['_STORE_REDISCLUSTERCONFIG']._serialized_start=425 + _globals['_STORE_REDISCLUSTERCONFIG']._serialized_end=772 + _globals['_STORE_REDISCLUSTERCONFIG_READFROM']._serialized_start=692 + _globals['_STORE_REDISCLUSTERCONFIG_READFROM']._serialized_end=772 + _globals['_STORE_SUBSCRIPTION']._serialized_start=774 + _globals['_STORE_SUBSCRIPTION']._serialized_end=842 + _globals['_STORE_STORETYPE']._serialized_start=844 + _globals['_STORE_STORETYPE']._serialized_end=922 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/Store_pb2.pyi b/sdk/python/feast/protos/feast/core/Store_pb2.pyi new file mode 100644 index 00000000000..5ee957d184f --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Store_pb2.pyi @@ -0,0 +1,234 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +* Copyright 2019 The Feast Authors +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* 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.internal.enum_type_wrapper +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +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. + The way FeatureRow is encoded and decoded when it is written to and read from + the Store depends on the type of the Store. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _StoreType: + 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 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + INVALID: Store._StoreType.ValueType # 0 + REDIS: Store._StoreType.ValueType # 1 + """Redis stores a FeatureRow element as a key, value pair. + + The Redis data types used (https://redis.io/topics/data-types): + - key: STRING + - value: STRING + + Encodings: + - key: byte array of RedisKey (refer to feast.storage.RedisKeyV2) + - value: Redis hashmap + """ + REDIS_CLUSTER: Store._StoreType.ValueType # 4 + + class StoreType(_StoreType, metaclass=_StoreTypeEnumTypeWrapper): ... + INVALID: Store.StoreType.ValueType # 0 + REDIS: Store.StoreType.ValueType # 1 + """Redis stores a FeatureRow element as a key, value pair. + + The Redis data types used (https://redis.io/topics/data-types): + - key: STRING + - value: STRING + + Encodings: + - key: byte array of RedisKey (refer to feast.storage.RedisKeyV2) + - value: Redis hashmap + """ + REDIS_CLUSTER: Store.StoreType.ValueType # 4 + + class RedisConfig(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + HOST_FIELD_NUMBER: builtins.int + PORT_FIELD_NUMBER: builtins.int + INITIAL_BACKOFF_MS_FIELD_NUMBER: builtins.int + MAX_RETRIES_FIELD_NUMBER: builtins.int + FLUSH_FREQUENCY_SECONDS_FIELD_NUMBER: builtins.int + SSL_FIELD_NUMBER: builtins.int + host: builtins.str + port: builtins.int + initial_backoff_ms: builtins.int + """Optional. The number of milliseconds to wait before retrying failed Redis connection. + By default, Feast uses exponential backoff policy and "initial_backoff_ms" sets the initial wait duration. + """ + max_retries: builtins.int + """Optional. Maximum total number of retries for connecting to Redis. Default to zero retries.""" + flush_frequency_seconds: builtins.int + """Optional. How often flush data to redis""" + ssl: builtins.bool + """Optional. Connect over SSL.""" + def __init__( + self, + *, + host: builtins.str = ..., + port: builtins.int = ..., + initial_backoff_ms: builtins.int = ..., + max_retries: builtins.int = ..., + 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: ... + + class RedisClusterConfig(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _ReadFrom: + 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 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + MASTER: Store.RedisClusterConfig._ReadFrom.ValueType # 0 + MASTER_PREFERRED: Store.RedisClusterConfig._ReadFrom.ValueType # 1 + REPLICA: Store.RedisClusterConfig._ReadFrom.ValueType # 2 + REPLICA_PREFERRED: Store.RedisClusterConfig._ReadFrom.ValueType # 3 + + class ReadFrom(_ReadFrom, metaclass=_ReadFromEnumTypeWrapper): + """Optional. Priority of nodes when reading from cluster""" + + MASTER: Store.RedisClusterConfig.ReadFrom.ValueType # 0 + MASTER_PREFERRED: Store.RedisClusterConfig.ReadFrom.ValueType # 1 + REPLICA: Store.RedisClusterConfig.ReadFrom.ValueType # 2 + REPLICA_PREFERRED: Store.RedisClusterConfig.ReadFrom.ValueType # 3 + + CONNECTION_STRING_FIELD_NUMBER: builtins.int + INITIAL_BACKOFF_MS_FIELD_NUMBER: builtins.int + MAX_RETRIES_FIELD_NUMBER: builtins.int + FLUSH_FREQUENCY_SECONDS_FIELD_NUMBER: builtins.int + KEY_PREFIX_FIELD_NUMBER: builtins.int + ENABLE_FALLBACK_FIELD_NUMBER: builtins.int + FALLBACK_PREFIX_FIELD_NUMBER: builtins.int + READ_FROM_FIELD_NUMBER: builtins.int + connection_string: builtins.str + """List of Redis Uri for all the nodes in Redis Cluster, comma separated. Eg. host1:6379, host2:6379""" + initial_backoff_ms: builtins.int + max_retries: builtins.int + flush_frequency_seconds: builtins.int + """Optional. How often flush data to redis""" + key_prefix: builtins.str + """Optional. Append a prefix to the Redis Key""" + enable_fallback: builtins.bool + """Optional. Enable fallback to another key prefix if the original key is not present. + Useful for migrating key prefix without re-ingestion. Disabled by default. + """ + fallback_prefix: builtins.str + """Optional. This would be the fallback prefix to use if enable_fallback is true.""" + read_from: global___Store.RedisClusterConfig.ReadFrom.ValueType + def __init__( + self, + *, + connection_string: builtins.str = ..., + initial_backoff_ms: builtins.int = ..., + max_retries: builtins.int = ..., + flush_frequency_seconds: builtins.int = ..., + key_prefix: builtins.str = ..., + enable_fallback: builtins.bool = ..., + 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: ... + + class Subscription(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PROJECT_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + EXCLUDE_FIELD_NUMBER: builtins.int + project: builtins.str + """Name of project that the feature sets belongs to. This can be one of + - [project_name] + - * + If an asterisk is provided, filtering on projects will be disabled. All projects will + be matched. It is NOT possible to provide an asterisk with a string in order to do + pattern matching. + """ + name: builtins.str + """Name of the desired feature set. Asterisks can be used as wildcards in the name. + Matching on names is only permitted if a specific project is defined. It is disallowed + If the project name is set to "*" + e.g. + - * can be used to match all feature sets + - my-feature-set* can be used to match all features prefixed by "my-feature-set" + - my-feature-set-6 can be used to select a single feature set + """ + exclude: builtins.bool + """All matches with exclude enabled will be filtered out instead of added""" + def __init__( + self, + *, + project: builtins.str = ..., + 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: ... + + NAME_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + SUBSCRIPTIONS_FIELD_NUMBER: builtins.int + REDIS_CONFIG_FIELD_NUMBER: builtins.int + REDIS_CLUSTER_CONFIG_FIELD_NUMBER: builtins.int + name: builtins.str + """Name of the store.""" + type: global___Store.StoreType.ValueType + """Type of store.""" + @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 + def redis_cluster_config(self) -> global___Store.RedisClusterConfig: ... + def __init__( + self, + *, + name: builtins.str = ..., + type: global___Store.StoreType.ValueType = ..., + subscriptions: collections.abc.Iterable[global___Store.Subscription] | None = ..., + 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: ... + +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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Store_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.py b/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.py new file mode 100644 index 00000000000..ba19088edd6 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/StreamFeatureView.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from feast.protos.feast.core import OnDemandFeatureView_pb2 as feast_dot_core_dot_OnDemandFeatureView__pb2 +from feast.protos.feast.core import FeatureView_pb2 as feast_dot_core_dot_FeatureView__pb2 +from feast.protos.feast.core import Feature_pb2 as feast_dot_core_dot_Feature__pb2 +from feast.protos.feast.core import DataSource_pb2 as feast_dot_core_dot_DataSource__pb2 +from feast.protos.feast.core import Aggregation_pb2 as feast_dot_core_dot_Aggregation__pb2 +from feast.protos.feast.core import Transformation_pb2 as feast_dot_core_dot_Transformation__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"feast/core/StreamFeatureView.proto\x12\nfeast.core\x1a\x1egoogle/protobuf/duration.proto\x1a$feast/core/OnDemandFeatureView.proto\x1a\x1c\x66\x65\x61st/core/FeatureView.proto\x1a\x18\x66\x65\x61st/core/Feature.proto\x1a\x1b\x66\x65\x61st/core/DataSource.proto\x1a\x1c\x66\x65\x61st/core/Aggregation.proto\x1a\x1f\x66\x65\x61st/core/Transformation.proto\"o\n\x11StreamFeatureView\x12/\n\x04spec\x18\x01 \x01(\x0b\x32!.feast.core.StreamFeatureViewSpec\x12)\n\x04meta\x18\x02 \x01(\x0b\x32\x1b.feast.core.FeatureViewMeta\"\xa8\x05\n\x15StreamFeatureViewSpec\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x10\n\x08\x65ntities\x18\x03 \x03(\t\x12+\n\x08\x66\x65\x61tures\x18\x04 \x03(\x0b\x32\x19.feast.core.FeatureSpecV2\x12\x31\n\x0e\x65ntity_columns\x18\x05 \x03(\x0b\x32\x19.feast.core.FeatureSpecV2\x12\x13\n\x0b\x64\x65scription\x18\x06 \x01(\t\x12\x39\n\x04tags\x18\x07 \x03(\x0b\x32+.feast.core.StreamFeatureViewSpec.TagsEntry\x12\r\n\x05owner\x18\x08 \x01(\t\x12&\n\x03ttl\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12,\n\x0c\x62\x61tch_source\x18\n \x01(\x0b\x32\x16.feast.core.DataSource\x12-\n\rstream_source\x18\x0b \x01(\x0b\x32\x16.feast.core.DataSource\x12\x0e\n\x06online\x18\x0c \x01(\x08\x12\x42\n\x15user_defined_function\x18\r \x01(\x0b\x32\x1f.feast.core.UserDefinedFunctionB\x02\x18\x01\x12\x0c\n\x04mode\x18\x0e \x01(\t\x12-\n\x0c\x61ggregations\x18\x0f \x03(\x0b\x32\x17.feast.core.Aggregation\x12\x17\n\x0ftimestamp_field\x18\x10 \x01(\t\x12\x43\n\x16\x66\x65\x61ture_transformation\x18\x11 \x01(\x0b\x32#.feast.core.FeatureTransformationV2\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42[\n\x10\x66\x65\x61st.proto.coreB\x16StreamFeatureViewProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.StreamFeatureView_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'8\001' + _globals['_STREAMFEATUREVIEWSPEC'].fields_by_name['user_defined_function']._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 + _globals['_STREAMFEATUREVIEWSPEC']._serialized_start=382 + _globals['_STREAMFEATUREVIEWSPEC']._serialized_end=1062 + _globals['_STREAMFEATUREVIEWSPEC_TAGSENTRY']._serialized_start=1019 + _globals['_STREAMFEATUREVIEWSPEC_TAGSENTRY']._serialized_end=1062 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.pyi b/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.pyi new file mode 100644 index 00000000000..70e897a2f21 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2.pyi @@ -0,0 +1,170 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2020 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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 +import feast.core.DataSource_pb2 +import feast.core.FeatureView_pb2 +import feast.core.Feature_pb2 +import feast.core.OnDemandFeatureView_pb2 +import feast.core.Transformation_pb2 +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class StreamFeatureView(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPEC_FIELD_NUMBER: builtins.int + META_FIELD_NUMBER: builtins.int + @property + def spec(self) -> global___StreamFeatureViewSpec: + """User-specified specifications of this feature view.""" + @property + def meta(self) -> feast.core.FeatureView_pb2.FeatureViewMeta: ... + def __init__( + self, + *, + 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: ... + +global___StreamFeatureView = StreamFeatureView + +class StreamFeatureViewSpec(google.protobuf.message.Message): + """Next available id: 17""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + ENTITIES_FIELD_NUMBER: builtins.int + FEATURES_FIELD_NUMBER: builtins.int + ENTITY_COLUMNS_FIELD_NUMBER: builtins.int + DESCRIPTION_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + OWNER_FIELD_NUMBER: builtins.int + TTL_FIELD_NUMBER: builtins.int + BATCH_SOURCE_FIELD_NUMBER: builtins.int + STREAM_SOURCE_FIELD_NUMBER: builtins.int + ONLINE_FIELD_NUMBER: builtins.int + USER_DEFINED_FUNCTION_FIELD_NUMBER: builtins.int + MODE_FIELD_NUMBER: builtins.int + AGGREGATIONS_FIELD_NUMBER: builtins.int + TIMESTAMP_FIELD_FIELD_NUMBER: builtins.int + FEATURE_TRANSFORMATION_FIELD_NUMBER: builtins.int + name: builtins.str + """Name of the feature view. Must be unique. Not updated.""" + project: builtins.str + """Name of Feast project that this feature view belongs to.""" + @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 + younger than ttl. Ttl is measured as the duration of time between + 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}""" + def __init__( + self, + *, + name: builtins.str = ..., + project: builtins.str = ..., + entities: collections.abc.Iterable[builtins.str] | None = ..., + features: collections.abc.Iterable[feast.core.Feature_pb2.FeatureSpecV2] | None = ..., + entity_columns: collections.abc.Iterable[feast.core.Feature_pb2.FeatureSpecV2] | None = ..., + description: builtins.str = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + owner: builtins.str = ..., + ttl: google.protobuf.duration_pb2.Duration | None = ..., + batch_source: feast.core.DataSource_pb2.DataSource | None = ..., + stream_source: feast.core.DataSource_pb2.DataSource | None = ..., + online: builtins.bool = ..., + user_defined_function: feast.core.OnDemandFeatureView_pb2.UserDefinedFunction | None = ..., + mode: builtins.str = ..., + aggregations: collections.abc.Iterable[feast.core.Aggregation_pb2.Aggregation] | None = ..., + timestamp_field: builtins.str = ..., + feature_transformation: feast.core.Transformation_pb2.FeatureTransformationV2 | 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", "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", "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", "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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/StreamFeatureView_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/Transformation_pb2.py b/sdk/python/feast/protos/feast/core/Transformation_pb2.py new file mode 100644 index 00000000000..9fd11d3026b --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Transformation_pb2.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/Transformation.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x66\x65\x61st/core/Transformation.proto\x12\nfeast.core\"F\n\x15UserDefinedFunctionV2\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04\x62ody\x18\x02 \x01(\x0c\x12\x11\n\tbody_text\x18\x03 \x01(\t\"\xba\x01\n\x17\x46\x65\x61tureTransformationV2\x12\x42\n\x15user_defined_function\x18\x01 \x01(\x0b\x32!.feast.core.UserDefinedFunctionV2H\x00\x12I\n\x18substrait_transformation\x18\x02 \x01(\x0b\x32%.feast.core.SubstraitTransformationV2H\x00\x42\x10\n\x0etransformation\"J\n\x19SubstraitTransformationV2\x12\x16\n\x0esubstrait_plan\x18\x01 \x01(\x0c\x12\x15\n\ribis_function\x18\x02 \x01(\x0c\x42_\n\x10\x66\x65\x61st.proto.coreB\x1a\x46\x65\x61tureTransformationProtoZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.Transformation_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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=117 + _globals['_FEATURETRANSFORMATIONV2']._serialized_start=120 + _globals['_FEATURETRANSFORMATIONV2']._serialized_end=306 + _globals['_SUBSTRAITTRANSFORMATIONV2']._serialized_start=308 + _globals['_SUBSTRAITTRANSFORMATIONV2']._serialized_end=382 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/Transformation_pb2.pyi b/sdk/python/feast/protos/feast/core/Transformation_pb2.pyi new file mode 100644 index 00000000000..1120c447e01 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Transformation_pb2.pyi @@ -0,0 +1,80 @@ +""" +@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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class UserDefinedFunctionV2(google.protobuf.message.Message): + """Serialized representation of python function.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + BODY_FIELD_NUMBER: builtins.int + BODY_TEXT_FIELD_NUMBER: builtins.int + name: builtins.str + """The function name""" + body: builtins.bytes + """The python-syntax function body (serialized by dill)""" + body_text: builtins.str + """The string representation of the udf""" + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___UserDefinedFunctionV2 = UserDefinedFunctionV2 + +class FeatureTransformationV2(google.protobuf.message.Message): + """A feature transformation executed as a user-defined function""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + USER_DEFINED_FUNCTION_FIELD_NUMBER: builtins.int + SUBSTRAIT_TRANSFORMATION_FIELD_NUMBER: builtins.int + @property + def user_defined_function(self) -> global___UserDefinedFunctionV2: ... + @property + def substrait_transformation(self) -> global___SubstraitTransformationV2: ... + def __init__( + self, + *, + 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: ... + +global___FeatureTransformationV2 = FeatureTransformationV2 + +class SubstraitTransformationV2(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SUBSTRAIT_PLAN_FIELD_NUMBER: builtins.int + IBIS_FUNCTION_FIELD_NUMBER: builtins.int + substrait_plan: builtins.bytes + ibis_function: builtins.bytes + def __init__( + self, + *, + 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: ... + +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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/Transformation_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/ValidationProfile_pb2.py b/sdk/python/feast/protos/feast/core/ValidationProfile_pb2.py new file mode 100644 index 00000000000..0fb27ceab16 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/ValidationProfile_pb2.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/core/ValidationProfile.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"feast/core/ValidationProfile.proto\x12\nfeast.core\"\x83\x01\n\x14GEValidationProfiler\x12\x46\n\x08profiler\x18\x01 \x01(\x0b\x32\x34.feast.core.GEValidationProfiler.UserDefinedProfiler\x1a#\n\x13UserDefinedProfiler\x12\x0c\n\x04\x62ody\x18\x01 \x01(\x0c\"0\n\x13GEValidationProfile\x12\x19\n\x11\x65xpectation_suite\x18\x01 \x01(\x0c\"\xdd\x02\n\x13ValidationReference\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1e\n\x16reference_dataset_name\x18\x02 \x01(\t\x12\x0f\n\x07project\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x37\n\x04tags\x18\x05 \x03(\x0b\x32).feast.core.ValidationReference.TagsEntry\x12\x37\n\x0bge_profiler\x18\x06 \x01(\x0b\x32 .feast.core.GEValidationProfilerH\x00\x12\x35\n\nge_profile\x18\x07 \x01(\x0b\x32\x1f.feast.core.GEValidationProfileH\x01\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\n\n\x08profilerB\x10\n\x0e\x63\x61\x63hed_profileBV\n\x10\x66\x65\x61st.proto.coreB\x11ValidationProfileZ/github.com/feast-dev/feast/go/protos/feast/coreb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.core.ValidationProfile_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'8\001' + _globals['_GEVALIDATIONPROFILER']._serialized_start=51 + _globals['_GEVALIDATIONPROFILER']._serialized_end=182 + _globals['_GEVALIDATIONPROFILER_USERDEFINEDPROFILER']._serialized_start=147 + _globals['_GEVALIDATIONPROFILER_USERDEFINEDPROFILER']._serialized_end=182 + _globals['_GEVALIDATIONPROFILE']._serialized_start=184 + _globals['_GEVALIDATIONPROFILE']._serialized_end=232 + _globals['_VALIDATIONREFERENCE']._serialized_start=235 + _globals['_VALIDATIONREFERENCE']._serialized_end=584 + _globals['_VALIDATIONREFERENCE_TAGSENTRY']._serialized_start=511 + _globals['_VALIDATIONREFERENCE_TAGSENTRY']._serialized_end=554 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/core/ValidationProfile_pb2.pyi b/sdk/python/feast/protos/feast/core/ValidationProfile_pb2.pyi new file mode 100644 index 00000000000..93da1e0f5e8 --- /dev/null +++ b/sdk/python/feast/protos/feast/core/ValidationProfile_pb2.pyi @@ -0,0 +1,136 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2021 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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 + +class GEValidationProfiler(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class UserDefinedProfiler(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + BODY_FIELD_NUMBER: builtins.int + body: builtins.bytes + """The python-syntax function body (serialized by dill)""" + def __init__( + self, + *, + body: builtins.bytes = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["body", b"body"]) -> None: ... + + PROFILER_FIELD_NUMBER: builtins.int + @property + def profiler(self) -> global___GEValidationProfiler.UserDefinedProfiler: ... + def __init__( + self, + *, + 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: ... + +global___GEValidationProfiler = GEValidationProfiler + +class GEValidationProfile(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + EXPECTATION_SUITE_FIELD_NUMBER: builtins.int + expectation_suite: builtins.bytes + """JSON-serialized ExpectationSuite object""" + def __init__( + self, + *, + expectation_suite: builtins.bytes = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["expectation_suite", b"expectation_suite"]) -> None: ... + +global___GEValidationProfile = GEValidationProfile + +class ValidationReference(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + NAME_FIELD_NUMBER: builtins.int + REFERENCE_DATASET_NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + DESCRIPTION_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + GE_PROFILER_FIELD_NUMBER: builtins.int + GE_PROFILE_FIELD_NUMBER: builtins.int + name: builtins.str + """Unique name of validation reference within the project""" + reference_dataset_name: builtins.str + """Name of saved dataset used as reference dataset""" + project: builtins.str + """Name of Feast project that this object source belongs to""" + description: builtins.str + """Description of the validation reference""" + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + """User defined metadata""" + @property + def ge_profiler(self) -> global___GEValidationProfiler: ... + @property + def ge_profile(self) -> global___GEValidationProfile: ... + def __init__( + self, + *, + name: builtins.str = ..., + reference_dataset_name: builtins.str = ..., + project: builtins.str = ..., + description: builtins.str = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + 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: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["cached_profile", b"cached_profile"]) -> typing_extensions.Literal["ge_profile"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing_extensions.Literal["profiler", b"profiler"]) -> typing_extensions.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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/core/ValidationProfile_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/core/__init__.py b/sdk/python/feast/protos/feast/core/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sdk/python/feast/protos/feast/registry/RegistryServer_pb2.py b/sdk/python/feast/protos/feast/registry/RegistryServer_pb2.py new file mode 100644 index 00000000000..e0cae3da4b7 --- /dev/null +++ b/sdk/python/feast/protos/feast/registry/RegistryServer_pb2.py @@ -0,0 +1,198 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/registry/RegistryServer.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from feast.protos.feast.core import Registry_pb2 as feast_dot_core_dot_Registry__pb2 +from feast.protos.feast.core import Entity_pb2 as feast_dot_core_dot_Entity__pb2 +from feast.protos.feast.core import DataSource_pb2 as feast_dot_core_dot_DataSource__pb2 +from feast.protos.feast.core import FeatureView_pb2 as feast_dot_core_dot_FeatureView__pb2 +from feast.protos.feast.core import StreamFeatureView_pb2 as feast_dot_core_dot_StreamFeatureView__pb2 +from feast.protos.feast.core import OnDemandFeatureView_pb2 as feast_dot_core_dot_OnDemandFeatureView__pb2 +from feast.protos.feast.core import FeatureService_pb2 as feast_dot_core_dot_FeatureService__pb2 +from feast.protos.feast.core import SavedDataset_pb2 as feast_dot_core_dot_SavedDataset__pb2 +from feast.protos.feast.core import ValidationProfile_pb2 as feast_dot_core_dot_ValidationProfile__pb2 +from feast.protos.feast.core import InfraObject_pb2 as feast_dot_core_dot_InfraObject__pb2 +from feast.protos.feast.core import Permission_pb2 as feast_dot_core_dot_Permission__pb2 +from feast.protos.feast.core import Project_pb2 as feast_dot_core_dot_Project__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#feast/registry/RegistryServer.proto\x12\x0e\x66\x65\x61st.registry\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19\x66\x65\x61st/core/Registry.proto\x1a\x17\x66\x65\x61st/core/Entity.proto\x1a\x1b\x66\x65\x61st/core/DataSource.proto\x1a\x1c\x66\x65\x61st/core/FeatureView.proto\x1a\"feast/core/StreamFeatureView.proto\x1a$feast/core/OnDemandFeatureView.proto\x1a\x1f\x66\x65\x61st/core/FeatureService.proto\x1a\x1d\x66\x65\x61st/core/SavedDataset.proto\x1a\"feast/core/ValidationProfile.proto\x1a\x1c\x66\x65\x61st/core/InfraObject.proto\x1a\x1b\x66\x65\x61st/core/Permission.proto\x1a\x18\x66\x65\x61st/core/Project.proto\"!\n\x0eRefreshRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\"W\n\x12UpdateInfraRequest\x12 \n\x05infra\x18\x01 \x01(\x0b\x32\x11.feast.core.Infra\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\"7\n\x0fGetInfraRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x02 \x01(\x08\"B\n\x1aListProjectMetadataRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x02 \x01(\x08\"T\n\x1bListProjectMetadataResponse\x12\x35\n\x10project_metadata\x18\x01 \x03(\x0b\x32\x1b.feast.core.ProjectMetadata\"\xcb\x01\n\x1b\x41pplyMaterializationRequest\x12-\n\x0c\x66\x65\x61ture_view\x18\x01 \x01(\x0b\x32\x17.feast.core.FeatureView\x12\x0f\n\x07project\x18\x02 \x01(\t\x12.\n\nstart_date\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_date\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0e\n\x06\x63ommit\x18\x05 \x01(\x08\"Y\n\x12\x41pplyEntityRequest\x12\"\n\x06\x65ntity\x18\x01 \x01(\x0b\x32\x12.feast.core.Entity\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\"F\n\x10GetEntityRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x03 \x01(\x08\"\xa5\x01\n\x13ListEntitiesRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x02 \x01(\x08\x12;\n\x04tags\x18\x03 \x03(\x0b\x32-.feast.registry.ListEntitiesRequest.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"<\n\x14ListEntitiesResponse\x12$\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x12.feast.core.Entity\"D\n\x13\x44\x65leteEntityRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\"f\n\x16\x41pplyDataSourceRequest\x12+\n\x0b\x64\x61ta_source\x18\x01 \x01(\x0b\x32\x16.feast.core.DataSource\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\"J\n\x14GetDataSourceRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x03 \x01(\x08\"\xab\x01\n\x16ListDataSourcesRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x02 \x01(\x08\x12>\n\x04tags\x18\x03 \x03(\x0b\x32\x30.feast.registry.ListDataSourcesRequest.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"G\n\x17ListDataSourcesResponse\x12,\n\x0c\x64\x61ta_sources\x18\x01 \x03(\x0b\x32\x16.feast.core.DataSource\"H\n\x17\x44\x65leteDataSourceRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\"\x81\x02\n\x17\x41pplyFeatureViewRequest\x12/\n\x0c\x66\x65\x61ture_view\x18\x01 \x01(\x0b\x32\x17.feast.core.FeatureViewH\x00\x12\x41\n\x16on_demand_feature_view\x18\x02 \x01(\x0b\x32\x1f.feast.core.OnDemandFeatureViewH\x00\x12<\n\x13stream_feature_view\x18\x03 \x01(\x0b\x32\x1d.feast.core.StreamFeatureViewH\x00\x12\x0f\n\x07project\x18\x04 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x05 \x01(\x08\x42\x13\n\x11\x62\x61se_feature_view\"K\n\x15GetFeatureViewRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x03 \x01(\x08\"\xad\x01\n\x17ListFeatureViewsRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x02 \x01(\x08\x12?\n\x04tags\x18\x03 \x03(\x0b\x32\x31.feast.registry.ListFeatureViewsRequest.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"J\n\x18ListFeatureViewsResponse\x12.\n\rfeature_views\x18\x01 \x03(\x0b\x32\x17.feast.core.FeatureView\"I\n\x18\x44\x65leteFeatureViewRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\"\xd6\x01\n\x0e\x41nyFeatureView\x12/\n\x0c\x66\x65\x61ture_view\x18\x01 \x01(\x0b\x32\x17.feast.core.FeatureViewH\x00\x12\x41\n\x16on_demand_feature_view\x18\x02 \x01(\x0b\x32\x1f.feast.core.OnDemandFeatureViewH\x00\x12<\n\x13stream_feature_view\x18\x03 \x01(\x0b\x32\x1d.feast.core.StreamFeatureViewH\x00\x42\x12\n\x10\x61ny_feature_view\"N\n\x18GetAnyFeatureViewRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x03 \x01(\x08\"U\n\x19GetAnyFeatureViewResponse\x12\x38\n\x10\x61ny_feature_view\x18\x01 \x01(\x0b\x32\x1e.feast.registry.AnyFeatureView\"\xb3\x01\n\x1aListAllFeatureViewsRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x02 \x01(\x08\x12\x42\n\x04tags\x18\x03 \x03(\x0b\x32\x34.feast.registry.ListAllFeatureViewsRequest.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"T\n\x1bListAllFeatureViewsResponse\x12\x35\n\rfeature_views\x18\x01 \x03(\x0b\x32\x1e.feast.registry.AnyFeatureView\"Q\n\x1bGetStreamFeatureViewRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x03 \x01(\x08\"\xb9\x01\n\x1dListStreamFeatureViewsRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x02 \x01(\x08\x12\x45\n\x04tags\x18\x03 \x03(\x0b\x32\x37.feast.registry.ListStreamFeatureViewsRequest.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"]\n\x1eListStreamFeatureViewsResponse\x12;\n\x14stream_feature_views\x18\x01 \x03(\x0b\x32\x1d.feast.core.StreamFeatureView\"S\n\x1dGetOnDemandFeatureViewRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x03 \x01(\x08\"\xbd\x01\n\x1fListOnDemandFeatureViewsRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x02 \x01(\x08\x12G\n\x04tags\x18\x03 \x03(\x0b\x32\x39.feast.registry.ListOnDemandFeatureViewsRequest.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"d\n ListOnDemandFeatureViewsResponse\x12@\n\x17on_demand_feature_views\x18\x01 \x03(\x0b\x32\x1f.feast.core.OnDemandFeatureView\"r\n\x1a\x41pplyFeatureServiceRequest\x12\x33\n\x0f\x66\x65\x61ture_service\x18\x01 \x01(\x0b\x32\x1a.feast.core.FeatureService\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\"N\n\x18GetFeatureServiceRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x03 \x01(\x08\"\xb3\x01\n\x1aListFeatureServicesRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x02 \x01(\x08\x12\x42\n\x04tags\x18\x03 \x03(\x0b\x32\x34.feast.registry.ListFeatureServicesRequest.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"S\n\x1bListFeatureServicesResponse\x12\x34\n\x10\x66\x65\x61ture_services\x18\x01 \x03(\x0b\x32\x1a.feast.core.FeatureService\"L\n\x1b\x44\x65leteFeatureServiceRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\"l\n\x18\x41pplySavedDatasetRequest\x12/\n\rsaved_dataset\x18\x01 \x01(\x0b\x32\x18.feast.core.SavedDataset\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\"L\n\x16GetSavedDatasetRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x03 \x01(\x08\"\xaf\x01\n\x18ListSavedDatasetsRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x02 \x01(\x08\x12@\n\x04tags\x18\x03 \x03(\x0b\x32\x32.feast.registry.ListSavedDatasetsRequest.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"M\n\x19ListSavedDatasetsResponse\x12\x30\n\x0esaved_datasets\x18\x01 \x03(\x0b\x32\x18.feast.core.SavedDataset\"J\n\x19\x44\x65leteSavedDatasetRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\"\x81\x01\n\x1f\x41pplyValidationReferenceRequest\x12=\n\x14validation_reference\x18\x01 \x01(\x0b\x32\x1f.feast.core.ValidationReference\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\"S\n\x1dGetValidationReferenceRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x03 \x01(\x08\"\xbd\x01\n\x1fListValidationReferencesRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x02 \x01(\x08\x12G\n\x04tags\x18\x03 \x03(\x0b\x32\x39.feast.registry.ListValidationReferencesRequest.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"b\n ListValidationReferencesResponse\x12>\n\x15validation_references\x18\x01 \x03(\x0b\x32\x1f.feast.core.ValidationReference\"Q\n DeleteValidationReferenceRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\"e\n\x16\x41pplyPermissionRequest\x12*\n\npermission\x18\x01 \x01(\x0b\x32\x16.feast.core.Permission\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\"J\n\x14GetPermissionRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x03 \x01(\x08\"\xab\x01\n\x16ListPermissionsRequest\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x02 \x01(\x08\x12>\n\x04tags\x18\x03 \x03(\x0b\x32\x30.feast.registry.ListPermissionsRequest.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"F\n\x17ListPermissionsResponse\x12+\n\x0bpermissions\x18\x01 \x03(\x0b\x32\x16.feast.core.Permission\"H\n\x17\x44\x65letePermissionRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x03 \x01(\x08\"K\n\x13\x41pplyProjectRequest\x12$\n\x07project\x18\x01 \x01(\x0b\x32\x13.feast.core.Project\x12\x0e\n\x06\x63ommit\x18\x02 \x01(\x08\"6\n\x11GetProjectRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x61llow_cache\x18\x02 \x01(\x08\"\x94\x01\n\x13ListProjectsRequest\x12\x13\n\x0b\x61llow_cache\x18\x01 \x01(\x08\x12;\n\x04tags\x18\x02 \x03(\x0b\x32-.feast.registry.ListProjectsRequest.TagsEntry\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"=\n\x14ListProjectsResponse\x12%\n\x08projects\x18\x01 \x03(\x0b\x32\x13.feast.core.Project\"4\n\x14\x44\x65leteProjectRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x02 \x01(\x08\x32\xcb \n\x0eRegistryServer\x12K\n\x0b\x41pplyEntity\x12\".feast.registry.ApplyEntityRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x43\n\tGetEntity\x12 .feast.registry.GetEntityRequest\x1a\x12.feast.core.Entity\"\x00\x12[\n\x0cListEntities\x12#.feast.registry.ListEntitiesRequest\x1a$.feast.registry.ListEntitiesResponse\"\x00\x12M\n\x0c\x44\x65leteEntity\x12#.feast.registry.DeleteEntityRequest\x1a\x16.google.protobuf.Empty\"\x00\x12S\n\x0f\x41pplyDataSource\x12&.feast.registry.ApplyDataSourceRequest\x1a\x16.google.protobuf.Empty\"\x00\x12O\n\rGetDataSource\x12$.feast.registry.GetDataSourceRequest\x1a\x16.feast.core.DataSource\"\x00\x12\x64\n\x0fListDataSources\x12&.feast.registry.ListDataSourcesRequest\x1a\'.feast.registry.ListDataSourcesResponse\"\x00\x12U\n\x10\x44\x65leteDataSource\x12\'.feast.registry.DeleteDataSourceRequest\x1a\x16.google.protobuf.Empty\"\x00\x12U\n\x10\x41pplyFeatureView\x12\'.feast.registry.ApplyFeatureViewRequest\x1a\x16.google.protobuf.Empty\"\x00\x12W\n\x11\x44\x65leteFeatureView\x12(.feast.registry.DeleteFeatureViewRequest\x1a\x16.google.protobuf.Empty\"\x00\x12j\n\x11GetAnyFeatureView\x12(.feast.registry.GetAnyFeatureViewRequest\x1a).feast.registry.GetAnyFeatureViewResponse\"\x00\x12p\n\x13ListAllFeatureViews\x12*.feast.registry.ListAllFeatureViewsRequest\x1a+.feast.registry.ListAllFeatureViewsResponse\"\x00\x12R\n\x0eGetFeatureView\x12%.feast.registry.GetFeatureViewRequest\x1a\x17.feast.core.FeatureView\"\x00\x12g\n\x10ListFeatureViews\x12\'.feast.registry.ListFeatureViewsRequest\x1a(.feast.registry.ListFeatureViewsResponse\"\x00\x12\x64\n\x14GetStreamFeatureView\x12+.feast.registry.GetStreamFeatureViewRequest\x1a\x1d.feast.core.StreamFeatureView\"\x00\x12y\n\x16ListStreamFeatureViews\x12-.feast.registry.ListStreamFeatureViewsRequest\x1a..feast.registry.ListStreamFeatureViewsResponse\"\x00\x12j\n\x16GetOnDemandFeatureView\x12-.feast.registry.GetOnDemandFeatureViewRequest\x1a\x1f.feast.core.OnDemandFeatureView\"\x00\x12\x7f\n\x18ListOnDemandFeatureViews\x12/.feast.registry.ListOnDemandFeatureViewsRequest\x1a\x30.feast.registry.ListOnDemandFeatureViewsResponse\"\x00\x12[\n\x13\x41pplyFeatureService\x12*.feast.registry.ApplyFeatureServiceRequest\x1a\x16.google.protobuf.Empty\"\x00\x12[\n\x11GetFeatureService\x12(.feast.registry.GetFeatureServiceRequest\x1a\x1a.feast.core.FeatureService\"\x00\x12p\n\x13ListFeatureServices\x12*.feast.registry.ListFeatureServicesRequest\x1a+.feast.registry.ListFeatureServicesResponse\"\x00\x12]\n\x14\x44\x65leteFeatureService\x12+.feast.registry.DeleteFeatureServiceRequest\x1a\x16.google.protobuf.Empty\"\x00\x12W\n\x11\x41pplySavedDataset\x12(.feast.registry.ApplySavedDatasetRequest\x1a\x16.google.protobuf.Empty\"\x00\x12U\n\x0fGetSavedDataset\x12&.feast.registry.GetSavedDatasetRequest\x1a\x18.feast.core.SavedDataset\"\x00\x12j\n\x11ListSavedDatasets\x12(.feast.registry.ListSavedDatasetsRequest\x1a).feast.registry.ListSavedDatasetsResponse\"\x00\x12Y\n\x12\x44\x65leteSavedDataset\x12).feast.registry.DeleteSavedDatasetRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x65\n\x18\x41pplyValidationReference\x12/.feast.registry.ApplyValidationReferenceRequest\x1a\x16.google.protobuf.Empty\"\x00\x12j\n\x16GetValidationReference\x12-.feast.registry.GetValidationReferenceRequest\x1a\x1f.feast.core.ValidationReference\"\x00\x12\x7f\n\x18ListValidationReferences\x12/.feast.registry.ListValidationReferencesRequest\x1a\x30.feast.registry.ListValidationReferencesResponse\"\x00\x12g\n\x19\x44\x65leteValidationReference\x12\x30.feast.registry.DeleteValidationReferenceRequest\x1a\x16.google.protobuf.Empty\"\x00\x12S\n\x0f\x41pplyPermission\x12&.feast.registry.ApplyPermissionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12O\n\rGetPermission\x12$.feast.registry.GetPermissionRequest\x1a\x16.feast.core.Permission\"\x00\x12\x64\n\x0fListPermissions\x12&.feast.registry.ListPermissionsRequest\x1a\'.feast.registry.ListPermissionsResponse\"\x00\x12U\n\x10\x44\x65letePermission\x12\'.feast.registry.DeletePermissionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12M\n\x0c\x41pplyProject\x12#.feast.registry.ApplyProjectRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\nGetProject\x12!.feast.registry.GetProjectRequest\x1a\x13.feast.core.Project\"\x00\x12[\n\x0cListProjects\x12#.feast.registry.ListProjectsRequest\x1a$.feast.registry.ListProjectsResponse\"\x00\x12O\n\rDeleteProject\x12$.feast.registry.DeleteProjectRequest\x1a\x16.google.protobuf.Empty\"\x00\x12]\n\x14\x41pplyMaterialization\x12+.feast.registry.ApplyMaterializationRequest\x1a\x16.google.protobuf.Empty\"\x00\x12p\n\x13ListProjectMetadata\x12*.feast.registry.ListProjectMetadataRequest\x1a+.feast.registry.ListProjectMetadataResponse\"\x00\x12K\n\x0bUpdateInfra\x12\".feast.registry.UpdateInfraRequest\x1a\x16.google.protobuf.Empty\"\x00\x12@\n\x08GetInfra\x12\x1f.feast.registry.GetInfraRequest\x1a\x11.feast.core.Infra\"\x00\x12:\n\x06\x43ommit\x12\x16.google.protobuf.Empty\x1a\x16.google.protobuf.Empty\"\x00\x12\x43\n\x07Refresh\x12\x1e.feast.registry.RefreshRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x37\n\x05Proto\x12\x16.google.protobuf.Empty\x1a\x14.feast.core.Registry\"\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.registry.RegistryServer_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals['_LISTENTITIESREQUEST_TAGSENTRY']._options = None + _globals['_LISTENTITIESREQUEST_TAGSENTRY']._serialized_options = b'8\001' + _globals['_LISTDATASOURCESREQUEST_TAGSENTRY']._options = None + _globals['_LISTDATASOURCESREQUEST_TAGSENTRY']._serialized_options = b'8\001' + _globals['_LISTFEATUREVIEWSREQUEST_TAGSENTRY']._options = None + _globals['_LISTFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_options = b'8\001' + _globals['_LISTALLFEATUREVIEWSREQUEST_TAGSENTRY']._options = None + _globals['_LISTALLFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_options = b'8\001' + _globals['_LISTSTREAMFEATUREVIEWSREQUEST_TAGSENTRY']._options = None + _globals['_LISTSTREAMFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_options = b'8\001' + _globals['_LISTONDEMANDFEATUREVIEWSREQUEST_TAGSENTRY']._options = None + _globals['_LISTONDEMANDFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_options = b'8\001' + _globals['_LISTFEATURESERVICESREQUEST_TAGSENTRY']._options = None + _globals['_LISTFEATURESERVICESREQUEST_TAGSENTRY']._serialized_options = b'8\001' + _globals['_LISTSAVEDDATASETSREQUEST_TAGSENTRY']._options = None + _globals['_LISTSAVEDDATASETSREQUEST_TAGSENTRY']._serialized_options = b'8\001' + _globals['_LISTVALIDATIONREFERENCESREQUEST_TAGSENTRY']._options = None + _globals['_LISTVALIDATIONREFERENCESREQUEST_TAGSENTRY']._serialized_options = b'8\001' + _globals['_LISTPERMISSIONSREQUEST_TAGSENTRY']._options = None + _globals['_LISTPERMISSIONSREQUEST_TAGSENTRY']._serialized_options = b'8\001' + _globals['_LISTPROJECTSREQUEST_TAGSENTRY']._options = None + _globals['_LISTPROJECTSREQUEST_TAGSENTRY']._serialized_options = b'8\001' + _globals['_REFRESHREQUEST']._serialized_start=487 + _globals['_REFRESHREQUEST']._serialized_end=520 + _globals['_UPDATEINFRAREQUEST']._serialized_start=522 + _globals['_UPDATEINFRAREQUEST']._serialized_end=609 + _globals['_GETINFRAREQUEST']._serialized_start=611 + _globals['_GETINFRAREQUEST']._serialized_end=666 + _globals['_LISTPROJECTMETADATAREQUEST']._serialized_start=668 + _globals['_LISTPROJECTMETADATAREQUEST']._serialized_end=734 + _globals['_LISTPROJECTMETADATARESPONSE']._serialized_start=736 + _globals['_LISTPROJECTMETADATARESPONSE']._serialized_end=820 + _globals['_APPLYMATERIALIZATIONREQUEST']._serialized_start=823 + _globals['_APPLYMATERIALIZATIONREQUEST']._serialized_end=1026 + _globals['_APPLYENTITYREQUEST']._serialized_start=1028 + _globals['_APPLYENTITYREQUEST']._serialized_end=1117 + _globals['_GETENTITYREQUEST']._serialized_start=1119 + _globals['_GETENTITYREQUEST']._serialized_end=1189 + _globals['_LISTENTITIESREQUEST']._serialized_start=1192 + _globals['_LISTENTITIESREQUEST']._serialized_end=1357 + _globals['_LISTENTITIESREQUEST_TAGSENTRY']._serialized_start=1314 + _globals['_LISTENTITIESREQUEST_TAGSENTRY']._serialized_end=1357 + _globals['_LISTENTITIESRESPONSE']._serialized_start=1359 + _globals['_LISTENTITIESRESPONSE']._serialized_end=1419 + _globals['_DELETEENTITYREQUEST']._serialized_start=1421 + _globals['_DELETEENTITYREQUEST']._serialized_end=1489 + _globals['_APPLYDATASOURCEREQUEST']._serialized_start=1491 + _globals['_APPLYDATASOURCEREQUEST']._serialized_end=1593 + _globals['_GETDATASOURCEREQUEST']._serialized_start=1595 + _globals['_GETDATASOURCEREQUEST']._serialized_end=1669 + _globals['_LISTDATASOURCESREQUEST']._serialized_start=1672 + _globals['_LISTDATASOURCESREQUEST']._serialized_end=1843 + _globals['_LISTDATASOURCESREQUEST_TAGSENTRY']._serialized_start=1314 + _globals['_LISTDATASOURCESREQUEST_TAGSENTRY']._serialized_end=1357 + _globals['_LISTDATASOURCESRESPONSE']._serialized_start=1845 + _globals['_LISTDATASOURCESRESPONSE']._serialized_end=1916 + _globals['_DELETEDATASOURCEREQUEST']._serialized_start=1918 + _globals['_DELETEDATASOURCEREQUEST']._serialized_end=1990 + _globals['_APPLYFEATUREVIEWREQUEST']._serialized_start=1993 + _globals['_APPLYFEATUREVIEWREQUEST']._serialized_end=2250 + _globals['_GETFEATUREVIEWREQUEST']._serialized_start=2252 + _globals['_GETFEATUREVIEWREQUEST']._serialized_end=2327 + _globals['_LISTFEATUREVIEWSREQUEST']._serialized_start=2330 + _globals['_LISTFEATUREVIEWSREQUEST']._serialized_end=2503 + _globals['_LISTFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_start=1314 + _globals['_LISTFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_end=1357 + _globals['_LISTFEATUREVIEWSRESPONSE']._serialized_start=2505 + _globals['_LISTFEATUREVIEWSRESPONSE']._serialized_end=2579 + _globals['_DELETEFEATUREVIEWREQUEST']._serialized_start=2581 + _globals['_DELETEFEATUREVIEWREQUEST']._serialized_end=2654 + _globals['_ANYFEATUREVIEW']._serialized_start=2657 + _globals['_ANYFEATUREVIEW']._serialized_end=2871 + _globals['_GETANYFEATUREVIEWREQUEST']._serialized_start=2873 + _globals['_GETANYFEATUREVIEWREQUEST']._serialized_end=2951 + _globals['_GETANYFEATUREVIEWRESPONSE']._serialized_start=2953 + _globals['_GETANYFEATUREVIEWRESPONSE']._serialized_end=3038 + _globals['_LISTALLFEATUREVIEWSREQUEST']._serialized_start=3041 + _globals['_LISTALLFEATUREVIEWSREQUEST']._serialized_end=3220 + _globals['_LISTALLFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_start=1314 + _globals['_LISTALLFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_end=1357 + _globals['_LISTALLFEATUREVIEWSRESPONSE']._serialized_start=3222 + _globals['_LISTALLFEATUREVIEWSRESPONSE']._serialized_end=3306 + _globals['_GETSTREAMFEATUREVIEWREQUEST']._serialized_start=3308 + _globals['_GETSTREAMFEATUREVIEWREQUEST']._serialized_end=3389 + _globals['_LISTSTREAMFEATUREVIEWSREQUEST']._serialized_start=3392 + _globals['_LISTSTREAMFEATUREVIEWSREQUEST']._serialized_end=3577 + _globals['_LISTSTREAMFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_start=1314 + _globals['_LISTSTREAMFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_end=1357 + _globals['_LISTSTREAMFEATUREVIEWSRESPONSE']._serialized_start=3579 + _globals['_LISTSTREAMFEATUREVIEWSRESPONSE']._serialized_end=3672 + _globals['_GETONDEMANDFEATUREVIEWREQUEST']._serialized_start=3674 + _globals['_GETONDEMANDFEATUREVIEWREQUEST']._serialized_end=3757 + _globals['_LISTONDEMANDFEATUREVIEWSREQUEST']._serialized_start=3760 + _globals['_LISTONDEMANDFEATUREVIEWSREQUEST']._serialized_end=3949 + _globals['_LISTONDEMANDFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_start=1314 + _globals['_LISTONDEMANDFEATUREVIEWSREQUEST_TAGSENTRY']._serialized_end=1357 + _globals['_LISTONDEMANDFEATUREVIEWSRESPONSE']._serialized_start=3951 + _globals['_LISTONDEMANDFEATUREVIEWSRESPONSE']._serialized_end=4051 + _globals['_APPLYFEATURESERVICEREQUEST']._serialized_start=4053 + _globals['_APPLYFEATURESERVICEREQUEST']._serialized_end=4167 + _globals['_GETFEATURESERVICEREQUEST']._serialized_start=4169 + _globals['_GETFEATURESERVICEREQUEST']._serialized_end=4247 + _globals['_LISTFEATURESERVICESREQUEST']._serialized_start=4250 + _globals['_LISTFEATURESERVICESREQUEST']._serialized_end=4429 + _globals['_LISTFEATURESERVICESREQUEST_TAGSENTRY']._serialized_start=1314 + _globals['_LISTFEATURESERVICESREQUEST_TAGSENTRY']._serialized_end=1357 + _globals['_LISTFEATURESERVICESRESPONSE']._serialized_start=4431 + _globals['_LISTFEATURESERVICESRESPONSE']._serialized_end=4514 + _globals['_DELETEFEATURESERVICEREQUEST']._serialized_start=4516 + _globals['_DELETEFEATURESERVICEREQUEST']._serialized_end=4592 + _globals['_APPLYSAVEDDATASETREQUEST']._serialized_start=4594 + _globals['_APPLYSAVEDDATASETREQUEST']._serialized_end=4702 + _globals['_GETSAVEDDATASETREQUEST']._serialized_start=4704 + _globals['_GETSAVEDDATASETREQUEST']._serialized_end=4780 + _globals['_LISTSAVEDDATASETSREQUEST']._serialized_start=4783 + _globals['_LISTSAVEDDATASETSREQUEST']._serialized_end=4958 + _globals['_LISTSAVEDDATASETSREQUEST_TAGSENTRY']._serialized_start=1314 + _globals['_LISTSAVEDDATASETSREQUEST_TAGSENTRY']._serialized_end=1357 + _globals['_LISTSAVEDDATASETSRESPONSE']._serialized_start=4960 + _globals['_LISTSAVEDDATASETSRESPONSE']._serialized_end=5037 + _globals['_DELETESAVEDDATASETREQUEST']._serialized_start=5039 + _globals['_DELETESAVEDDATASETREQUEST']._serialized_end=5113 + _globals['_APPLYVALIDATIONREFERENCEREQUEST']._serialized_start=5116 + _globals['_APPLYVALIDATIONREFERENCEREQUEST']._serialized_end=5245 + _globals['_GETVALIDATIONREFERENCEREQUEST']._serialized_start=5247 + _globals['_GETVALIDATIONREFERENCEREQUEST']._serialized_end=5330 + _globals['_LISTVALIDATIONREFERENCESREQUEST']._serialized_start=5333 + _globals['_LISTVALIDATIONREFERENCESREQUEST']._serialized_end=5522 + _globals['_LISTVALIDATIONREFERENCESREQUEST_TAGSENTRY']._serialized_start=1314 + _globals['_LISTVALIDATIONREFERENCESREQUEST_TAGSENTRY']._serialized_end=1357 + _globals['_LISTVALIDATIONREFERENCESRESPONSE']._serialized_start=5524 + _globals['_LISTVALIDATIONREFERENCESRESPONSE']._serialized_end=5622 + _globals['_DELETEVALIDATIONREFERENCEREQUEST']._serialized_start=5624 + _globals['_DELETEVALIDATIONREFERENCEREQUEST']._serialized_end=5705 + _globals['_APPLYPERMISSIONREQUEST']._serialized_start=5707 + _globals['_APPLYPERMISSIONREQUEST']._serialized_end=5808 + _globals['_GETPERMISSIONREQUEST']._serialized_start=5810 + _globals['_GETPERMISSIONREQUEST']._serialized_end=5884 + _globals['_LISTPERMISSIONSREQUEST']._serialized_start=5887 + _globals['_LISTPERMISSIONSREQUEST']._serialized_end=6058 + _globals['_LISTPERMISSIONSREQUEST_TAGSENTRY']._serialized_start=1314 + _globals['_LISTPERMISSIONSREQUEST_TAGSENTRY']._serialized_end=1357 + _globals['_LISTPERMISSIONSRESPONSE']._serialized_start=6060 + _globals['_LISTPERMISSIONSRESPONSE']._serialized_end=6130 + _globals['_DELETEPERMISSIONREQUEST']._serialized_start=6132 + _globals['_DELETEPERMISSIONREQUEST']._serialized_end=6204 + _globals['_APPLYPROJECTREQUEST']._serialized_start=6206 + _globals['_APPLYPROJECTREQUEST']._serialized_end=6281 + _globals['_GETPROJECTREQUEST']._serialized_start=6283 + _globals['_GETPROJECTREQUEST']._serialized_end=6337 + _globals['_LISTPROJECTSREQUEST']._serialized_start=6340 + _globals['_LISTPROJECTSREQUEST']._serialized_end=6488 + _globals['_LISTPROJECTSREQUEST_TAGSENTRY']._serialized_start=1314 + _globals['_LISTPROJECTSREQUEST_TAGSENTRY']._serialized_end=1357 + _globals['_LISTPROJECTSRESPONSE']._serialized_start=6490 + _globals['_LISTPROJECTSRESPONSE']._serialized_end=6551 + _globals['_DELETEPROJECTREQUEST']._serialized_start=6553 + _globals['_DELETEPROJECTREQUEST']._serialized_end=6605 + _globals['_REGISTRYSERVER']._serialized_start=6608 + _globals['_REGISTRYSERVER']._serialized_end=10779 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/registry/RegistryServer_pb2.pyi b/sdk/python/feast/protos/feast/registry/RegistryServer_pb2.pyi new file mode 100644 index 00000000000..f4507c02e26 --- /dev/null +++ b/sdk/python/feast/protos/feast/registry/RegistryServer_pb2.pyi @@ -0,0 +1,1318 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import collections.abc +import feast.core.DataSource_pb2 +import feast.core.Entity_pb2 +import feast.core.FeatureService_pb2 +import feast.core.FeatureView_pb2 +import feast.core.InfraObject_pb2 +import feast.core.OnDemandFeatureView_pb2 +import feast.core.Permission_pb2 +import feast.core.Project_pb2 +import feast.core.Registry_pb2 +import feast.core.SavedDataset_pb2 +import feast.core.StreamFeatureView_pb2 +import feast.core.ValidationProfile_pb2 +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class RefreshRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PROJECT_FIELD_NUMBER: builtins.int + project: builtins.str + def __init__( + self, + *, + project: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["project", b"project"]) -> None: ... + +global___RefreshRequest = RefreshRequest + +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 + def __init__( + self, + *, + infra: feast.core.InfraObject_pb2.Infra | None = ..., + 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: ... + +global___UpdateInfraRequest = UpdateInfraRequest + +class GetInfraRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + project: builtins.str + allow_cache: builtins.bool + def __init__( + self, + *, + 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: ... + +global___GetInfraRequest = GetInfraRequest + +class ListProjectMetadataRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + project: builtins.str + allow_cache: builtins.bool + def __init__( + self, + *, + 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: ... + +global___ListProjectMetadataRequest = ListProjectMetadataRequest + +class ListProjectMetadataResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PROJECT_METADATA_FIELD_NUMBER: builtins.int + @property + def project_metadata(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Registry_pb2.ProjectMetadata]: ... + def __init__( + self, + *, + 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: ... + +global___ListProjectMetadataResponse = ListProjectMetadataResponse + +class ApplyMaterializationRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FEATURE_VIEW_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + START_DATE_FIELD_NUMBER: builtins.int + END_DATE_FIELD_NUMBER: builtins.int + COMMIT_FIELD_NUMBER: builtins.int + @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, + *, + feature_view: feast.core.FeatureView_pb2.FeatureView | None = ..., + project: builtins.str = ..., + start_date: google.protobuf.timestamp_pb2.Timestamp | None = ..., + 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: ... + +global___ApplyMaterializationRequest = ApplyMaterializationRequest + +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 + def __init__( + self, + *, + entity: feast.core.Entity_pb2.Entity | None = ..., + 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: ... + +global___ApplyEntityRequest = ApplyEntityRequest + +class GetEntityRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + allow_cache: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___GetEntityRequest = GetEntityRequest + +class ListEntitiesRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + project: builtins.str + allow_cache: builtins.bool + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + project: builtins.str = ..., + allow_cache: builtins.bool = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "project", b"project", "tags", b"tags"]) -> None: ... + +global___ListEntitiesRequest = ListEntitiesRequest + +class ListEntitiesResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ENTITIES_FIELD_NUMBER: builtins.int + @property + def entities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Entity_pb2.Entity]: ... + def __init__( + self, + *, + entities: collections.abc.Iterable[feast.core.Entity_pb2.Entity] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["entities", b"entities"]) -> None: ... + +global___ListEntitiesResponse = ListEntitiesResponse + +class DeleteEntityRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + COMMIT_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + commit: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___DeleteEntityRequest = DeleteEntityRequest + +class ApplyDataSourceRequest(google.protobuf.message.Message): + """DataSources""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + 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 + def __init__( + self, + *, + data_source: feast.core.DataSource_pb2.DataSource | None = ..., + 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: ... + +global___ApplyDataSourceRequest = ApplyDataSourceRequest + +class GetDataSourceRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + allow_cache: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___GetDataSourceRequest = GetDataSourceRequest + +class ListDataSourcesRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + project: builtins.str + allow_cache: builtins.bool + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + project: builtins.str = ..., + allow_cache: builtins.bool = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "project", b"project", "tags", b"tags"]) -> None: ... + +global___ListDataSourcesRequest = ListDataSourcesRequest + +class ListDataSourcesResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DATA_SOURCES_FIELD_NUMBER: builtins.int + @property + def data_sources(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.DataSource_pb2.DataSource]: ... + def __init__( + self, + *, + data_sources: collections.abc.Iterable[feast.core.DataSource_pb2.DataSource] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["data_sources", b"data_sources"]) -> None: ... + +global___ListDataSourcesResponse = ListDataSourcesResponse + +class DeleteDataSourceRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + COMMIT_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + commit: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___DeleteDataSourceRequest = DeleteDataSourceRequest + +class ApplyFeatureViewRequest(google.protobuf.message.Message): + """FeatureViews""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FEATURE_VIEW_FIELD_NUMBER: builtins.int + ON_DEMAND_FEATURE_VIEW_FIELD_NUMBER: builtins.int + STREAM_FEATURE_VIEW_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + COMMIT_FIELD_NUMBER: builtins.int + @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, + *, + feature_view: feast.core.FeatureView_pb2.FeatureView | None = ..., + on_demand_feature_view: feast.core.OnDemandFeatureView_pb2.OnDemandFeatureView | None = ..., + stream_feature_view: feast.core.StreamFeatureView_pb2.StreamFeatureView | None = ..., + 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: ... + +global___ApplyFeatureViewRequest = ApplyFeatureViewRequest + +class GetFeatureViewRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + allow_cache: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___GetFeatureViewRequest = GetFeatureViewRequest + +class ListFeatureViewsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + project: builtins.str + allow_cache: builtins.bool + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + project: builtins.str = ..., + allow_cache: builtins.bool = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "project", b"project", "tags", b"tags"]) -> None: ... + +global___ListFeatureViewsRequest = ListFeatureViewsRequest + +class ListFeatureViewsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FEATURE_VIEWS_FIELD_NUMBER: builtins.int + @property + def feature_views(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.FeatureView_pb2.FeatureView]: ... + def __init__( + self, + *, + feature_views: collections.abc.Iterable[feast.core.FeatureView_pb2.FeatureView] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["feature_views", b"feature_views"]) -> None: ... + +global___ListFeatureViewsResponse = ListFeatureViewsResponse + +class DeleteFeatureViewRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + COMMIT_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + commit: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___DeleteFeatureViewRequest = DeleteFeatureViewRequest + +class AnyFeatureView(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FEATURE_VIEW_FIELD_NUMBER: builtins.int + ON_DEMAND_FEATURE_VIEW_FIELD_NUMBER: builtins.int + STREAM_FEATURE_VIEW_FIELD_NUMBER: builtins.int + @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: ... + def __init__( + self, + *, + feature_view: feast.core.FeatureView_pb2.FeatureView | None = ..., + 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: ... + +global___AnyFeatureView = AnyFeatureView + +class GetAnyFeatureViewRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + allow_cache: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___GetAnyFeatureViewRequest = GetAnyFeatureViewRequest + +class GetAnyFeatureViewResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ANY_FEATURE_VIEW_FIELD_NUMBER: builtins.int + @property + def any_feature_view(self) -> global___AnyFeatureView: ... + def __init__( + self, + *, + 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: ... + +global___GetAnyFeatureViewResponse = GetAnyFeatureViewResponse + +class ListAllFeatureViewsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + project: builtins.str + allow_cache: builtins.bool + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + project: builtins.str = ..., + allow_cache: builtins.bool = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "project", b"project", "tags", b"tags"]) -> None: ... + +global___ListAllFeatureViewsRequest = ListAllFeatureViewsRequest + +class ListAllFeatureViewsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FEATURE_VIEWS_FIELD_NUMBER: builtins.int + @property + def feature_views(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___AnyFeatureView]: ... + def __init__( + self, + *, + feature_views: collections.abc.Iterable[global___AnyFeatureView] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["feature_views", b"feature_views"]) -> None: ... + +global___ListAllFeatureViewsResponse = ListAllFeatureViewsResponse + +class GetStreamFeatureViewRequest(google.protobuf.message.Message): + """StreamFeatureView""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + allow_cache: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___GetStreamFeatureViewRequest = GetStreamFeatureViewRequest + +class ListStreamFeatureViewsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + project: builtins.str + allow_cache: builtins.bool + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + project: builtins.str = ..., + allow_cache: builtins.bool = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "project", b"project", "tags", b"tags"]) -> None: ... + +global___ListStreamFeatureViewsRequest = ListStreamFeatureViewsRequest + +class ListStreamFeatureViewsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STREAM_FEATURE_VIEWS_FIELD_NUMBER: builtins.int + @property + def stream_feature_views(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.StreamFeatureView_pb2.StreamFeatureView]: ... + def __init__( + self, + *, + stream_feature_views: collections.abc.Iterable[feast.core.StreamFeatureView_pb2.StreamFeatureView] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["stream_feature_views", b"stream_feature_views"]) -> None: ... + +global___ListStreamFeatureViewsResponse = ListStreamFeatureViewsResponse + +class GetOnDemandFeatureViewRequest(google.protobuf.message.Message): + """OnDemandFeatureView""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + allow_cache: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___GetOnDemandFeatureViewRequest = GetOnDemandFeatureViewRequest + +class ListOnDemandFeatureViewsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + project: builtins.str + allow_cache: builtins.bool + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + project: builtins.str = ..., + allow_cache: builtins.bool = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "project", b"project", "tags", b"tags"]) -> None: ... + +global___ListOnDemandFeatureViewsRequest = ListOnDemandFeatureViewsRequest + +class ListOnDemandFeatureViewsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ON_DEMAND_FEATURE_VIEWS_FIELD_NUMBER: builtins.int + @property + def on_demand_feature_views(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.OnDemandFeatureView_pb2.OnDemandFeatureView]: ... + def __init__( + self, + *, + on_demand_feature_views: collections.abc.Iterable[feast.core.OnDemandFeatureView_pb2.OnDemandFeatureView] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["on_demand_feature_views", b"on_demand_feature_views"]) -> None: ... + +global___ListOnDemandFeatureViewsResponse = ListOnDemandFeatureViewsResponse + +class ApplyFeatureServiceRequest(google.protobuf.message.Message): + """FeatureServices""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + 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 + def __init__( + self, + *, + feature_service: feast.core.FeatureService_pb2.FeatureService | None = ..., + 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: ... + +global___ApplyFeatureServiceRequest = ApplyFeatureServiceRequest + +class GetFeatureServiceRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + allow_cache: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___GetFeatureServiceRequest = GetFeatureServiceRequest + +class ListFeatureServicesRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + project: builtins.str + allow_cache: builtins.bool + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + project: builtins.str = ..., + allow_cache: builtins.bool = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "project", b"project", "tags", b"tags"]) -> None: ... + +global___ListFeatureServicesRequest = ListFeatureServicesRequest + +class ListFeatureServicesResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FEATURE_SERVICES_FIELD_NUMBER: builtins.int + @property + def feature_services(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.FeatureService_pb2.FeatureService]: ... + def __init__( + self, + *, + feature_services: collections.abc.Iterable[feast.core.FeatureService_pb2.FeatureService] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["feature_services", b"feature_services"]) -> None: ... + +global___ListFeatureServicesResponse = ListFeatureServicesResponse + +class DeleteFeatureServiceRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + COMMIT_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + commit: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___DeleteFeatureServiceRequest = DeleteFeatureServiceRequest + +class ApplySavedDatasetRequest(google.protobuf.message.Message): + """SavedDataset""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + 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 + def __init__( + self, + *, + saved_dataset: feast.core.SavedDataset_pb2.SavedDataset | None = ..., + 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: ... + +global___ApplySavedDatasetRequest = ApplySavedDatasetRequest + +class GetSavedDatasetRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + allow_cache: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___GetSavedDatasetRequest = GetSavedDatasetRequest + +class ListSavedDatasetsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + project: builtins.str + allow_cache: builtins.bool + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + project: builtins.str = ..., + allow_cache: builtins.bool = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "project", b"project", "tags", b"tags"]) -> None: ... + +global___ListSavedDatasetsRequest = ListSavedDatasetsRequest + +class ListSavedDatasetsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SAVED_DATASETS_FIELD_NUMBER: builtins.int + @property + def saved_datasets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.SavedDataset_pb2.SavedDataset]: ... + def __init__( + self, + *, + saved_datasets: collections.abc.Iterable[feast.core.SavedDataset_pb2.SavedDataset] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["saved_datasets", b"saved_datasets"]) -> None: ... + +global___ListSavedDatasetsResponse = ListSavedDatasetsResponse + +class DeleteSavedDatasetRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + COMMIT_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + commit: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___DeleteSavedDatasetRequest = DeleteSavedDatasetRequest + +class ApplyValidationReferenceRequest(google.protobuf.message.Message): + """ValidationReference""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + 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 + def __init__( + self, + *, + validation_reference: feast.core.ValidationProfile_pb2.ValidationReference | None = ..., + 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: ... + +global___ApplyValidationReferenceRequest = ApplyValidationReferenceRequest + +class GetValidationReferenceRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + allow_cache: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___GetValidationReferenceRequest = GetValidationReferenceRequest + +class ListValidationReferencesRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + project: builtins.str + allow_cache: builtins.bool + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + project: builtins.str = ..., + allow_cache: builtins.bool = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "project", b"project", "tags", b"tags"]) -> None: ... + +global___ListValidationReferencesRequest = ListValidationReferencesRequest + +class ListValidationReferencesResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VALIDATION_REFERENCES_FIELD_NUMBER: builtins.int + @property + def validation_references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.ValidationProfile_pb2.ValidationReference]: ... + def __init__( + self, + *, + validation_references: collections.abc.Iterable[feast.core.ValidationProfile_pb2.ValidationReference] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["validation_references", b"validation_references"]) -> None: ... + +global___ListValidationReferencesResponse = ListValidationReferencesResponse + +class DeleteValidationReferenceRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + COMMIT_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + commit: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___DeleteValidationReferenceRequest = DeleteValidationReferenceRequest + +class ApplyPermissionRequest(google.protobuf.message.Message): + """Permissions""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + 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 + def __init__( + self, + *, + permission: feast.core.Permission_pb2.Permission | None = ..., + 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: ... + +global___ApplyPermissionRequest = ApplyPermissionRequest + +class GetPermissionRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + allow_cache: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___GetPermissionRequest = GetPermissionRequest + +class ListPermissionsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + PROJECT_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + project: builtins.str + allow_cache: builtins.bool + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + project: builtins.str = ..., + allow_cache: builtins.bool = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "project", b"project", "tags", b"tags"]) -> None: ... + +global___ListPermissionsRequest = ListPermissionsRequest + +class ListPermissionsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PERMISSIONS_FIELD_NUMBER: builtins.int + @property + def permissions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Permission_pb2.Permission]: ... + def __init__( + self, + *, + permissions: collections.abc.Iterable[feast.core.Permission_pb2.Permission] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["permissions", b"permissions"]) -> None: ... + +global___ListPermissionsResponse = ListPermissionsResponse + +class DeletePermissionRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + COMMIT_FIELD_NUMBER: builtins.int + name: builtins.str + project: builtins.str + commit: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + 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: ... + +global___DeletePermissionRequest = DeletePermissionRequest + +class ApplyProjectRequest(google.protobuf.message.Message): + """Projects""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PROJECT_FIELD_NUMBER: builtins.int + COMMIT_FIELD_NUMBER: builtins.int + @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: ... + +global___ApplyProjectRequest = ApplyProjectRequest + +class GetProjectRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + ALLOW_CACHE_FIELD_NUMBER: builtins.int + name: builtins.str + allow_cache: builtins.bool + def __init__( + self, + *, + 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: ... + +global___GetProjectRequest = GetProjectRequest + +class ListProjectsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + ALLOW_CACHE_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + allow_cache: builtins.bool + @property + def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, + *, + allow_cache: builtins.bool = ..., + tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["allow_cache", b"allow_cache", "tags", b"tags"]) -> None: ... + +global___ListProjectsRequest = ListProjectsRequest + +class ListProjectsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PROJECTS_FIELD_NUMBER: builtins.int + @property + def projects(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Project_pb2.Project]: ... + def __init__( + self, + *, + projects: collections.abc.Iterable[feast.core.Project_pb2.Project] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["projects", b"projects"]) -> None: ... + +global___ListProjectsResponse = ListProjectsResponse + +class DeleteProjectRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAME_FIELD_NUMBER: builtins.int + COMMIT_FIELD_NUMBER: builtins.int + name: builtins.str + commit: builtins.bool + def __init__( + self, + *, + name: builtins.str = ..., + commit: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "name", b"name"]) -> None: ... + +global___DeleteProjectRequest = DeleteProjectRequest diff --git a/sdk/python/feast/protos/feast/registry/RegistryServer_pb2_grpc.py b/sdk/python/feast/protos/feast/registry/RegistryServer_pb2_grpc.py new file mode 100644 index 00000000000..bab23c4394e --- /dev/null +++ b/sdk/python/feast/protos/feast/registry/RegistryServer_pb2_grpc.py @@ -0,0 +1,1542 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +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 +from feast.protos.feast.core import FeatureService_pb2 as feast_dot_core_dot_FeatureService__pb2 +from feast.protos.feast.core import FeatureView_pb2 as feast_dot_core_dot_FeatureView__pb2 +from feast.protos.feast.core import InfraObject_pb2 as feast_dot_core_dot_InfraObject__pb2 +from feast.protos.feast.core import OnDemandFeatureView_pb2 as feast_dot_core_dot_OnDemandFeatureView__pb2 +from feast.protos.feast.core import Permission_pb2 as feast_dot_core_dot_Permission__pb2 +from feast.protos.feast.core import Project_pb2 as feast_dot_core_dot_Project__pb2 +from feast.protos.feast.core import Registry_pb2 as feast_dot_core_dot_Registry__pb2 +from feast.protos.feast.core import SavedDataset_pb2 as feast_dot_core_dot_SavedDataset__pb2 +from feast.protos.feast.core import StreamFeatureView_pb2 as feast_dot_core_dot_StreamFeatureView__pb2 +from feast.protos.feast.core import ValidationProfile_pb2 as feast_dot_core_dot_ValidationProfile__pb2 +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 + + +class RegistryServerStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.ApplyEntity = channel.unary_unary( + '/feast.registry.RegistryServer/ApplyEntity', + request_serializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyEntityRequest.SerializeToString, + response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + 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, + ) + + +class RegistryServerServicer(object): + """Missing associated documentation comment in .proto file.""" + + def ApplyEntity(self, request, context): + """Entity RPCs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetEntity(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListEntities(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteEntity(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ApplyDataSource(self, request, context): + """DataSource RPCs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetDataSource(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListDataSources(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteDataSource(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ApplyFeatureView(self, request, context): + """FeatureView RPCs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteFeatureView(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetAnyFeatureView(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListAllFeatureViews(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetFeatureView(self, request, context): + """plain FeatureView RPCs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListFeatureViews(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetStreamFeatureView(self, request, context): + """StreamFeatureView RPCs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListStreamFeatureViews(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetOnDemandFeatureView(self, request, context): + """OnDemandFeatureView RPCs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListOnDemandFeatureViews(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ApplyFeatureService(self, request, context): + """FeatureService RPCs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetFeatureService(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListFeatureServices(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteFeatureService(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ApplySavedDataset(self, request, context): + """SavedDataset RPCs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetSavedDataset(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListSavedDatasets(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteSavedDataset(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ApplyValidationReference(self, request, context): + """ValidationReference RPCs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetValidationReference(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListValidationReferences(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteValidationReference(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ApplyPermission(self, request, context): + """Permission RPCs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetPermission(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListPermissions(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeletePermission(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ApplyProject(self, request, context): + """Project RPCs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetProject(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListProjects(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteProject(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ApplyMaterialization(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListProjectMetadata(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UpdateInfra(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetInfra(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def Commit(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def Refresh(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def Proto(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_RegistryServerServicer_to_server(servicer, server): + rpc_method_handlers = { + 'ApplyEntity': grpc.unary_unary_rpc_method_handler( + servicer.ApplyEntity, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyEntityRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'GetEntity': grpc.unary_unary_rpc_method_handler( + servicer.GetEntity, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetEntityRequest.FromString, + response_serializer=feast_dot_core_dot_Entity__pb2.Entity.SerializeToString, + ), + 'ListEntities': grpc.unary_unary_rpc_method_handler( + servicer.ListEntities, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListEntitiesRequest.FromString, + response_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListEntitiesResponse.SerializeToString, + ), + 'DeleteEntity': grpc.unary_unary_rpc_method_handler( + servicer.DeleteEntity, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.DeleteEntityRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'ApplyDataSource': grpc.unary_unary_rpc_method_handler( + servicer.ApplyDataSource, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyDataSourceRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'GetDataSource': grpc.unary_unary_rpc_method_handler( + servicer.GetDataSource, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetDataSourceRequest.FromString, + response_serializer=feast_dot_core_dot_DataSource__pb2.DataSource.SerializeToString, + ), + 'ListDataSources': grpc.unary_unary_rpc_method_handler( + servicer.ListDataSources, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListDataSourcesRequest.FromString, + response_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListDataSourcesResponse.SerializeToString, + ), + 'DeleteDataSource': grpc.unary_unary_rpc_method_handler( + servicer.DeleteDataSource, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.DeleteDataSourceRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'ApplyFeatureView': grpc.unary_unary_rpc_method_handler( + servicer.ApplyFeatureView, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyFeatureViewRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'DeleteFeatureView': grpc.unary_unary_rpc_method_handler( + servicer.DeleteFeatureView, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.DeleteFeatureViewRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'GetAnyFeatureView': grpc.unary_unary_rpc_method_handler( + servicer.GetAnyFeatureView, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetAnyFeatureViewRequest.FromString, + response_serializer=feast_dot_registry_dot_RegistryServer__pb2.GetAnyFeatureViewResponse.SerializeToString, + ), + 'ListAllFeatureViews': grpc.unary_unary_rpc_method_handler( + servicer.ListAllFeatureViews, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListAllFeatureViewsRequest.FromString, + response_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListAllFeatureViewsResponse.SerializeToString, + ), + 'GetFeatureView': grpc.unary_unary_rpc_method_handler( + servicer.GetFeatureView, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetFeatureViewRequest.FromString, + response_serializer=feast_dot_core_dot_FeatureView__pb2.FeatureView.SerializeToString, + ), + 'ListFeatureViews': grpc.unary_unary_rpc_method_handler( + servicer.ListFeatureViews, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListFeatureViewsRequest.FromString, + response_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListFeatureViewsResponse.SerializeToString, + ), + 'GetStreamFeatureView': grpc.unary_unary_rpc_method_handler( + servicer.GetStreamFeatureView, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetStreamFeatureViewRequest.FromString, + response_serializer=feast_dot_core_dot_StreamFeatureView__pb2.StreamFeatureView.SerializeToString, + ), + 'ListStreamFeatureViews': grpc.unary_unary_rpc_method_handler( + servicer.ListStreamFeatureViews, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListStreamFeatureViewsRequest.FromString, + response_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListStreamFeatureViewsResponse.SerializeToString, + ), + 'GetOnDemandFeatureView': grpc.unary_unary_rpc_method_handler( + servicer.GetOnDemandFeatureView, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetOnDemandFeatureViewRequest.FromString, + response_serializer=feast_dot_core_dot_OnDemandFeatureView__pb2.OnDemandFeatureView.SerializeToString, + ), + 'ListOnDemandFeatureViews': grpc.unary_unary_rpc_method_handler( + servicer.ListOnDemandFeatureViews, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListOnDemandFeatureViewsRequest.FromString, + response_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListOnDemandFeatureViewsResponse.SerializeToString, + ), + 'ApplyFeatureService': grpc.unary_unary_rpc_method_handler( + servicer.ApplyFeatureService, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyFeatureServiceRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'GetFeatureService': grpc.unary_unary_rpc_method_handler( + servicer.GetFeatureService, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetFeatureServiceRequest.FromString, + response_serializer=feast_dot_core_dot_FeatureService__pb2.FeatureService.SerializeToString, + ), + 'ListFeatureServices': grpc.unary_unary_rpc_method_handler( + servicer.ListFeatureServices, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListFeatureServicesRequest.FromString, + response_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListFeatureServicesResponse.SerializeToString, + ), + 'DeleteFeatureService': grpc.unary_unary_rpc_method_handler( + servicer.DeleteFeatureService, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.DeleteFeatureServiceRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'ApplySavedDataset': grpc.unary_unary_rpc_method_handler( + servicer.ApplySavedDataset, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ApplySavedDatasetRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'GetSavedDataset': grpc.unary_unary_rpc_method_handler( + servicer.GetSavedDataset, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetSavedDatasetRequest.FromString, + response_serializer=feast_dot_core_dot_SavedDataset__pb2.SavedDataset.SerializeToString, + ), + 'ListSavedDatasets': grpc.unary_unary_rpc_method_handler( + servicer.ListSavedDatasets, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListSavedDatasetsRequest.FromString, + response_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListSavedDatasetsResponse.SerializeToString, + ), + 'DeleteSavedDataset': grpc.unary_unary_rpc_method_handler( + servicer.DeleteSavedDataset, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.DeleteSavedDatasetRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'ApplyValidationReference': grpc.unary_unary_rpc_method_handler( + servicer.ApplyValidationReference, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyValidationReferenceRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'GetValidationReference': grpc.unary_unary_rpc_method_handler( + servicer.GetValidationReference, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetValidationReferenceRequest.FromString, + response_serializer=feast_dot_core_dot_ValidationProfile__pb2.ValidationReference.SerializeToString, + ), + 'ListValidationReferences': grpc.unary_unary_rpc_method_handler( + servicer.ListValidationReferences, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListValidationReferencesRequest.FromString, + response_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListValidationReferencesResponse.SerializeToString, + ), + 'DeleteValidationReference': grpc.unary_unary_rpc_method_handler( + servicer.DeleteValidationReference, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.DeleteValidationReferenceRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'ApplyPermission': grpc.unary_unary_rpc_method_handler( + servicer.ApplyPermission, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyPermissionRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'GetPermission': grpc.unary_unary_rpc_method_handler( + servicer.GetPermission, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetPermissionRequest.FromString, + response_serializer=feast_dot_core_dot_Permission__pb2.Permission.SerializeToString, + ), + 'ListPermissions': grpc.unary_unary_rpc_method_handler( + servicer.ListPermissions, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListPermissionsRequest.FromString, + response_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListPermissionsResponse.SerializeToString, + ), + 'DeletePermission': grpc.unary_unary_rpc_method_handler( + servicer.DeletePermission, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.DeletePermissionRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'ApplyProject': grpc.unary_unary_rpc_method_handler( + servicer.ApplyProject, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyProjectRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'GetProject': grpc.unary_unary_rpc_method_handler( + servicer.GetProject, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetProjectRequest.FromString, + response_serializer=feast_dot_core_dot_Project__pb2.Project.SerializeToString, + ), + 'ListProjects': grpc.unary_unary_rpc_method_handler( + servicer.ListProjects, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListProjectsRequest.FromString, + response_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListProjectsResponse.SerializeToString, + ), + 'DeleteProject': grpc.unary_unary_rpc_method_handler( + servicer.DeleteProject, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.DeleteProjectRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'ApplyMaterialization': grpc.unary_unary_rpc_method_handler( + servicer.ApplyMaterialization, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ApplyMaterializationRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'ListProjectMetadata': grpc.unary_unary_rpc_method_handler( + servicer.ListProjectMetadata, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.ListProjectMetadataRequest.FromString, + response_serializer=feast_dot_registry_dot_RegistryServer__pb2.ListProjectMetadataResponse.SerializeToString, + ), + 'UpdateInfra': grpc.unary_unary_rpc_method_handler( + servicer.UpdateInfra, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.UpdateInfraRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'GetInfra': grpc.unary_unary_rpc_method_handler( + servicer.GetInfra, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.GetInfraRequest.FromString, + response_serializer=feast_dot_core_dot_InfraObject__pb2.Infra.SerializeToString, + ), + 'Commit': grpc.unary_unary_rpc_method_handler( + servicer.Commit, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'Refresh': grpc.unary_unary_rpc_method_handler( + servicer.Refresh, + request_deserializer=feast_dot_registry_dot_RegistryServer__pb2.RefreshRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), + 'Proto': grpc.unary_unary_rpc_method_handler( + servicer.Proto, + request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, + response_serializer=feast_dot_core_dot_Registry__pb2.Registry.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'feast.registry.RegistryServer', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class RegistryServer(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def ApplyEntity(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def GetEntity(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ListEntities(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def DeleteEntity(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ApplyDataSource(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def GetDataSource(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ListDataSources(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def DeleteDataSource(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ApplyFeatureView(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def DeleteFeatureView(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def GetAnyFeatureView(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ListAllFeatureViews(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def GetFeatureView(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ListFeatureViews(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def GetStreamFeatureView(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ListStreamFeatureViews(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def GetOnDemandFeatureView(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ListOnDemandFeatureViews(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ApplyFeatureService(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def GetFeatureService(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ListFeatureServices(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def DeleteFeatureService(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ApplySavedDataset(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def GetSavedDataset(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ListSavedDatasets(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def DeleteSavedDataset(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ApplyValidationReference(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def GetValidationReference(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ListValidationReferences(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def DeleteValidationReference(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ApplyPermission(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def GetPermission(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ListPermissions(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def DeletePermission(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ApplyProject(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def GetProject(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ListProjects(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def DeleteProject(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ApplyMaterialization(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def ListProjectMetadata(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def UpdateInfra(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def GetInfra(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def Commit(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def Refresh(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def Proto(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) diff --git a/sdk/python/feast/protos/feast/registry/__init__.py b/sdk/python/feast/protos/feast/registry/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sdk/python/feast/protos/feast/serving/Connector_pb2.py b/sdk/python/feast/protos/feast/serving/Connector_pb2.py new file mode 100644 index 00000000000..b38471dea8d --- /dev/null +++ b/sdk/python/feast/protos/feast/serving/Connector_pb2.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/serving/Connector.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from feast.protos.feast.types import Value_pb2 as feast_dot_types_dot_Value__pb2 +from feast.protos.feast.types import EntityKey_pb2 as feast_dot_types_dot_EntityKey__pb2 +from feast.protos.feast.serving import ServingService_pb2 as feast_dot_serving_dot_ServingService__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x66\x65\x61st/serving/Connector.proto\x12\x0egrpc.connector\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17\x66\x65\x61st/types/Value.proto\x1a\x1b\x66\x65\x61st/types/EntityKey.proto\x1a\"feast/serving/ServingService.proto\"\x9a\x01\n\x10\x43onnectorFeature\x12\x34\n\treference\x18\x01 \x01(\x0b\x32!.feast.serving.FeatureReferenceV2\x12-\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12!\n\x05value\x18\x03 \x01(\x0b\x32\x12.feast.types.Value\"M\n\x14\x43onnectorFeatureList\x12\x35\n\x0b\x66\x65\x61tureList\x18\x01 \x03(\x0b\x32 .grpc.connector.ConnectorFeature\"_\n\x11OnlineReadRequest\x12*\n\nentityKeys\x18\x01 \x03(\x0b\x32\x16.feast.types.EntityKey\x12\x0c\n\x04view\x18\x02 \x01(\t\x12\x10\n\x08\x66\x65\x61tures\x18\x03 \x03(\t\"K\n\x12OnlineReadResponse\x12\x35\n\x07results\x18\x01 \x03(\x0b\x32$.grpc.connector.ConnectorFeatureList2b\n\x0bOnlineStore\x12S\n\nOnlineRead\x12!.grpc.connector.OnlineReadRequest\x1a\".grpc.connector.OnlineReadResponseB4Z2github.com/feast-dev/feast/go/protos/feast/servingb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.serving.Connector_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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 + _globals['_CONNECTORFEATURELIST']._serialized_start=329 + _globals['_CONNECTORFEATURELIST']._serialized_end=406 + _globals['_ONLINEREADREQUEST']._serialized_start=408 + _globals['_ONLINEREADREQUEST']._serialized_end=503 + _globals['_ONLINEREADRESPONSE']._serialized_start=505 + _globals['_ONLINEREADRESPONSE']._serialized_end=580 + _globals['_ONLINESTORE']._serialized_start=582 + _globals['_ONLINESTORE']._serialized_end=680 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/serving/Connector_pb2.pyi b/sdk/python/feast/protos/feast/serving/Connector_pb2.pyi new file mode 100644 index 00000000000..f87109e0fa5 --- /dev/null +++ b/sdk/python/feast/protos/feast/serving/Connector_pb2.pyi @@ -0,0 +1,97 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import collections.abc +import feast.serving.ServingService_pb2 +import feast.types.EntityKey_pb2 +import feast.types.Value_pb2 +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class ConnectorFeature(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + REFERENCE_FIELD_NUMBER: builtins.int + TIMESTAMP_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + @property + def reference(self) -> feast.serving.ServingService_pb2.FeatureReferenceV2: ... + @property + def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def value(self) -> feast.types.Value_pb2.Value: ... + def __init__( + self, + *, + reference: feast.serving.ServingService_pb2.FeatureReferenceV2 | None = ..., + timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., + value: feast.types.Value_pb2.Value | None = ..., + ) -> 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: ... + +global___ConnectorFeature = ConnectorFeature + +class ConnectorFeatureList(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FEATURELIST_FIELD_NUMBER: builtins.int + @property + def featureList(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ConnectorFeature]: ... + def __init__( + self, + *, + featureList: collections.abc.Iterable[global___ConnectorFeature] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["featureList", b"featureList"]) -> None: ... + +global___ConnectorFeatureList = ConnectorFeatureList + +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 + @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__( + self, + *, + entityKeys: collections.abc.Iterable[feast.types.EntityKey_pb2.EntityKey] | None = ..., + 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: ... + +global___OnlineReadRequest = OnlineReadRequest + +class OnlineReadResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RESULTS_FIELD_NUMBER: builtins.int + @property + def results(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ConnectorFeatureList]: ... + def __init__( + self, + *, + results: collections.abc.Iterable[global___ConnectorFeatureList] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.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 new file mode 100644 index 00000000000..dfadf982dd8 --- /dev/null +++ b/sdk/python/feast/protos/feast/serving/Connector_pb2_grpc.py @@ -0,0 +1,66 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +from feast.protos.feast.serving import Connector_pb2 as feast_dot_serving_dot_Connector__pb2 + + +class OnlineStoreStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.OnlineRead = channel.unary_unary( + '/grpc.connector.OnlineStore/OnlineRead', + request_serializer=feast_dot_serving_dot_Connector__pb2.OnlineReadRequest.SerializeToString, + response_deserializer=feast_dot_serving_dot_Connector__pb2.OnlineReadResponse.FromString, + ) + + +class OnlineStoreServicer(object): + """Missing associated documentation comment in .proto file.""" + + def OnlineRead(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_OnlineStoreServicer_to_server(servicer, server): + rpc_method_handlers = { + 'OnlineRead': grpc.unary_unary_rpc_method_handler( + servicer.OnlineRead, + request_deserializer=feast_dot_serving_dot_Connector__pb2.OnlineReadRequest.FromString, + response_serializer=feast_dot_serving_dot_Connector__pb2.OnlineReadResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'grpc.connector.OnlineStore', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class OnlineStore(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def OnlineRead(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) diff --git a/sdk/python/feast/protos/feast/serving/GrpcServer_pb2.py b/sdk/python/feast/protos/feast/serving/GrpcServer_pb2.py new file mode 100644 index 00000000000..8e40630cfff --- /dev/null +++ b/sdk/python/feast/protos/feast/serving/GrpcServer_pb2.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/serving/GrpcServer.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from feast.protos.feast.serving import ServingService_pb2 as feast_dot_serving_dot_ServingService__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1e\x66\x65\x61st/serving/GrpcServer.proto\x1a\"feast/serving/ServingService.proto\"\xb3\x01\n\x0bPushRequest\x12,\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32\x1a.PushRequest.FeaturesEntry\x12\x1b\n\x13stream_feature_view\x18\x02 \x01(\t\x12\x1c\n\x14\x61llow_registry_cache\x18\x03 \x01(\x08\x12\n\n\x02to\x18\x04 \x01(\t\x1a/\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x1e\n\x0cPushResponse\x12\x0e\n\x06status\x18\x01 \x01(\x08\"\xc1\x01\n\x19WriteToOnlineStoreRequest\x12:\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0b\x32(.WriteToOnlineStoreRequest.FeaturesEntry\x12\x19\n\x11\x66\x65\x61ture_view_name\x18\x02 \x01(\t\x12\x1c\n\x14\x61llow_registry_cache\x18\x03 \x01(\x08\x1a/\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\",\n\x1aWriteToOnlineStoreResponse\x12\x0e\n\x06status\x18\x01 \x01(\x08\x32\xf1\x01\n\x11GrpcFeatureServer\x12%\n\x04Push\x12\x0c.PushRequest\x1a\r.PushResponse\"\x00\x12M\n\x12WriteToOnlineStore\x12\x1a.WriteToOnlineStoreRequest\x1a\x1b.WriteToOnlineStoreResponse\x12\x66\n\x11GetOnlineFeatures\x12\'.feast.serving.GetOnlineFeaturesRequest\x1a(.feast.serving.GetOnlineFeaturesResponseb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.serving.GrpcServer_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals['_PUSHREQUEST_FEATURESENTRY']._options = None + _globals['_PUSHREQUEST_FEATURESENTRY']._serialized_options = b'8\001' + _globals['_WRITETOONLINESTOREREQUEST_FEATURESENTRY']._options = None + _globals['_WRITETOONLINESTOREREQUEST_FEATURESENTRY']._serialized_options = b'8\001' + _globals['_PUSHREQUEST']._serialized_start=71 + _globals['_PUSHREQUEST']._serialized_end=250 + _globals['_PUSHREQUEST_FEATURESENTRY']._serialized_start=203 + _globals['_PUSHREQUEST_FEATURESENTRY']._serialized_end=250 + _globals['_PUSHRESPONSE']._serialized_start=252 + _globals['_PUSHRESPONSE']._serialized_end=282 + _globals['_WRITETOONLINESTOREREQUEST']._serialized_start=285 + _globals['_WRITETOONLINESTOREREQUEST']._serialized_end=478 + _globals['_WRITETOONLINESTOREREQUEST_FEATURESENTRY']._serialized_start=203 + _globals['_WRITETOONLINESTOREREQUEST_FEATURESENTRY']._serialized_end=250 + _globals['_WRITETOONLINESTORERESPONSE']._serialized_start=480 + _globals['_WRITETOONLINESTORERESPONSE']._serialized_end=524 + _globals['_GRPCFEATURESERVER']._serialized_start=527 + _globals['_GRPCFEATURESERVER']._serialized_end=768 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/serving/GrpcServer_pb2.pyi b/sdk/python/feast/protos/feast/serving/GrpcServer_pb2.pyi new file mode 100644 index 00000000000..54964f46e58 --- /dev/null +++ b/sdk/python/feast/protos/feast/serving/GrpcServer_pb2.pyi @@ -0,0 +1,120 @@ +""" +@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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class PushRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class FeaturesEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.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 + def __init__( + self, + *, + features: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + stream_feature_view: builtins.str = ..., + allow_registry_cache: builtins.bool = ..., + to: builtins.str = ..., + ) -> 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: ... + +global___PushRequest = PushRequest + +class PushResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STATUS_FIELD_NUMBER: builtins.int + status: builtins.bool + def __init__( + self, + *, + status: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["status", b"status"]) -> None: ... + +global___PushResponse = PushResponse + +class WriteToOnlineStoreRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class FeaturesEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.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 + def __init__( + self, + *, + features: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + 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: ... + +global___WriteToOnlineStoreRequest = WriteToOnlineStoreRequest + +class WriteToOnlineStoreResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STATUS_FIELD_NUMBER: builtins.int + status: builtins.bool + def __init__( + self, + *, + status: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.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 new file mode 100644 index 00000000000..b381cc0f417 --- /dev/null +++ b/sdk/python/feast/protos/feast/serving/GrpcServer_pb2_grpc.py @@ -0,0 +1,133 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +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 + + +class GrpcFeatureServerStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.Push = channel.unary_unary( + '/GrpcFeatureServer/Push', + request_serializer=feast_dot_serving_dot_GrpcServer__pb2.PushRequest.SerializeToString, + response_deserializer=feast_dot_serving_dot_GrpcServer__pb2.PushResponse.FromString, + ) + 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, + ) + 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, + ) + + +class GrpcFeatureServerServicer(object): + """Missing associated documentation comment in .proto file.""" + + def Push(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def WriteToOnlineStore(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetOnlineFeatures(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_GrpcFeatureServerServicer_to_server(servicer, server): + rpc_method_handlers = { + 'Push': grpc.unary_unary_rpc_method_handler( + servicer.Push, + request_deserializer=feast_dot_serving_dot_GrpcServer__pb2.PushRequest.FromString, + response_serializer=feast_dot_serving_dot_GrpcServer__pb2.PushResponse.SerializeToString, + ), + 'WriteToOnlineStore': grpc.unary_unary_rpc_method_handler( + servicer.WriteToOnlineStore, + request_deserializer=feast_dot_serving_dot_GrpcServer__pb2.WriteToOnlineStoreRequest.FromString, + response_serializer=feast_dot_serving_dot_GrpcServer__pb2.WriteToOnlineStoreResponse.SerializeToString, + ), + 'GetOnlineFeatures': grpc.unary_unary_rpc_method_handler( + servicer.GetOnlineFeatures, + request_deserializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesRequest.FromString, + response_serializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'GrpcFeatureServer', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class GrpcFeatureServer(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def Push(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def WriteToOnlineStore(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def GetOnlineFeatures(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) diff --git a/sdk/python/feast/protos/feast/serving/ServingService_pb2.py b/sdk/python/feast/protos/feast/serving/ServingService_pb2.py new file mode 100644 index 00000000000..fa866640577 --- /dev/null +++ b/sdk/python/feast/protos/feast/serving/ServingService_pb2.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/serving/ServingService.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from feast.protos.feast.types import Value_pb2 as feast_dot_types_dot_Value__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"feast/serving/ServingService.proto\x12\rfeast.serving\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17\x66\x65\x61st/types/Value.proto\"\x1c\n\x1aGetFeastServingInfoRequest\".\n\x1bGetFeastServingInfoResponse\x12\x0f\n\x07version\x18\x01 \x01(\t\"E\n\x12\x46\x65\x61tureReferenceV2\x12\x19\n\x11\x66\x65\x61ture_view_name\x18\x01 \x01(\t\x12\x14\n\x0c\x66\x65\x61ture_name\x18\x02 \x01(\t\"\xfd\x02\n\x1aGetOnlineFeaturesRequestV2\x12\x33\n\x08\x66\x65\x61tures\x18\x04 \x03(\x0b\x32!.feast.serving.FeatureReferenceV2\x12H\n\x0b\x65ntity_rows\x18\x02 \x03(\x0b\x32\x33.feast.serving.GetOnlineFeaturesRequestV2.EntityRow\x12\x0f\n\x07project\x18\x05 \x01(\t\x1a\xce\x01\n\tEntityRow\x12-\n\ttimestamp\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12O\n\x06\x66ields\x18\x02 \x03(\x0b\x32?.feast.serving.GetOnlineFeaturesRequestV2.EntityRow.FieldsEntry\x1a\x41\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.feast.types.Value:\x02\x38\x01\"\x1a\n\x0b\x46\x65\x61tureList\x12\x0b\n\x03val\x18\x01 \x03(\t\"\xc8\x03\n\x18GetOnlineFeaturesRequest\x12\x19\n\x0f\x66\x65\x61ture_service\x18\x01 \x01(\tH\x00\x12.\n\x08\x66\x65\x61tures\x18\x02 \x01(\x0b\x32\x1a.feast.serving.FeatureListH\x00\x12G\n\x08\x65ntities\x18\x03 \x03(\x0b\x32\x35.feast.serving.GetOnlineFeaturesRequest.EntitiesEntry\x12\x1a\n\x12\x66ull_feature_names\x18\x04 \x01(\x08\x12T\n\x0frequest_context\x18\x05 \x03(\x0b\x32;.feast.serving.GetOnlineFeaturesRequest.RequestContextEntry\x1aK\n\rEntitiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12)\n\x05value\x18\x02 \x01(\x0b\x32\x1a.feast.types.RepeatedValue:\x02\x38\x01\x1aQ\n\x13RequestContextEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12)\n\x05value\x18\x02 \x01(\x0b\x32\x1a.feast.types.RepeatedValue:\x02\x38\x01\x42\x06\n\x04kind\"\xd2\x02\n\x19GetOnlineFeaturesResponse\x12\x42\n\x08metadata\x18\x01 \x01(\x0b\x32\x30.feast.serving.GetOnlineFeaturesResponseMetadata\x12G\n\x07results\x18\x02 \x03(\x0b\x32\x36.feast.serving.GetOnlineFeaturesResponse.FeatureVector\x12\x0e\n\x06status\x18\x03 \x01(\x08\x1a\x97\x01\n\rFeatureVector\x12\"\n\x06values\x18\x01 \x03(\x0b\x32\x12.feast.types.Value\x12,\n\x08statuses\x18\x02 \x03(\x0e\x32\x1a.feast.serving.FieldStatus\x12\x34\n\x10\x65vent_timestamps\x18\x03 \x03(\x0b\x32\x1a.google.protobuf.Timestamp\"V\n!GetOnlineFeaturesResponseMetadata\x12\x31\n\rfeature_names\x18\x01 \x01(\x0b\x32\x1a.feast.serving.FeatureList*[\n\x0b\x46ieldStatus\x12\x0b\n\x07INVALID\x10\x00\x12\x0b\n\x07PRESENT\x10\x01\x12\x0e\n\nNULL_VALUE\x10\x02\x12\r\n\tNOT_FOUND\x10\x03\x12\x13\n\x0fOUTSIDE_MAX_AGE\x10\x04\x32\xe6\x01\n\x0eServingService\x12l\n\x13GetFeastServingInfo\x12).feast.serving.GetFeastServingInfoRequest\x1a*.feast.serving.GetFeastServingInfoResponse\x12\x66\n\x11GetOnlineFeatures\x12\'.feast.serving.GetOnlineFeaturesRequest\x1a(.feast.serving.GetOnlineFeaturesResponseBZ\n\x13\x66\x65\x61st.proto.servingB\x0fServingAPIProtoZ2github.com/feast-dev/feast/go/protos/feast/servingb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.serving.ServingService_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'8\001' + _globals['_GETONLINEFEATURESREQUEST_ENTITIESENTRY']._options = None + _globals['_GETONLINEFEATURESREQUEST_ENTITIESENTRY']._serialized_options = b'8\001' + _globals['_GETONLINEFEATURESREQUEST_REQUESTCONTEXTENTRY']._options = None + _globals['_GETONLINEFEATURESREQUEST_REQUESTCONTEXTENTRY']._serialized_options = b'8\001' + _globals['_FIELDSTATUS']._serialized_start=1560 + _globals['_FIELDSTATUS']._serialized_end=1651 + _globals['_GETFEASTSERVINGINFOREQUEST']._serialized_start=111 + _globals['_GETFEASTSERVINGINFOREQUEST']._serialized_end=139 + _globals['_GETFEASTSERVINGINFORESPONSE']._serialized_start=141 + _globals['_GETFEASTSERVINGINFORESPONSE']._serialized_end=187 + _globals['_FEATUREREFERENCEV2']._serialized_start=189 + _globals['_FEATUREREFERENCEV2']._serialized_end=258 + _globals['_GETONLINEFEATURESREQUESTV2']._serialized_start=261 + _globals['_GETONLINEFEATURESREQUESTV2']._serialized_end=642 + _globals['_GETONLINEFEATURESREQUESTV2_ENTITYROW']._serialized_start=436 + _globals['_GETONLINEFEATURESREQUESTV2_ENTITYROW']._serialized_end=642 + _globals['_GETONLINEFEATURESREQUESTV2_ENTITYROW_FIELDSENTRY']._serialized_start=577 + _globals['_GETONLINEFEATURESREQUESTV2_ENTITYROW_FIELDSENTRY']._serialized_end=642 + _globals['_FEATURELIST']._serialized_start=644 + _globals['_FEATURELIST']._serialized_end=670 + _globals['_GETONLINEFEATURESREQUEST']._serialized_start=673 + _globals['_GETONLINEFEATURESREQUEST']._serialized_end=1129 + _globals['_GETONLINEFEATURESREQUEST_ENTITIESENTRY']._serialized_start=963 + _globals['_GETONLINEFEATURESREQUEST_ENTITIESENTRY']._serialized_end=1038 + _globals['_GETONLINEFEATURESREQUEST_REQUESTCONTEXTENTRY']._serialized_start=1040 + _globals['_GETONLINEFEATURESREQUEST_REQUESTCONTEXTENTRY']._serialized_end=1121 + _globals['_GETONLINEFEATURESRESPONSE']._serialized_start=1132 + _globals['_GETONLINEFEATURESRESPONSE']._serialized_end=1470 + _globals['_GETONLINEFEATURESRESPONSE_FEATUREVECTOR']._serialized_start=1319 + _globals['_GETONLINEFEATURESRESPONSE_FEATUREVECTOR']._serialized_end=1470 + _globals['_GETONLINEFEATURESRESPONSEMETADATA']._serialized_start=1472 + _globals['_GETONLINEFEATURESRESPONSEMETADATA']._serialized_end=1558 + _globals['_SERVINGSERVICE']._serialized_start=1654 + _globals['_SERVINGSERVICE']._serialized_end=1884 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/serving/ServingService_pb2.pyi b/sdk/python/feast/protos/feast/serving/ServingService_pb2.pyi new file mode 100644 index 00000000000..3c5e57ae45a --- /dev/null +++ b/sdk/python/feast/protos/feast/serving/ServingService_pb2.pyi @@ -0,0 +1,347 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2018 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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.internal.enum_type_wrapper +import google.protobuf.message +import google.protobuf.timestamp_pb2 +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +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 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + INVALID: _FieldStatus.ValueType # 0 + """Status is unset for this field.""" + PRESENT: _FieldStatus.ValueType # 1 + """Field value is present for this field and age is within max age.""" + NULL_VALUE: _FieldStatus.ValueType # 2 + """Values could be found for entity key and age is within max age, but + this field value is not assigned a value on ingestion into feast. + """ + NOT_FOUND: _FieldStatus.ValueType # 3 + """Entity key did not return any values as they do not exist in Feast. + This could suggest that the feature values have not yet been ingested + into feast or the ingestion failed. + """ + OUTSIDE_MAX_AGE: _FieldStatus.ValueType # 4 + """Values could be found for entity key, but field values are outside the maximum + allowable range. + """ + +class FieldStatus(_FieldStatus, metaclass=_FieldStatusEnumTypeWrapper): ... + +INVALID: FieldStatus.ValueType # 0 +"""Status is unset for this field.""" +PRESENT: FieldStatus.ValueType # 1 +"""Field value is present for this field and age is within max age.""" +NULL_VALUE: FieldStatus.ValueType # 2 +"""Values could be found for entity key and age is within max age, but +this field value is not assigned a value on ingestion into feast. +""" +NOT_FOUND: FieldStatus.ValueType # 3 +"""Entity key did not return any values as they do not exist in Feast. +This could suggest that the feature values have not yet been ingested +into feast or the ingestion failed. +""" +OUTSIDE_MAX_AGE: FieldStatus.ValueType # 4 +"""Values could be found for entity key, but field values are outside the maximum +allowable range. +""" +global___FieldStatus = FieldStatus + +class GetFeastServingInfoRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___GetFeastServingInfoRequest = GetFeastServingInfoRequest + +class GetFeastServingInfoResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VERSION_FIELD_NUMBER: builtins.int + version: builtins.str + """Feast version of this serving deployment.""" + def __init__( + self, + *, + version: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["version", b"version"]) -> None: ... + +global___GetFeastServingInfoResponse = GetFeastServingInfoResponse + +class FeatureReferenceV2(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FEATURE_VIEW_NAME_FIELD_NUMBER: builtins.int + FEATURE_NAME_FIELD_NUMBER: builtins.int + feature_view_name: builtins.str + """Name of the Feature View to retrieve the feature from.""" + feature_name: builtins.str + """Name of the Feature to retrieve the feature from.""" + def __init__( + self, + *, + 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: ... + +global___FeatureReferenceV2 = FeatureReferenceV2 + +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 + + class EntityRow(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class FieldsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + @property + def value(self) -> feast.types.Value_pb2.Value: ... + def __init__( + self, + *, + 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: ... + + TIMESTAMP_FIELD_NUMBER: builtins.int + FIELDS_FIELD_NUMBER: builtins.int + @property + def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: + """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: ... + + FEATURES_FIELD_NUMBER: builtins.int + ENTITY_ROWS_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + @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, + *, + features: collections.abc.Iterable[global___FeatureReferenceV2] | None = ..., + 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: ... + +global___GetOnlineFeaturesRequestV2 = GetOnlineFeaturesRequestV2 + +class FeatureList(google.protobuf.message.Message): + """In JSON "val" field can be omitted""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VAL_FIELD_NUMBER: builtins.int + @property + def val(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def __init__( + self, + *, + val: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + +global___FeatureList = FeatureList + +class GetOnlineFeaturesRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class EntitiesEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + @property + def value(self) -> feast.types.Value_pb2.RepeatedValue: ... + def __init__( + self, + *, + 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: ... + + class RequestContextEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + @property + def value(self) -> feast.types.Value_pb2.RepeatedValue: ... + def __init__( + self, + *, + 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: ... + + FEATURE_SERVICE_FIELD_NUMBER: builtins.int + FEATURES_FIELD_NUMBER: builtins.int + ENTITIES_FIELD_NUMBER: builtins.int + FULL_FEATURE_NAMES_FIELD_NUMBER: builtins.int + REQUEST_CONTEXT_FIELD_NUMBER: builtins.int + feature_service: builtins.str + @property + def features(self) -> global___FeatureList: ... + @property + def entities(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, feast.types.Value_pb2.RepeatedValue]: + """The entity data is specified in a columnar format + A map of entity name -> list of values + """ + full_feature_names: builtins.bool + @property + def request_context(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, feast.types.Value_pb2.RepeatedValue]: + """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, + *, + feature_service: builtins.str = ..., + features: global___FeatureList | None = ..., + entities: collections.abc.Mapping[builtins.str, feast.types.Value_pb2.RepeatedValue] | None = ..., + full_feature_names: builtins.bool = ..., + request_context: collections.abc.Mapping[builtins.str, feast.types.Value_pb2.RepeatedValue] | None = ..., + ) -> 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: ... + +global___GetOnlineFeaturesRequest = GetOnlineFeaturesRequest + +class GetOnlineFeaturesResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class FeatureVector(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VALUES_FIELD_NUMBER: builtins.int + STATUSES_FIELD_NUMBER: builtins.int + EVENT_TIMESTAMPS_FIELD_NUMBER: builtins.int + @property + def values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.types.Value_pb2.Value]: ... + @property + def statuses(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___FieldStatus.ValueType]: ... + @property + def event_timestamps(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[google.protobuf.timestamp_pb2.Timestamp]: ... + def __init__( + self, + *, + values: collections.abc.Iterable[feast.types.Value_pb2.Value] | None = ..., + 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: ... + + METADATA_FIELD_NUMBER: builtins.int + RESULTS_FIELD_NUMBER: builtins.int + STATUS_FIELD_NUMBER: builtins.int + @property + def metadata(self) -> global___GetOnlineFeaturesResponseMetadata: ... + @property + def results(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___GetOnlineFeaturesResponse.FeatureVector]: + """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, + *, + metadata: global___GetOnlineFeaturesResponseMetadata | None = ..., + 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: ... + +global___GetOnlineFeaturesResponse = GetOnlineFeaturesResponse + +class GetOnlineFeaturesResponseMetadata(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FEATURE_NAMES_FIELD_NUMBER: builtins.int + @property + def feature_names(self) -> global___FeatureList: ... + def __init__( + self, + *, + 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: ... + +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 new file mode 100644 index 00000000000..d3cd055f665 --- /dev/null +++ b/sdk/python/feast/protos/feast/serving/ServingService_pb2_grpc.py @@ -0,0 +1,101 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +from feast.protos.feast.serving import ServingService_pb2 as feast_dot_serving_dot_ServingService__pb2 + + +class ServingServiceStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.GetFeastServingInfo = channel.unary_unary( + '/feast.serving.ServingService/GetFeastServingInfo', + request_serializer=feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoRequest.SerializeToString, + response_deserializer=feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoResponse.FromString, + ) + self.GetOnlineFeatures = channel.unary_unary( + '/feast.serving.ServingService/GetOnlineFeatures', + request_serializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesRequest.SerializeToString, + response_deserializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesResponse.FromString, + ) + + +class ServingServiceServicer(object): + """Missing associated documentation comment in .proto file.""" + + def GetFeastServingInfo(self, request, context): + """Get information about this Feast serving. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetOnlineFeatures(self, request, context): + """Get online features synchronously. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_ServingServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'GetFeastServingInfo': grpc.unary_unary_rpc_method_handler( + servicer.GetFeastServingInfo, + request_deserializer=feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoRequest.FromString, + response_serializer=feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoResponse.SerializeToString, + ), + 'GetOnlineFeatures': grpc.unary_unary_rpc_method_handler( + servicer.GetOnlineFeatures, + request_deserializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesRequest.FromString, + response_serializer=feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'feast.serving.ServingService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class ServingService(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def GetFeastServingInfo(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/feast.serving.ServingService/GetFeastServingInfo', + feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoRequest.SerializeToString, + feast_dot_serving_dot_ServingService__pb2.GetFeastServingInfoResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def GetOnlineFeatures(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/feast.serving.ServingService/GetOnlineFeatures', + feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesRequest.SerializeToString, + feast_dot_serving_dot_ServingService__pb2.GetOnlineFeaturesResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/sdk/python/feast/protos/feast/serving/TransformationService_pb2.py b/sdk/python/feast/protos/feast/serving/TransformationService_pb2.py new file mode 100644 index 00000000000..bc060e9a776 --- /dev/null +++ b/sdk/python/feast/protos/feast/serving/TransformationService_pb2.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/serving/TransformationService.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)feast/serving/TransformationService.proto\x12\rfeast.serving\"+\n\tValueType\x12\x15\n\x0b\x61rrow_value\x18\x01 \x01(\x0cH\x00\x42\x07\n\x05value\"%\n#GetTransformationServiceInfoRequest\"\x9c\x01\n$GetTransformationServiceInfoResponse\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x36\n\x04type\x18\x02 \x01(\x0e\x32(.feast.serving.TransformationServiceType\x12+\n#transformation_service_type_details\x18\x03 \x01(\t\"\x88\x01\n\x18TransformFeaturesRequest\x12#\n\x1bon_demand_feature_view_name\x18\x01 \x01(\t\x12\x0f\n\x07project\x18\x02 \x01(\t\x12\x36\n\x14transformation_input\x18\x03 \x01(\x0b\x32\x18.feast.serving.ValueType\"T\n\x19TransformFeaturesResponse\x12\x37\n\x15transformation_output\x18\x03 \x01(\x0b\x32\x18.feast.serving.ValueType*\x94\x01\n\x19TransformationServiceType\x12\'\n#TRANSFORMATION_SERVICE_TYPE_INVALID\x10\x00\x12&\n\"TRANSFORMATION_SERVICE_TYPE_PYTHON\x10\x01\x12&\n\"TRANSFORMATION_SERVICE_TYPE_CUSTOM\x10\x64\x32\x89\x02\n\x15TransformationService\x12\x87\x01\n\x1cGetTransformationServiceInfo\x12\x32.feast.serving.GetTransformationServiceInfoRequest\x1a\x33.feast.serving.GetTransformationServiceInfoResponse\x12\x66\n\x11TransformFeatures\x12\'.feast.serving.TransformFeaturesRequest\x1a(.feast.serving.TransformFeaturesResponseBh\n\x13\x66\x65\x61st.proto.servingB\x1dTransformationServiceAPIProtoZ2github.com/feast-dev/feast/go/protos/feast/servingb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.serving.TransformationService_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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 + _globals['_VALUETYPE']._serialized_start=60 + _globals['_VALUETYPE']._serialized_end=103 + _globals['_GETTRANSFORMATIONSERVICEINFOREQUEST']._serialized_start=105 + _globals['_GETTRANSFORMATIONSERVICEINFOREQUEST']._serialized_end=142 + _globals['_GETTRANSFORMATIONSERVICEINFORESPONSE']._serialized_start=145 + _globals['_GETTRANSFORMATIONSERVICEINFORESPONSE']._serialized_end=301 + _globals['_TRANSFORMFEATURESREQUEST']._serialized_start=304 + _globals['_TRANSFORMFEATURESREQUEST']._serialized_end=440 + _globals['_TRANSFORMFEATURESRESPONSE']._serialized_start=442 + _globals['_TRANSFORMFEATURESRESPONSE']._serialized_end=526 + _globals['_TRANSFORMATIONSERVICE']._serialized_start=680 + _globals['_TRANSFORMATIONSERVICE']._serialized_end=945 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/serving/TransformationService_pb2.pyi b/sdk/python/feast/protos/feast/serving/TransformationService_pb2.pyi new file mode 100644 index 00000000000..3e0752b7bdd --- /dev/null +++ b/sdk/python/feast/protos/feast/serving/TransformationService_pb2.pyi @@ -0,0 +1,136 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2021 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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 +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +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 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + TRANSFORMATION_SERVICE_TYPE_INVALID: _TransformationServiceType.ValueType # 0 + TRANSFORMATION_SERVICE_TYPE_PYTHON: _TransformationServiceType.ValueType # 1 + TRANSFORMATION_SERVICE_TYPE_CUSTOM: _TransformationServiceType.ValueType # 100 + +class TransformationServiceType(_TransformationServiceType, metaclass=_TransformationServiceTypeEnumTypeWrapper): ... + +TRANSFORMATION_SERVICE_TYPE_INVALID: TransformationServiceType.ValueType # 0 +TRANSFORMATION_SERVICE_TYPE_PYTHON: TransformationServiceType.ValueType # 1 +TRANSFORMATION_SERVICE_TYPE_CUSTOM: TransformationServiceType.ValueType # 100 +global___TransformationServiceType = TransformationServiceType + +class ValueType(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ARROW_VALUE_FIELD_NUMBER: builtins.int + arrow_value: builtins.bytes + """Having a oneOf provides forward compatibility if we need to support compound types + that are not supported by arrow natively. + """ + def __init__( + self, + *, + 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: ... + +global___ValueType = ValueType + +class GetTransformationServiceInfoRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___GetTransformationServiceInfoRequest = GetTransformationServiceInfoRequest + +class GetTransformationServiceInfoResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VERSION_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + TRANSFORMATION_SERVICE_TYPE_DETAILS_FIELD_NUMBER: builtins.int + version: builtins.str + """Feast version of this transformation service deployment.""" + type: global___TransformationServiceType.ValueType + """Type of transformation service deployment. This is either Python, or custom""" + transformation_service_type_details: builtins.str + def __init__( + self, + *, + version: builtins.str = ..., + 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: ... + +global___GetTransformationServiceInfoResponse = GetTransformationServiceInfoResponse + +class TransformFeaturesRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ON_DEMAND_FEATURE_VIEW_NAME_FIELD_NUMBER: builtins.int + PROJECT_FIELD_NUMBER: builtins.int + TRANSFORMATION_INPUT_FIELD_NUMBER: builtins.int + on_demand_feature_view_name: builtins.str + project: builtins.str + @property + def transformation_input(self) -> global___ValueType: ... + def __init__( + self, + *, + on_demand_feature_view_name: builtins.str = ..., + 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: ... + +global___TransformFeaturesRequest = TransformFeaturesRequest + +class TransformFeaturesResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TRANSFORMATION_OUTPUT_FIELD_NUMBER: builtins.int + @property + def transformation_output(self) -> global___ValueType: ... + def __init__( + self, + *, + 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: ... + +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 new file mode 100644 index 00000000000..30099e39cae --- /dev/null +++ b/sdk/python/feast/protos/feast/serving/TransformationService_pb2_grpc.py @@ -0,0 +1,99 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +from feast.protos.feast.serving import TransformationService_pb2 as feast_dot_serving_dot_TransformationService__pb2 + + +class TransformationServiceStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.GetTransformationServiceInfo = channel.unary_unary( + '/feast.serving.TransformationService/GetTransformationServiceInfo', + request_serializer=feast_dot_serving_dot_TransformationService__pb2.GetTransformationServiceInfoRequest.SerializeToString, + response_deserializer=feast_dot_serving_dot_TransformationService__pb2.GetTransformationServiceInfoResponse.FromString, + ) + 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, + ) + + +class TransformationServiceServicer(object): + """Missing associated documentation comment in .proto file.""" + + def GetTransformationServiceInfo(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def TransformFeatures(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_TransformationServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'GetTransformationServiceInfo': grpc.unary_unary_rpc_method_handler( + servicer.GetTransformationServiceInfo, + request_deserializer=feast_dot_serving_dot_TransformationService__pb2.GetTransformationServiceInfoRequest.FromString, + response_serializer=feast_dot_serving_dot_TransformationService__pb2.GetTransformationServiceInfoResponse.SerializeToString, + ), + 'TransformFeatures': grpc.unary_unary_rpc_method_handler( + servicer.TransformFeatures, + request_deserializer=feast_dot_serving_dot_TransformationService__pb2.TransformFeaturesRequest.FromString, + response_serializer=feast_dot_serving_dot_TransformationService__pb2.TransformFeaturesResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'feast.serving.TransformationService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class TransformationService(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def GetTransformationServiceInfo(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) + + @staticmethod + def TransformFeatures(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + 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) diff --git a/sdk/python/feast/protos/feast/serving/__init__.py b/sdk/python/feast/protos/feast/serving/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sdk/python/feast/protos/feast/storage/Redis_pb2.py b/sdk/python/feast/protos/feast/storage/Redis_pb2.py new file mode 100644 index 00000000000..37d59c9df5a --- /dev/null +++ b/sdk/python/feast/protos/feast/storage/Redis_pb2.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/storage/Redis.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from feast.protos.feast.types import Value_pb2 as feast_dot_types_dot_Value__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19\x66\x65\x61st/storage/Redis.proto\x12\rfeast.storage\x1a\x17\x66\x65\x61st/types/Value.proto\"^\n\nRedisKeyV2\x12\x0f\n\x07project\x18\x01 \x01(\t\x12\x14\n\x0c\x65ntity_names\x18\x02 \x03(\t\x12)\n\rentity_values\x18\x03 \x03(\x0b\x32\x12.feast.types.ValueBU\n\x13\x66\x65\x61st.proto.storageB\nRedisProtoZ2github.com/feast-dev/feast/go/protos/feast/storageb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.storage.Redis_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/storage/Redis_pb2.pyi b/sdk/python/feast/protos/feast/storage/Redis_pb2.pyi new file mode 100644 index 00000000000..74cc2b07f0a --- /dev/null +++ b/sdk/python/feast/protos/feast/storage/Redis_pb2.pyi @@ -0,0 +1,54 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2019 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class RedisKeyV2(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PROJECT_FIELD_NUMBER: builtins.int + ENTITY_NAMES_FIELD_NUMBER: builtins.int + ENTITY_VALUES_FIELD_NUMBER: builtins.int + project: builtins.str + @property + def entity_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def entity_values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.types.Value_pb2.Value]: ... + def __init__( + self, + *, + project: builtins.str = ..., + 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: ... + +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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/storage/Redis_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/storage/__init__.py b/sdk/python/feast/protos/feast/storage/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sdk/python/feast/protos/feast/types/EntityKey_pb2.py b/sdk/python/feast/protos/feast/types/EntityKey_pb2.py new file mode 100644 index 00000000000..a6e1abf7302 --- /dev/null +++ b/sdk/python/feast/protos/feast/types/EntityKey_pb2.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/types/EntityKey.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from feast.protos.feast.types import Value_pb2 as feast_dot_types_dot_Value__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66\x65\x61st/types/EntityKey.proto\x12\x0b\x66\x65\x61st.types\x1a\x17\x66\x65\x61st/types/Value.proto\"I\n\tEntityKey\x12\x11\n\tjoin_keys\x18\x01 \x03(\t\x12)\n\rentity_values\x18\x02 \x03(\x0b\x32\x12.feast.types.ValueBU\n\x11\x66\x65\x61st.proto.typesB\x0e\x45ntityKeyProtoZ0github.com/feast-dev/feast/go/protos/feast/typesb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.types.EntityKey_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/types/EntityKey_pb2.pyi b/sdk/python/feast/protos/feast/types/EntityKey_pb2.pyi new file mode 100644 index 00000000000..fe65e0c1b32 --- /dev/null +++ b/sdk/python/feast/protos/feast/types/EntityKey_pb2.pyi @@ -0,0 +1,51 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2018 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class EntityKey(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + JOIN_KEYS_FIELD_NUMBER: builtins.int + ENTITY_VALUES_FIELD_NUMBER: builtins.int + @property + def join_keys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + @property + def entity_values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.types.Value_pb2.Value]: ... + def __init__( + self, + *, + 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: ... + +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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/types/EntityKey_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/types/Field_pb2.py b/sdk/python/feast/protos/feast/types/Field_pb2.py new file mode 100644 index 00000000000..973fdc6cdea --- /dev/null +++ b/sdk/python/feast/protos/feast/types/Field_pb2.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/types/Field.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from feast.protos.feast.types import Value_pb2 as feast_dot_types_dot_Value__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66\x65\x61st/types/Field.proto\x12\x0b\x66\x65\x61st.types\x1a\x17\x66\x65\x61st/types/Value.proto\"\xaf\x01\n\x05\x46ield\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x05value\x18\x02 \x01(\x0e\x32\x1b.feast.types.ValueType.Enum\x12*\n\x04tags\x18\x03 \x03(\x0b\x32\x1c.feast.types.Field.TagsEntry\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x1a+\n\tTagsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42Q\n\x11\x66\x65\x61st.proto.typesB\nFieldProtoZ0github.com/feast-dev/feast/go/protos/feast/typesb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.types.Field_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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']._serialized_options = b'8\001' + _globals['_FIELD']._serialized_start=66 + _globals['_FIELD']._serialized_end=241 + _globals['_FIELD_TAGSENTRY']._serialized_start=198 + _globals['_FIELD_TAGSENTRY']._serialized_end=241 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/types/Field_pb2.pyi b/sdk/python/feast/protos/feast/types/Field_pb2.pyi new file mode 100644 index 00000000000..28a21942378 --- /dev/null +++ b/sdk/python/feast/protos/feast/types/Field_pb2.pyi @@ -0,0 +1,73 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2018 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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 + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class Field(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class TagsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + + NAME_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + TAGS_FIELD_NUMBER: builtins.int + DESCRIPTION_FIELD_NUMBER: builtins.int + name: builtins.str + value: feast.types.Value_pb2.ValueType.Enum.ValueType + @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, + *, + name: builtins.str = ..., + value: feast.types.Value_pb2.ValueType.Enum.ValueType = ..., + 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: ... + +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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/types/Field_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/types/Value_pb2.py b/sdk/python/feast/protos/feast/types/Value_pb2.py new file mode 100644 index 00000000000..18ee3311808 --- /dev/null +++ b/sdk/python/feast/protos/feast/types/Value_pb2.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: feast/types/Value.proto +# Protobuf Python Version: 4.25.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 symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66\x65\x61st/types/Value.proto\x12\x0b\x66\x65\x61st.types\"\x97\x02\n\tValueType\"\x89\x02\n\x04\x45num\x12\x0b\n\x07INVALID\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\n\n\x06STRING\x10\x02\x12\t\n\x05INT32\x10\x03\x12\t\n\x05INT64\x10\x04\x12\n\n\x06\x44OUBLE\x10\x05\x12\t\n\x05\x46LOAT\x10\x06\x12\x08\n\x04\x42OOL\x10\x07\x12\x12\n\x0eUNIX_TIMESTAMP\x10\x08\x12\x0e\n\nBYTES_LIST\x10\x0b\x12\x0f\n\x0bSTRING_LIST\x10\x0c\x12\x0e\n\nINT32_LIST\x10\r\x12\x0e\n\nINT64_LIST\x10\x0e\x12\x0f\n\x0b\x44OUBLE_LIST\x10\x0f\x12\x0e\n\nFLOAT_LIST\x10\x10\x12\r\n\tBOOL_LIST\x10\x11\x12\x17\n\x13UNIX_TIMESTAMP_LIST\x10\x12\x12\x08\n\x04NULL\x10\x13\"\x82\x05\n\x05Value\x12\x13\n\tbytes_val\x18\x01 \x01(\x0cH\x00\x12\x14\n\nstring_val\x18\x02 \x01(\tH\x00\x12\x13\n\tint32_val\x18\x03 \x01(\x05H\x00\x12\x13\n\tint64_val\x18\x04 \x01(\x03H\x00\x12\x14\n\ndouble_val\x18\x05 \x01(\x01H\x00\x12\x13\n\tfloat_val\x18\x06 \x01(\x02H\x00\x12\x12\n\x08\x62ool_val\x18\x07 \x01(\x08H\x00\x12\x1c\n\x12unix_timestamp_val\x18\x08 \x01(\x03H\x00\x12\x30\n\x0e\x62ytes_list_val\x18\x0b \x01(\x0b\x32\x16.feast.types.BytesListH\x00\x12\x32\n\x0fstring_list_val\x18\x0c \x01(\x0b\x32\x17.feast.types.StringListH\x00\x12\x30\n\x0eint32_list_val\x18\r \x01(\x0b\x32\x16.feast.types.Int32ListH\x00\x12\x30\n\x0eint64_list_val\x18\x0e \x01(\x0b\x32\x16.feast.types.Int64ListH\x00\x12\x32\n\x0f\x64ouble_list_val\x18\x0f \x01(\x0b\x32\x17.feast.types.DoubleListH\x00\x12\x30\n\x0e\x66loat_list_val\x18\x10 \x01(\x0b\x32\x16.feast.types.FloatListH\x00\x12.\n\rbool_list_val\x18\x11 \x01(\x0b\x32\x15.feast.types.BoolListH\x00\x12\x39\n\x17unix_timestamp_list_val\x18\x12 \x01(\x0b\x32\x16.feast.types.Int64ListH\x00\x12%\n\x08null_val\x18\x13 \x01(\x0e\x32\x11.feast.types.NullH\x00\x42\x05\n\x03val\"\x18\n\tBytesList\x12\x0b\n\x03val\x18\x01 \x03(\x0c\"\x19\n\nStringList\x12\x0b\n\x03val\x18\x01 \x03(\t\"\x18\n\tInt32List\x12\x0b\n\x03val\x18\x01 \x03(\x05\"\x18\n\tInt64List\x12\x0b\n\x03val\x18\x01 \x03(\x03\"\x19\n\nDoubleList\x12\x0b\n\x03val\x18\x01 \x03(\x01\"\x18\n\tFloatList\x12\x0b\n\x03val\x18\x01 \x03(\x02\"\x17\n\x08\x42oolList\x12\x0b\n\x03val\x18\x01 \x03(\x08\"0\n\rRepeatedValue\x12\x1f\n\x03val\x18\x01 \x03(\x0b\x32\x12.feast.types.Value*\x10\n\x04Null\x12\x08\n\x04NULL\x10\x00\x42Q\n\x11\x66\x65\x61st.proto.typesB\nValueProtoZ0github.com/feast-dev/feast/go/protos/feast/typesb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'feast.types.Value_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + _globals['DESCRIPTOR']._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 + _globals['_VALUETYPE']._serialized_start=41 + _globals['_VALUETYPE']._serialized_end=320 + _globals['_VALUETYPE_ENUM']._serialized_start=55 + _globals['_VALUETYPE_ENUM']._serialized_end=320 + _globals['_VALUE']._serialized_start=323 + _globals['_VALUE']._serialized_end=965 + _globals['_BYTESLIST']._serialized_start=967 + _globals['_BYTESLIST']._serialized_end=991 + _globals['_STRINGLIST']._serialized_start=993 + _globals['_STRINGLIST']._serialized_end=1018 + _globals['_INT32LIST']._serialized_start=1020 + _globals['_INT32LIST']._serialized_end=1044 + _globals['_INT64LIST']._serialized_start=1046 + _globals['_INT64LIST']._serialized_end=1070 + _globals['_DOUBLELIST']._serialized_start=1072 + _globals['_DOUBLELIST']._serialized_end=1097 + _globals['_FLOATLIST']._serialized_start=1099 + _globals['_FLOATLIST']._serialized_end=1123 + _globals['_BOOLLIST']._serialized_start=1125 + _globals['_BOOLLIST']._serialized_end=1148 + _globals['_REPEATEDVALUE']._serialized_start=1150 + _globals['_REPEATEDVALUE']._serialized_end=1198 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/python/feast/protos/feast/types/Value_pb2.pyi b/sdk/python/feast/protos/feast/types/Value_pb2.pyi new file mode 100644 index 00000000000..15e4870e6a1 --- /dev/null +++ b/sdk/python/feast/protos/feast/types/Value_pb2.pyi @@ -0,0 +1,296 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Copyright 2018 The Feast Authors + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +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.internal.enum_type_wrapper +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +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 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + NULL: _Null.ValueType # 0 + +class Null(_Null, metaclass=_NullEnumTypeWrapper): ... + +NULL: Null.ValueType # 0 +global___Null = Null + +class ValueType(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Enum: + 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 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + INVALID: ValueType._Enum.ValueType # 0 + BYTES: ValueType._Enum.ValueType # 1 + STRING: ValueType._Enum.ValueType # 2 + INT32: ValueType._Enum.ValueType # 3 + INT64: ValueType._Enum.ValueType # 4 + DOUBLE: ValueType._Enum.ValueType # 5 + FLOAT: ValueType._Enum.ValueType # 6 + BOOL: ValueType._Enum.ValueType # 7 + UNIX_TIMESTAMP: ValueType._Enum.ValueType # 8 + BYTES_LIST: ValueType._Enum.ValueType # 11 + STRING_LIST: ValueType._Enum.ValueType # 12 + INT32_LIST: ValueType._Enum.ValueType # 13 + INT64_LIST: ValueType._Enum.ValueType # 14 + DOUBLE_LIST: ValueType._Enum.ValueType # 15 + FLOAT_LIST: ValueType._Enum.ValueType # 16 + BOOL_LIST: ValueType._Enum.ValueType # 17 + UNIX_TIMESTAMP_LIST: ValueType._Enum.ValueType # 18 + NULL: ValueType._Enum.ValueType # 19 + + class Enum(_Enum, metaclass=_EnumEnumTypeWrapper): ... + INVALID: ValueType.Enum.ValueType # 0 + BYTES: ValueType.Enum.ValueType # 1 + STRING: ValueType.Enum.ValueType # 2 + INT32: ValueType.Enum.ValueType # 3 + INT64: ValueType.Enum.ValueType # 4 + DOUBLE: ValueType.Enum.ValueType # 5 + FLOAT: ValueType.Enum.ValueType # 6 + BOOL: ValueType.Enum.ValueType # 7 + UNIX_TIMESTAMP: ValueType.Enum.ValueType # 8 + BYTES_LIST: ValueType.Enum.ValueType # 11 + STRING_LIST: ValueType.Enum.ValueType # 12 + INT32_LIST: ValueType.Enum.ValueType # 13 + INT64_LIST: ValueType.Enum.ValueType # 14 + DOUBLE_LIST: ValueType.Enum.ValueType # 15 + FLOAT_LIST: ValueType.Enum.ValueType # 16 + BOOL_LIST: ValueType.Enum.ValueType # 17 + UNIX_TIMESTAMP_LIST: ValueType.Enum.ValueType # 18 + NULL: ValueType.Enum.ValueType # 19 + + def __init__( + self, + ) -> None: ... + +global___ValueType = ValueType + +class Value(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + BYTES_VAL_FIELD_NUMBER: builtins.int + STRING_VAL_FIELD_NUMBER: builtins.int + INT32_VAL_FIELD_NUMBER: builtins.int + INT64_VAL_FIELD_NUMBER: builtins.int + DOUBLE_VAL_FIELD_NUMBER: builtins.int + FLOAT_VAL_FIELD_NUMBER: builtins.int + BOOL_VAL_FIELD_NUMBER: builtins.int + UNIX_TIMESTAMP_VAL_FIELD_NUMBER: builtins.int + BYTES_LIST_VAL_FIELD_NUMBER: builtins.int + STRING_LIST_VAL_FIELD_NUMBER: builtins.int + INT32_LIST_VAL_FIELD_NUMBER: builtins.int + INT64_LIST_VAL_FIELD_NUMBER: builtins.int + DOUBLE_LIST_VAL_FIELD_NUMBER: builtins.int + FLOAT_LIST_VAL_FIELD_NUMBER: builtins.int + BOOL_LIST_VAL_FIELD_NUMBER: builtins.int + UNIX_TIMESTAMP_LIST_VAL_FIELD_NUMBER: builtins.int + NULL_VAL_FIELD_NUMBER: builtins.int + bytes_val: builtins.bytes + string_val: builtins.str + int32_val: builtins.int + int64_val: builtins.int + double_val: builtins.float + float_val: builtins.float + bool_val: builtins.bool + unix_timestamp_val: builtins.int + @property + def bytes_list_val(self) -> global___BytesList: ... + @property + def string_list_val(self) -> global___StringList: ... + @property + def int32_list_val(self) -> global___Int32List: ... + @property + def int64_list_val(self) -> global___Int64List: ... + @property + def double_list_val(self) -> global___DoubleList: ... + @property + def float_list_val(self) -> global___FloatList: ... + @property + def bool_list_val(self) -> global___BoolList: ... + @property + def unix_timestamp_list_val(self) -> global___Int64List: ... + null_val: global___Null.ValueType + def __init__( + self, + *, + bytes_val: builtins.bytes = ..., + string_val: builtins.str = ..., + int32_val: builtins.int = ..., + int64_val: builtins.int = ..., + double_val: builtins.float = ..., + float_val: builtins.float = ..., + bool_val: builtins.bool = ..., + unix_timestamp_val: builtins.int = ..., + bytes_list_val: global___BytesList | None = ..., + string_list_val: global___StringList | None = ..., + int32_list_val: global___Int32List | None = ..., + int64_list_val: global___Int64List | None = ..., + double_list_val: global___DoubleList | None = ..., + float_list_val: global___FloatList | None = ..., + bool_list_val: global___BoolList | None = ..., + 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: ... + +global___Value = Value + +class BytesList(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VAL_FIELD_NUMBER: builtins.int + @property + def val(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: ... + def __init__( + self, + *, + val: collections.abc.Iterable[builtins.bytes] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + +global___BytesList = BytesList + +class StringList(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VAL_FIELD_NUMBER: builtins.int + @property + def val(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def __init__( + self, + *, + val: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + +global___StringList = StringList + +class Int32List(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VAL_FIELD_NUMBER: builtins.int + @property + def val(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def __init__( + self, + *, + val: collections.abc.Iterable[builtins.int] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + +global___Int32List = Int32List + +class Int64List(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VAL_FIELD_NUMBER: builtins.int + @property + def val(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def __init__( + self, + *, + val: collections.abc.Iterable[builtins.int] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + +global___Int64List = Int64List + +class DoubleList(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VAL_FIELD_NUMBER: builtins.int + @property + def val(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... + def __init__( + self, + *, + val: collections.abc.Iterable[builtins.float] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + +global___DoubleList = DoubleList + +class FloatList(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VAL_FIELD_NUMBER: builtins.int + @property + def val(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... + def __init__( + self, + *, + val: collections.abc.Iterable[builtins.float] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + +global___FloatList = FloatList + +class BoolList(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VAL_FIELD_NUMBER: builtins.int + @property + def val(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bool]: ... + def __init__( + self, + *, + val: collections.abc.Iterable[builtins.bool] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["val", b"val"]) -> None: ... + +global___BoolList = BoolList + +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 + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + VAL_FIELD_NUMBER: builtins.int + @property + def val(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Value]: ... + def __init__( + self, + *, + val: collections.abc.Iterable[global___Value] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.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 new file mode 100644 index 00000000000..2daafffebfc --- /dev/null +++ b/sdk/python/feast/protos/feast/types/Value_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + diff --git a/sdk/python/feast/protos/feast/types/__init__.py b/sdk/python/feast/protos/feast/types/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sdk/python/requirements/py3.10-ci-requirements.txt b/sdk/python/requirements/py3.10-ci-requirements.txt index 59e799ebab6..0a464000077 100644 --- a/sdk/python/requirements/py3.10-ci-requirements.txt +++ b/sdk/python/requirements/py3.10-ci-requirements.txt @@ -1,7 +1,6 @@ # This file was autogenerated by uv via the following command: # uv pip compile -p 3.10 --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.10-ci-requirements.txt -aiobotocore==2.15.0 - # via feast (setup.py) +aiobotocore==2.15.1 aiohappyeyeballs==2.4.0 # via aiohttp aiohttp==3.10.5 @@ -22,8 +21,6 @@ anyio==4.5.0 # jupyter-server # starlette # watchfiles -appnope==0.1.4 - # via ipykernel argon2-cffi==23.1.0 # via jupyter-server argon2-cffi-bindings==21.2.0 @@ -33,7 +30,6 @@ arrow==1.3.0 asn1crypto==1.5.1 # via snowflake-connector-python assertpy==1.1 - # via feast (setup.py) asttokens==2.4.1 # via stack-data async-lru==2.0.4 @@ -55,10 +51,8 @@ azure-core==1.31.0 # via # azure-identity # azure-storage-blob -azure-identity==1.17.1 - # via feast (setup.py) +azure-identity==1.18.0 azure-storage-blob==12.23.0 - # via feast (setup.py) babel==2.16.0 # via # jupyterlab-server @@ -66,14 +60,11 @@ babel==2.16.0 beautifulsoup4==4.12.3 # via nbconvert bigtree==0.21.1 - # via feast (setup.py) bleach==6.1.0 # via nbconvert -boto3==1.35.16 - # via - # feast (setup.py) - # moto -botocore==1.35.16 +boto3==1.35.23 + # via moto +botocore==1.35.23 # via # aiobotocore # boto3 @@ -81,13 +72,11 @@ botocore==1.35.16 # s3transfer build==1.2.2 # via - # feast (setup.py) # pip-tools # singlestoredb cachetools==5.5.0 # via google-auth cassandra-driver==3.29.2 - # via feast (setup.py) certifi==2024.8.30 # via # elastic-transport @@ -110,7 +99,6 @@ charset-normalizer==3.3.2 # snowflake-connector-python click==8.1.7 # via - # feast (setup.py) # dask # geomet # great-expectations @@ -119,9 +107,7 @@ click==8.1.7 cloudpickle==3.0.0 # via dask colorama==0.4.6 - # via - # feast (setup.py) - # great-expectations + # via great-expectations comm==0.2.2 # via # ipykernel @@ -130,7 +116,6 @@ coverage[toml]==7.6.1 # via pytest-cov cryptography==42.0.8 # via - # feast (setup.py) # azure-identity # azure-storage-blob # great-expectations @@ -145,9 +130,7 @@ cryptography==42.0.8 cython==3.0.11 # via thriftpy2 dask[dataframe]==2024.9.0 - # via - # feast (setup.py) - # dask-expr + # via dask-expr dask-expr==1.1.14 # via dask db-dtypes==1.3.0 @@ -159,11 +142,9 @@ decorator==5.1.1 defusedxml==0.7.1 # via nbconvert deltalake==0.20.0 - # via feast (setup.py) deprecation==2.1.0 # via python-keycloak dill==0.3.8 - # via feast (setup.py) distlib==0.3.8 # via virtualenv docker==7.1.0 @@ -175,7 +156,6 @@ duckdb==1.1.0 elastic-transport==8.15.0 # via elasticsearch elasticsearch==8.15.1 - # via feast (setup.py) entrypoints==0.4 # via altair exceptiongroup==1.2.2 @@ -188,7 +168,6 @@ execnet==2.1.1 executing==2.1.0 # via stack-data fastapi==0.115.0 - # via feast (setup.py) fastjsonschema==2.20.0 # via nbformat filelock==3.16.1 @@ -202,21 +181,18 @@ frozenlist==1.4.1 # aiohttp # aiosignal fsspec==2024.9.0 - # via - # feast (setup.py) - # dask + # via dask geomet==0.2.1.post1 # via cassandra-driver -google-api-core[grpc]==2.19.2 +google-api-core[grpc]==2.20.0 # via - # feast (setup.py) # google-cloud-bigquery # google-cloud-bigquery-storage # google-cloud-bigtable # google-cloud-core # google-cloud-datastore # google-cloud-storage -google-auth==2.34.0 +google-auth==2.35.0 # via # google-api-core # google-cloud-bigquery @@ -227,11 +203,8 @@ google-auth==2.34.0 # google-cloud-storage # kubernetes google-cloud-bigquery[pandas]==3.25.0 - # via feast (setup.py) google-cloud-bigquery-storage==2.26.0 - # via feast (setup.py) google-cloud-bigtable==2.26.0 - # via feast (setup.py) google-cloud-core==2.4.1 # via # google-cloud-bigquery @@ -239,9 +212,7 @@ google-cloud-core==2.4.1 # google-cloud-datastore # google-cloud-storage google-cloud-datastore==2.20.1 - # via feast (setup.py) google-cloud-storage==2.18.2 - # via feast (setup.py) google-crc32c==1.6.0 # via # google-cloud-storage @@ -252,17 +223,16 @@ google-resumable-media==2.7.2 # google-cloud-storage googleapis-common-protos[grpc]==1.65.0 # via - # feast (setup.py) # google-api-core # grpc-google-iam-v1 # grpcio-status great-expectations==0.18.21 - # via feast (setup.py) +greenlet==3.1.0 + # via sqlalchemy grpc-google-iam-v1==0.13.1 # via google-cloud-bigtable grpcio==1.66.1 # via - # feast (setup.py) # google-api-core # googleapis-common-protos # grpc-google-iam-v1 @@ -272,42 +242,30 @@ grpcio==1.66.1 # grpcio-testing # grpcio-tools grpcio-health-checking==1.62.3 - # via feast (setup.py) grpcio-reflection==1.62.3 - # via feast (setup.py) grpcio-status==1.62.3 # via google-api-core grpcio-testing==1.62.3 - # via feast (setup.py) grpcio-tools==1.62.3 - # via feast (setup.py) gunicorn==23.0.0 - # via feast (setup.py) h11==0.14.0 # via # httpcore # uvicorn happybase==1.2.0 - # via feast (setup.py) hazelcast-python-client==5.5.0 - # via feast (setup.py) hiredis==2.4.0 - # via feast (setup.py) httpcore==1.0.5 # via httpx httptools==0.6.1 # via uvicorn httpx==0.27.2 # via - # feast (setup.py) # jupyterlab # python-keycloak ibis-framework[duckdb]==9.5.0 - # via - # feast (setup.py) - # ibis-substrait + # via ibis-substrait ibis-substrait==4.0.1 - # via feast (setup.py) identify==2.6.1 # via pre-commit idna==3.10 @@ -343,7 +301,6 @@ jedi==0.19.1 # via ipython jinja2==3.1.4 # via - # feast (setup.py) # altair # great-expectations # jupyter-server @@ -366,7 +323,6 @@ jsonpointer==3.0.0 # jsonschema jsonschema[format-nongpl]==4.23.0 # via - # feast (setup.py) # altair # great-expectations # jupyter-events @@ -414,7 +370,6 @@ jupyterlab-widgets==3.0.13 jwcrypto==1.5.6 # via python-keycloak kubernetes==20.13.0 - # via feast (setup.py) locket==1.0.0 # via partd makefun==1.15.4 @@ -435,17 +390,13 @@ matplotlib-inline==0.1.7 mdurl==0.1.2 # via markdown-it-py minio==7.1.0 - # via feast (setup.py) mistune==3.0.2 # via # great-expectations # nbconvert mmh3==5.0.0 - # via feast (setup.py) mock==2.0.0 - # via feast (setup.py) moto==4.2.14 - # via feast (setup.py) msal==1.31.0 # via # azure-identity @@ -457,13 +408,10 @@ multidict==6.1.0 # aiohttp # yarl mypy==1.11.2 - # via - # feast (setup.py) - # sqlalchemy + # via sqlalchemy mypy-extensions==1.0.0 # via mypy mypy-protobuf==3.3.0 - # via feast (setup.py) nbclient==0.10.0 # via nbconvert nbconvert==7.16.4 @@ -486,7 +434,6 @@ notebook-shim==0.2.4 # notebook numpy==1.26.4 # via - # feast (setup.py) # altair # dask # db-dtypes @@ -521,7 +468,6 @@ packaging==24.1 # sphinx pandas==2.2.2 # via - # feast (setup.py) # altair # dask # dask-expr @@ -547,7 +493,6 @@ pexpect==4.9.0 pip==24.2 # via pip-tools pip-tools==7.4.1 - # via feast (setup.py) platformdirs==3.11.0 # via # jupyter-core @@ -560,11 +505,8 @@ ply==3.11 portalocker==2.10.1 # via msal-extensions pre-commit==3.3.1 - # via feast (setup.py) prometheus-client==0.20.0 - # via - # feast (setup.py) - # jupyter-server + # via jupyter-server prompt-toolkit==3.0.47 # via ipython proto-plus==1.24.0 @@ -575,7 +517,6 @@ proto-plus==1.24.0 # google-cloud-datastore protobuf==4.25.5 # via - # feast (setup.py) # google-api-core # google-cloud-bigquery-storage # google-cloud-bigtable @@ -591,11 +532,8 @@ protobuf==4.25.5 # proto-plus # substrait psutil==5.9.0 - # via - # feast (setup.py) - # ipykernel + # via ipykernel psycopg[binary, pool]==3.2.2 - # via feast (setup.py) psycopg-binary==3.2.2 # via psycopg psycopg-pool==3.2.3 @@ -607,14 +545,12 @@ ptyprocess==0.7.0 pure-eval==0.2.3 # via stack-data py==1.11.0 - # via feast (setup.py) py-cpuinfo==9.0.0 # via pytest-benchmark py4j==0.10.9.7 # via pyspark pyarrow==17.0.0 # via - # feast (setup.py) # dask-expr # db-dtypes # deltalake @@ -630,35 +566,28 @@ pyasn1==0.6.1 pyasn1-modules==0.4.1 # via google-auth pybindgen==0.22.1 - # via feast (setup.py) pycparser==2.22 # via cffi pydantic==2.9.2 # via - # feast (setup.py) # fastapi # great-expectations pydantic-core==2.23.4 # via pydantic pygments==2.18.0 # via - # feast (setup.py) # ipython # nbconvert # rich # sphinx pyjwt[crypto]==2.9.0 # via - # feast (setup.py) # msal # singlestoredb # snowflake-connector-python pymssql==2.3.1 - # via feast (setup.py) pymysql==1.1.1 - # via feast (setup.py) pyodbc==5.1.0 - # via feast (setup.py) pyopenssl==24.2.1 # via snowflake-connector-python pyparsing==3.1.4 @@ -668,10 +597,8 @@ pyproject-hooks==1.1.0 # build # pip-tools pyspark==3.5.2 - # via feast (setup.py) pytest==7.4.4 # via - # feast (setup.py) # pytest-benchmark # pytest-cov # pytest-env @@ -681,21 +608,13 @@ pytest==7.4.4 # pytest-timeout # pytest-xdist pytest-benchmark==3.4.1 - # via feast (setup.py) pytest-cov==5.0.0 - # via feast (setup.py) pytest-env==1.1.3 - # via feast (setup.py) pytest-lazy-fixture==0.6.3 - # via feast (setup.py) pytest-mock==1.10.4 - # via feast (setup.py) pytest-ordering==0.6 - # via feast (setup.py) pytest-timeout==1.4.2 - # via feast (setup.py) pytest-xdist==3.6.1 - # via feast (setup.py) python-dateutil==2.9.0.post0 # via # arrow @@ -713,7 +632,6 @@ python-dotenv==1.0.1 python-json-logger==2.0.7 # via jupyter-events python-keycloak==4.2.2 - # via feast (setup.py) pytz==2024.2 # via # great-expectations @@ -723,7 +641,6 @@ pytz==2024.2 # trino pyyaml==6.0.2 # via - # feast (setup.py) # dask # ibis-substrait # jupyter-events @@ -737,19 +654,15 @@ pyzmq==26.2.0 # jupyter-client # jupyter-server redis==4.6.0 - # via feast (setup.py) referencing==0.35.1 # via # jsonschema # jsonschema-specifications # jupyter-events regex==2024.9.11 - # via - # feast (setup.py) - # parsimonious + # via parsimonious requests==2.32.3 # via - # feast (setup.py) # azure-core # docker # google-api-core @@ -794,8 +707,7 @@ ruamel-yaml==0.17.40 # via great-expectations ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.6.5 - # via feast (setup.py) +ruff==0.6.6 s3transfer==0.10.2 # via boto3 scipy==1.14.1 @@ -810,7 +722,6 @@ setuptools==75.1.0 # pip-tools # singlestoredb singlestoredb==1.6.3 - # via feast (setup.py) six==1.16.0 # via # asttokens @@ -831,13 +742,11 @@ sniffio==1.3.1 snowballstemmer==2.2.0 # via sphinx snowflake-connector-python[pandas]==3.12.2 - # via feast (setup.py) sortedcontainers==2.4.0 # via snowflake-connector-python soupsieve==2.6 # via beautifulsoup4 sphinx==6.2.1 - # via feast (setup.py) sphinxcontrib-applehelp==2.0.0 # via sphinx sphinxcontrib-devhelp==2.0.0 @@ -851,11 +760,9 @@ sphinxcontrib-qthelp==2.0.0 sphinxcontrib-serializinghtml==2.0.0 # via sphinx sqlalchemy[mypy]==2.0.35 - # via feast (setup.py) sqlglot==25.20.1 # via ibis-framework sqlite-vec==0.1.1 - # via feast (setup.py) sqlparams==6.1.0 # via singlestoredb stack-data==0.6.3 @@ -865,21 +772,17 @@ starlette==0.38.5 substrait==0.23.0 # via ibis-substrait tabulate==0.9.0 - # via feast (setup.py) tenacity==8.5.0 - # via feast (setup.py) terminado==0.18.1 # via # jupyter-server # jupyter-server-terminals testcontainers==4.4.0 - # via feast (setup.py) thriftpy2==0.5.2 # via happybase tinycss2==1.3.0 # via nbconvert toml==0.10.2 - # via feast (setup.py) tomli==2.0.1 # via # build @@ -907,9 +810,7 @@ tornado==6.4.1 # notebook # terminado tqdm==4.66.5 - # via - # feast (setup.py) - # great-expectations + # via great-expectations traitlets==5.14.3 # via # comm @@ -926,37 +827,23 @@ traitlets==5.14.3 # nbconvert # nbformat trino==0.329.0 - # via feast (setup.py) typeguard==4.3.0 - # via feast (setup.py) types-cffi==1.16.0.20240331 # via types-pyopenssl types-protobuf==3.19.22 - # via - # feast (setup.py) - # mypy-protobuf + # via mypy-protobuf types-pymysql==1.1.0.20240524 - # via feast (setup.py) types-pyopenssl==24.1.0.20240722 # via types-redis types-python-dateutil==2.9.0.20240906 - # via - # feast (setup.py) - # arrow + # via arrow types-pytz==2024.2.0.20240913 - # via feast (setup.py) types-pyyaml==6.0.12.20240917 - # via feast (setup.py) types-redis==4.6.0.20240903 - # via feast (setup.py) types-requests==2.30.0.0 - # via feast (setup.py) types-setuptools==75.1.0.20240917 - # via - # feast (setup.py) - # types-cffi + # via types-cffi types-tabulate==0.9.0.20240106 - # via feast (setup.py) types-urllib3==1.26.25.14 # via types-requests typing-extensions==4.12.2 @@ -992,7 +879,6 @@ uri-template==1.3.0 # via jsonschema urllib3==2.2.3 # via - # feast (setup.py) # botocore # docker # elastic-transport @@ -1003,13 +889,10 @@ urllib3==2.2.3 # responses # testcontainers uvicorn[standard]==0.30.6 - # via feast (setup.py) uvloop==0.20.0 # via uvicorn virtualenv==20.23.0 - # via - # feast (setup.py) - # pre-commit + # via pre-commit watchfiles==0.24.0 # via uvicorn wcwidth==0.2.13 diff --git a/sdk/python/requirements/py3.10-requirements.txt b/sdk/python/requirements/py3.10-requirements.txt index 26eeca3529a..9e5eb0be728 100644 --- a/sdk/python/requirements/py3.10-requirements.txt +++ b/sdk/python/requirements/py3.10-requirements.txt @@ -11,36 +11,30 @@ attrs==24.2.0 # jsonschema # referencing bigtree==0.21.1 - # via feast (setup.py) certifi==2024.8.30 # via requests charset-normalizer==3.3.2 # via requests click==8.1.7 # via - # feast (setup.py) # dask # uvicorn cloudpickle==3.0.0 # via dask colorama==0.4.6 - # via feast (setup.py) dask[dataframe]==2024.9.0 - # via - # feast (setup.py) - # dask-expr + # via dask-expr dask-expr==1.1.14 # via dask dill==0.3.8 - # via feast (setup.py) exceptiongroup==1.2.2 # via anyio fastapi==0.115.0 - # via feast (setup.py) fsspec==2024.9.0 # via dask +greenlet==3.1.0 + # via sqlalchemy gunicorn==23.0.0 - # via feast (setup.py) h11==0.14.0 # via uvicorn httptools==0.6.1 @@ -52,9 +46,7 @@ idna==3.10 importlib-metadata==8.5.0 # via dask jinja2==3.1.4 - # via feast (setup.py) jsonschema==4.23.0 - # via feast (setup.py) jsonschema-specifications==2023.12.1 # via jsonschema locket==1.0.0 @@ -62,14 +54,12 @@ locket==1.0.0 markupsafe==2.1.5 # via jinja2 mmh3==5.0.0 - # via feast (setup.py) mypy==1.11.2 # via sqlalchemy mypy-extensions==1.0.0 # via mypy numpy==1.26.4 # via - # feast (setup.py) # dask # pandas # pyarrow @@ -79,31 +69,21 @@ packaging==24.1 # gunicorn pandas==2.2.2 # via - # feast (setup.py) # dask # dask-expr partd==1.4.2 # via dask prometheus-client==0.20.0 - # via feast (setup.py) protobuf==4.25.5 - # via feast (setup.py) psutil==6.0.0 - # via feast (setup.py) pyarrow==17.0.0 - # via - # feast (setup.py) - # dask-expr + # via dask-expr pydantic==2.9.2 - # via - # feast (setup.py) - # fastapi + # via fastapi pydantic-core==2.23.4 # via pydantic pygments==2.18.0 - # via feast (setup.py) pyjwt==2.9.0 - # via feast (setup.py) python-dateutil==2.9.0.post0 # via pandas python-dotenv==1.0.1 @@ -112,7 +92,6 @@ pytz==2024.2 # via pandas pyyaml==6.0.2 # via - # feast (setup.py) # dask # uvicorn referencing==0.35.1 @@ -120,7 +99,6 @@ referencing==0.35.1 # jsonschema # jsonschema-specifications requests==2.32.3 - # via feast (setup.py) rpds-py==0.20.0 # via # jsonschema @@ -130,15 +108,11 @@ six==1.16.0 sniffio==1.3.1 # via anyio sqlalchemy[mypy]==2.0.35 - # via feast (setup.py) starlette==0.38.5 # via fastapi tabulate==0.9.0 - # via feast (setup.py) tenacity==8.5.0 - # via feast (setup.py) toml==0.10.2 - # via feast (setup.py) tomli==2.0.1 # via mypy toolz==0.12.1 @@ -146,9 +120,7 @@ toolz==0.12.1 # dask # partd tqdm==4.66.5 - # via feast (setup.py) typeguard==4.3.0 - # via feast (setup.py) typing-extensions==4.12.2 # via # anyio @@ -164,7 +136,6 @@ tzdata==2024.1 urllib3==2.2.3 # via requests uvicorn[standard]==0.30.6 - # via feast (setup.py) uvloop==0.20.0 # via uvicorn watchfiles==0.24.0 diff --git a/sdk/python/requirements/py3.11-ci-requirements.txt b/sdk/python/requirements/py3.11-ci-requirements.txt index 9f57ecd8411..26ced829c66 100644 --- a/sdk/python/requirements/py3.11-ci-requirements.txt +++ b/sdk/python/requirements/py3.11-ci-requirements.txt @@ -1,7 +1,6 @@ # This file was autogenerated by uv via the following command: # uv pip compile -p 3.11 --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.11-ci-requirements.txt -aiobotocore==2.15.0 - # via feast (setup.py) +aiobotocore==2.15.1 aiohappyeyeballs==2.4.0 # via aiohttp aiohttp==3.10.5 @@ -22,8 +21,6 @@ anyio==4.5.0 # jupyter-server # starlette # watchfiles -appnope==0.1.4 - # via ipykernel argon2-cffi==23.1.0 # via jupyter-server argon2-cffi-bindings==21.2.0 @@ -33,7 +30,6 @@ arrow==1.3.0 asn1crypto==1.5.1 # via snowflake-connector-python assertpy==1.1 - # via feast (setup.py) asttokens==2.4.1 # via stack-data async-lru==2.0.4 @@ -53,10 +49,8 @@ azure-core==1.31.0 # via # azure-identity # azure-storage-blob -azure-identity==1.17.1 - # via feast (setup.py) +azure-identity==1.18.0 azure-storage-blob==12.23.0 - # via feast (setup.py) babel==2.16.0 # via # jupyterlab-server @@ -64,14 +58,11 @@ babel==2.16.0 beautifulsoup4==4.12.3 # via nbconvert bigtree==0.21.1 - # via feast (setup.py) bleach==6.1.0 # via nbconvert -boto3==1.35.16 - # via - # feast (setup.py) - # moto -botocore==1.35.16 +boto3==1.35.23 + # via moto +botocore==1.35.23 # via # aiobotocore # boto3 @@ -79,13 +70,11 @@ botocore==1.35.16 # s3transfer build==1.2.2 # via - # feast (setup.py) # pip-tools # singlestoredb cachetools==5.5.0 # via google-auth cassandra-driver==3.29.2 - # via feast (setup.py) certifi==2024.8.30 # via # elastic-transport @@ -108,7 +97,6 @@ charset-normalizer==3.3.2 # snowflake-connector-python click==8.1.7 # via - # feast (setup.py) # dask # geomet # great-expectations @@ -117,9 +105,7 @@ click==8.1.7 cloudpickle==3.0.0 # via dask colorama==0.4.6 - # via - # feast (setup.py) - # great-expectations + # via great-expectations comm==0.2.2 # via # ipykernel @@ -128,7 +114,6 @@ coverage[toml]==7.6.1 # via pytest-cov cryptography==42.0.8 # via - # feast (setup.py) # azure-identity # azure-storage-blob # great-expectations @@ -143,9 +128,7 @@ cryptography==42.0.8 cython==3.0.11 # via thriftpy2 dask[dataframe]==2024.9.0 - # via - # feast (setup.py) - # dask-expr + # via dask-expr dask-expr==1.1.14 # via dask db-dtypes==1.3.0 @@ -157,11 +140,9 @@ decorator==5.1.1 defusedxml==0.7.1 # via nbconvert deltalake==0.20.0 - # via feast (setup.py) deprecation==2.1.0 # via python-keycloak dill==0.3.8 - # via feast (setup.py) distlib==0.3.8 # via virtualenv docker==7.1.0 @@ -173,7 +154,6 @@ duckdb==1.1.0 elastic-transport==8.15.0 # via elasticsearch elasticsearch==8.15.1 - # via feast (setup.py) entrypoints==0.4 # via altair execnet==2.1.1 @@ -181,7 +161,6 @@ execnet==2.1.1 executing==2.1.0 # via stack-data fastapi==0.115.0 - # via feast (setup.py) fastjsonschema==2.20.0 # via nbformat filelock==3.16.1 @@ -195,21 +174,18 @@ frozenlist==1.4.1 # aiohttp # aiosignal fsspec==2024.9.0 - # via - # feast (setup.py) - # dask + # via dask geomet==0.2.1.post1 # via cassandra-driver -google-api-core[grpc]==2.19.2 +google-api-core[grpc]==2.20.0 # via - # feast (setup.py) # google-cloud-bigquery # google-cloud-bigquery-storage # google-cloud-bigtable # google-cloud-core # google-cloud-datastore # google-cloud-storage -google-auth==2.34.0 +google-auth==2.35.0 # via # google-api-core # google-cloud-bigquery @@ -220,11 +196,8 @@ google-auth==2.34.0 # google-cloud-storage # kubernetes google-cloud-bigquery[pandas]==3.25.0 - # via feast (setup.py) google-cloud-bigquery-storage==2.26.0 - # via feast (setup.py) google-cloud-bigtable==2.26.0 - # via feast (setup.py) google-cloud-core==2.4.1 # via # google-cloud-bigquery @@ -232,9 +205,7 @@ google-cloud-core==2.4.1 # google-cloud-datastore # google-cloud-storage google-cloud-datastore==2.20.1 - # via feast (setup.py) google-cloud-storage==2.18.2 - # via feast (setup.py) google-crc32c==1.6.0 # via # google-cloud-storage @@ -245,17 +216,16 @@ google-resumable-media==2.7.2 # google-cloud-storage googleapis-common-protos[grpc]==1.65.0 # via - # feast (setup.py) # google-api-core # grpc-google-iam-v1 # grpcio-status great-expectations==0.18.21 - # via feast (setup.py) +greenlet==3.1.0 + # via sqlalchemy grpc-google-iam-v1==0.13.1 # via google-cloud-bigtable grpcio==1.66.1 # via - # feast (setup.py) # google-api-core # googleapis-common-protos # grpc-google-iam-v1 @@ -265,42 +235,30 @@ grpcio==1.66.1 # grpcio-testing # grpcio-tools grpcio-health-checking==1.62.3 - # via feast (setup.py) grpcio-reflection==1.62.3 - # via feast (setup.py) grpcio-status==1.62.3 # via google-api-core grpcio-testing==1.62.3 - # via feast (setup.py) grpcio-tools==1.62.3 - # via feast (setup.py) gunicorn==23.0.0 - # via feast (setup.py) h11==0.14.0 # via # httpcore # uvicorn happybase==1.2.0 - # via feast (setup.py) hazelcast-python-client==5.5.0 - # via feast (setup.py) hiredis==2.4.0 - # via feast (setup.py) httpcore==1.0.5 # via httpx httptools==0.6.1 # via uvicorn httpx==0.27.2 # via - # feast (setup.py) # jupyterlab # python-keycloak ibis-framework[duckdb]==9.5.0 - # via - # feast (setup.py) - # ibis-substrait + # via ibis-substrait ibis-substrait==4.0.1 - # via feast (setup.py) identify==2.6.1 # via pre-commit idna==3.10 @@ -334,7 +292,6 @@ jedi==0.19.1 # via ipython jinja2==3.1.4 # via - # feast (setup.py) # altair # great-expectations # jupyter-server @@ -357,7 +314,6 @@ jsonpointer==3.0.0 # jsonschema jsonschema[format-nongpl]==4.23.0 # via - # feast (setup.py) # altair # great-expectations # jupyter-events @@ -405,7 +361,6 @@ jupyterlab-widgets==3.0.13 jwcrypto==1.5.6 # via python-keycloak kubernetes==20.13.0 - # via feast (setup.py) locket==1.0.0 # via partd makefun==1.15.4 @@ -426,17 +381,13 @@ matplotlib-inline==0.1.7 mdurl==0.1.2 # via markdown-it-py minio==7.1.0 - # via feast (setup.py) mistune==3.0.2 # via # great-expectations # nbconvert mmh3==5.0.0 - # via feast (setup.py) mock==2.0.0 - # via feast (setup.py) moto==4.2.14 - # via feast (setup.py) msal==1.31.0 # via # azure-identity @@ -448,13 +399,10 @@ multidict==6.1.0 # aiohttp # yarl mypy==1.11.2 - # via - # feast (setup.py) - # sqlalchemy + # via sqlalchemy mypy-extensions==1.0.0 # via mypy mypy-protobuf==3.3.0 - # via feast (setup.py) nbclient==0.10.0 # via nbconvert nbconvert==7.16.4 @@ -477,7 +425,6 @@ notebook-shim==0.2.4 # notebook numpy==1.26.4 # via - # feast (setup.py) # altair # dask # db-dtypes @@ -512,7 +459,6 @@ packaging==24.1 # sphinx pandas==2.2.2 # via - # feast (setup.py) # altair # dask # dask-expr @@ -538,7 +484,6 @@ pexpect==4.9.0 pip==24.2 # via pip-tools pip-tools==7.4.1 - # via feast (setup.py) platformdirs==3.11.0 # via # jupyter-core @@ -551,11 +496,8 @@ ply==3.11 portalocker==2.10.1 # via msal-extensions pre-commit==3.3.1 - # via feast (setup.py) prometheus-client==0.20.0 - # via - # feast (setup.py) - # jupyter-server + # via jupyter-server prompt-toolkit==3.0.47 # via ipython proto-plus==1.24.0 @@ -566,7 +508,6 @@ proto-plus==1.24.0 # google-cloud-datastore protobuf==4.25.5 # via - # feast (setup.py) # google-api-core # google-cloud-bigquery-storage # google-cloud-bigtable @@ -582,11 +523,8 @@ protobuf==4.25.5 # proto-plus # substrait psutil==5.9.0 - # via - # feast (setup.py) - # ipykernel + # via ipykernel psycopg[binary, pool]==3.2.2 - # via feast (setup.py) psycopg-binary==3.2.2 # via psycopg psycopg-pool==3.2.3 @@ -598,14 +536,12 @@ ptyprocess==0.7.0 pure-eval==0.2.3 # via stack-data py==1.11.0 - # via feast (setup.py) py-cpuinfo==9.0.0 # via pytest-benchmark py4j==0.10.9.7 # via pyspark pyarrow==17.0.0 # via - # feast (setup.py) # dask-expr # db-dtypes # deltalake @@ -621,35 +557,28 @@ pyasn1==0.6.1 pyasn1-modules==0.4.1 # via google-auth pybindgen==0.22.1 - # via feast (setup.py) pycparser==2.22 # via cffi pydantic==2.9.2 # via - # feast (setup.py) # fastapi # great-expectations pydantic-core==2.23.4 # via pydantic pygments==2.18.0 # via - # feast (setup.py) # ipython # nbconvert # rich # sphinx pyjwt[crypto]==2.9.0 # via - # feast (setup.py) # msal # singlestoredb # snowflake-connector-python pymssql==2.3.1 - # via feast (setup.py) pymysql==1.1.1 - # via feast (setup.py) pyodbc==5.1.0 - # via feast (setup.py) pyopenssl==24.2.1 # via snowflake-connector-python pyparsing==3.1.4 @@ -659,10 +588,8 @@ pyproject-hooks==1.1.0 # build # pip-tools pyspark==3.5.2 - # via feast (setup.py) pytest==7.4.4 # via - # feast (setup.py) # pytest-benchmark # pytest-cov # pytest-env @@ -672,21 +599,13 @@ pytest==7.4.4 # pytest-timeout # pytest-xdist pytest-benchmark==3.4.1 - # via feast (setup.py) pytest-cov==5.0.0 - # via feast (setup.py) pytest-env==1.1.3 - # via feast (setup.py) pytest-lazy-fixture==0.6.3 - # via feast (setup.py) pytest-mock==1.10.4 - # via feast (setup.py) pytest-ordering==0.6 - # via feast (setup.py) pytest-timeout==1.4.2 - # via feast (setup.py) pytest-xdist==3.6.1 - # via feast (setup.py) python-dateutil==2.9.0.post0 # via # arrow @@ -704,7 +623,6 @@ python-dotenv==1.0.1 python-json-logger==2.0.7 # via jupyter-events python-keycloak==4.2.2 - # via feast (setup.py) pytz==2024.2 # via # great-expectations @@ -714,7 +632,6 @@ pytz==2024.2 # trino pyyaml==6.0.2 # via - # feast (setup.py) # dask # ibis-substrait # jupyter-events @@ -728,19 +645,15 @@ pyzmq==26.2.0 # jupyter-client # jupyter-server redis==4.6.0 - # via feast (setup.py) referencing==0.35.1 # via # jsonschema # jsonschema-specifications # jupyter-events regex==2024.9.11 - # via - # feast (setup.py) - # parsimonious + # via parsimonious requests==2.32.3 # via - # feast (setup.py) # azure-core # docker # google-api-core @@ -785,8 +698,7 @@ ruamel-yaml==0.17.40 # via great-expectations ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.6.5 - # via feast (setup.py) +ruff==0.6.6 s3transfer==0.10.2 # via boto3 scipy==1.14.1 @@ -801,7 +713,6 @@ setuptools==75.1.0 # pip-tools # singlestoredb singlestoredb==1.6.3 - # via feast (setup.py) six==1.16.0 # via # asttokens @@ -822,13 +733,11 @@ sniffio==1.3.1 snowballstemmer==2.2.0 # via sphinx snowflake-connector-python[pandas]==3.12.2 - # via feast (setup.py) sortedcontainers==2.4.0 # via snowflake-connector-python soupsieve==2.6 # via beautifulsoup4 sphinx==6.2.1 - # via feast (setup.py) sphinxcontrib-applehelp==2.0.0 # via sphinx sphinxcontrib-devhelp==2.0.0 @@ -842,11 +751,9 @@ sphinxcontrib-qthelp==2.0.0 sphinxcontrib-serializinghtml==2.0.0 # via sphinx sqlalchemy[mypy]==2.0.35 - # via feast (setup.py) sqlglot==25.20.1 # via ibis-framework sqlite-vec==0.1.1 - # via feast (setup.py) sqlparams==6.1.0 # via singlestoredb stack-data==0.6.3 @@ -856,23 +763,17 @@ starlette==0.38.5 substrait==0.23.0 # via ibis-substrait tabulate==0.9.0 - # via feast (setup.py) tenacity==8.5.0 - # via feast (setup.py) terminado==0.18.1 # via # jupyter-server # jupyter-server-terminals testcontainers==4.4.0 - # via feast (setup.py) thriftpy2==0.5.2 # via happybase tinycss2==1.3.0 # via nbconvert toml==0.10.2 - # via feast (setup.py) -tomli==2.0.1 - # via coverage tomlkit==0.13.2 # via snowflake-connector-python toolz==0.12.1 @@ -890,9 +791,7 @@ tornado==6.4.1 # notebook # terminado tqdm==4.66.5 - # via - # feast (setup.py) - # great-expectations + # via great-expectations traitlets==5.14.3 # via # comm @@ -909,37 +808,23 @@ traitlets==5.14.3 # nbconvert # nbformat trino==0.329.0 - # via feast (setup.py) typeguard==4.3.0 - # via feast (setup.py) types-cffi==1.16.0.20240331 # via types-pyopenssl types-protobuf==3.19.22 - # via - # feast (setup.py) - # mypy-protobuf + # via mypy-protobuf types-pymysql==1.1.0.20240524 - # via feast (setup.py) types-pyopenssl==24.1.0.20240722 # via types-redis types-python-dateutil==2.9.0.20240906 - # via - # feast (setup.py) - # arrow + # via arrow types-pytz==2024.2.0.20240913 - # via feast (setup.py) types-pyyaml==6.0.12.20240917 - # via feast (setup.py) types-redis==4.6.0.20240903 - # via feast (setup.py) types-requests==2.30.0.0 - # via feast (setup.py) types-setuptools==75.1.0.20240917 - # via - # feast (setup.py) - # types-cffi + # via types-cffi types-tabulate==0.9.0.20240106 - # via feast (setup.py) types-urllib3==1.26.25.14 # via types-requests typing-extensions==4.12.2 @@ -971,7 +856,6 @@ uri-template==1.3.0 # via jsonschema urllib3==2.2.3 # via - # feast (setup.py) # botocore # docker # elastic-transport @@ -982,13 +866,10 @@ urllib3==2.2.3 # responses # testcontainers uvicorn[standard]==0.30.6 - # via feast (setup.py) uvloop==0.20.0 # via uvicorn virtualenv==20.23.0 - # via - # feast (setup.py) - # pre-commit + # via pre-commit watchfiles==0.24.0 # via uvicorn wcwidth==0.2.13 diff --git a/sdk/python/requirements/py3.11-requirements.txt b/sdk/python/requirements/py3.11-requirements.txt index 5c20e45f075..1ce25e7d5b7 100644 --- a/sdk/python/requirements/py3.11-requirements.txt +++ b/sdk/python/requirements/py3.11-requirements.txt @@ -11,34 +11,28 @@ attrs==24.2.0 # jsonschema # referencing bigtree==0.21.1 - # via feast (setup.py) certifi==2024.8.30 # via requests charset-normalizer==3.3.2 # via requests click==8.1.7 # via - # feast (setup.py) # dask # uvicorn cloudpickle==3.0.0 # via dask colorama==0.4.6 - # via feast (setup.py) dask[dataframe]==2024.9.0 - # via - # feast (setup.py) - # dask-expr + # via dask-expr dask-expr==1.1.14 # via dask dill==0.3.8 - # via feast (setup.py) fastapi==0.115.0 - # via feast (setup.py) fsspec==2024.9.0 # via dask +greenlet==3.1.0 + # via sqlalchemy gunicorn==23.0.0 - # via feast (setup.py) h11==0.14.0 # via uvicorn httptools==0.6.1 @@ -50,9 +44,7 @@ idna==3.10 importlib-metadata==8.5.0 # via dask jinja2==3.1.4 - # via feast (setup.py) jsonschema==4.23.0 - # via feast (setup.py) jsonschema-specifications==2023.12.1 # via jsonschema locket==1.0.0 @@ -60,14 +52,12 @@ locket==1.0.0 markupsafe==2.1.5 # via jinja2 mmh3==5.0.0 - # via feast (setup.py) mypy==1.11.2 # via sqlalchemy mypy-extensions==1.0.0 # via mypy numpy==1.26.4 # via - # feast (setup.py) # dask # pandas # pyarrow @@ -77,31 +67,21 @@ packaging==24.1 # gunicorn pandas==2.2.2 # via - # feast (setup.py) # dask # dask-expr partd==1.4.2 # via dask prometheus-client==0.20.0 - # via feast (setup.py) protobuf==4.25.5 - # via feast (setup.py) psutil==6.0.0 - # via feast (setup.py) pyarrow==17.0.0 - # via - # feast (setup.py) - # dask-expr + # via dask-expr pydantic==2.9.2 - # via - # feast (setup.py) - # fastapi + # via fastapi pydantic-core==2.23.4 # via pydantic pygments==2.18.0 - # via feast (setup.py) pyjwt==2.9.0 - # via feast (setup.py) python-dateutil==2.9.0.post0 # via pandas python-dotenv==1.0.1 @@ -110,7 +90,6 @@ pytz==2024.2 # via pandas pyyaml==6.0.2 # via - # feast (setup.py) # dask # uvicorn referencing==0.35.1 @@ -118,7 +97,6 @@ referencing==0.35.1 # jsonschema # jsonschema-specifications requests==2.32.3 - # via feast (setup.py) rpds-py==0.20.0 # via # jsonschema @@ -128,23 +106,17 @@ six==1.16.0 sniffio==1.3.1 # via anyio sqlalchemy[mypy]==2.0.35 - # via feast (setup.py) starlette==0.38.5 # via fastapi tabulate==0.9.0 - # via feast (setup.py) tenacity==8.5.0 - # via feast (setup.py) toml==0.10.2 - # via feast (setup.py) toolz==0.12.1 # via # dask # partd tqdm==4.66.5 - # via feast (setup.py) typeguard==4.3.0 - # via feast (setup.py) typing-extensions==4.12.2 # via # fastapi @@ -158,7 +130,6 @@ tzdata==2024.1 urllib3==2.2.3 # via requests uvicorn[standard]==0.30.6 - # via feast (setup.py) uvloop==0.20.0 # via uvicorn watchfiles==0.24.0 diff --git a/sdk/python/requirements/py3.9-ci-requirements.txt b/sdk/python/requirements/py3.9-ci-requirements.txt index bbdca890b6a..c8c92969fce 100644 --- a/sdk/python/requirements/py3.9-ci-requirements.txt +++ b/sdk/python/requirements/py3.9-ci-requirements.txt @@ -1,7 +1,6 @@ # This file was autogenerated by uv via the following command: # uv pip compile -p 3.9 --system --no-strip-extras setup.py --extra ci --output-file sdk/python/requirements/py3.9-ci-requirements.txt -aiobotocore==2.15.0 - # via feast (setup.py) +aiobotocore==2.15.1 aiohappyeyeballs==2.4.0 # via aiohttp aiohttp==3.10.5 @@ -22,8 +21,6 @@ anyio==4.5.0 # jupyter-server # starlette # watchfiles -appnope==0.1.4 - # via ipykernel argon2-cffi==23.1.0 # via jupyter-server argon2-cffi-bindings==21.2.0 @@ -33,7 +30,6 @@ arrow==1.3.0 asn1crypto==1.5.1 # via snowflake-connector-python assertpy==1.1 - # via feast (setup.py) asttokens==2.4.1 # via stack-data async-lru==2.0.4 @@ -55,10 +51,8 @@ azure-core==1.31.0 # via # azure-identity # azure-storage-blob -azure-identity==1.17.1 - # via feast (setup.py) +azure-identity==1.18.0 azure-storage-blob==12.23.0 - # via feast (setup.py) babel==2.16.0 # via # jupyterlab-server @@ -68,14 +62,11 @@ beautifulsoup4==4.12.3 bidict==0.23.1 # via ibis-framework bigtree==0.21.1 - # via feast (setup.py) bleach==6.1.0 # via nbconvert -boto3==1.35.16 - # via - # feast (setup.py) - # moto -botocore==1.35.16 +boto3==1.35.23 + # via moto +botocore==1.35.23 # via # aiobotocore # boto3 @@ -83,13 +74,11 @@ botocore==1.35.16 # s3transfer build==1.2.2 # via - # feast (setup.py) # pip-tools # singlestoredb cachetools==5.5.0 # via google-auth cassandra-driver==3.29.2 - # via feast (setup.py) certifi==2024.8.30 # via # elastic-transport @@ -112,7 +101,6 @@ charset-normalizer==3.3.2 # snowflake-connector-python click==8.1.7 # via - # feast (setup.py) # dask # geomet # great-expectations @@ -121,9 +109,7 @@ click==8.1.7 cloudpickle==3.0.0 # via dask colorama==0.4.6 - # via - # feast (setup.py) - # great-expectations + # via great-expectations comm==0.2.2 # via # ipykernel @@ -132,7 +118,6 @@ coverage[toml]==7.6.1 # via pytest-cov cryptography==42.0.8 # via - # feast (setup.py) # azure-identity # azure-storage-blob # great-expectations @@ -147,9 +132,7 @@ cryptography==42.0.8 cython==3.0.11 # via thriftpy2 dask[dataframe]==2024.8.0 - # via - # feast (setup.py) - # dask-expr + # via dask-expr dask-expr==1.1.10 # via dask db-dtypes==1.3.0 @@ -161,11 +144,9 @@ decorator==5.1.1 defusedxml==0.7.1 # via nbconvert deltalake==0.20.0 - # via feast (setup.py) deprecation==2.1.0 # via python-keycloak dill==0.3.8 - # via feast (setup.py) distlib==0.3.8 # via virtualenv docker==7.1.0 @@ -177,7 +158,6 @@ duckdb==0.10.3 elastic-transport==8.15.0 # via elasticsearch elasticsearch==8.15.1 - # via feast (setup.py) entrypoints==0.4 # via altair exceptiongroup==1.2.2 @@ -190,7 +170,6 @@ execnet==2.1.1 executing==2.1.0 # via stack-data fastapi==0.115.0 - # via feast (setup.py) fastjsonschema==2.20.0 # via nbformat filelock==3.16.1 @@ -204,21 +183,18 @@ frozenlist==1.4.1 # aiohttp # aiosignal fsspec==2024.9.0 - # via - # feast (setup.py) - # dask + # via dask geomet==0.2.1.post1 # via cassandra-driver -google-api-core[grpc]==2.19.2 +google-api-core[grpc]==2.20.0 # via - # feast (setup.py) # google-cloud-bigquery # google-cloud-bigquery-storage # google-cloud-bigtable # google-cloud-core # google-cloud-datastore # google-cloud-storage -google-auth==2.34.0 +google-auth==2.35.0 # via # google-api-core # google-cloud-bigquery @@ -229,11 +205,8 @@ google-auth==2.34.0 # google-cloud-storage # kubernetes google-cloud-bigquery[pandas]==3.25.0 - # via feast (setup.py) google-cloud-bigquery-storage==2.26.0 - # via feast (setup.py) google-cloud-bigtable==2.26.0 - # via feast (setup.py) google-cloud-core==2.4.1 # via # google-cloud-bigquery @@ -241,9 +214,7 @@ google-cloud-core==2.4.1 # google-cloud-datastore # google-cloud-storage google-cloud-datastore==2.20.1 - # via feast (setup.py) google-cloud-storage==2.18.2 - # via feast (setup.py) google-crc32c==1.6.0 # via # google-cloud-storage @@ -254,17 +225,16 @@ google-resumable-media==2.7.2 # google-cloud-storage googleapis-common-protos[grpc]==1.65.0 # via - # feast (setup.py) # google-api-core # grpc-google-iam-v1 # grpcio-status great-expectations==0.18.21 - # via feast (setup.py) +greenlet==3.1.0 + # via sqlalchemy grpc-google-iam-v1==0.13.1 # via google-cloud-bigtable grpcio==1.66.1 # via - # feast (setup.py) # google-api-core # googleapis-common-protos # grpc-google-iam-v1 @@ -274,42 +244,30 @@ grpcio==1.66.1 # grpcio-testing # grpcio-tools grpcio-health-checking==1.62.3 - # via feast (setup.py) grpcio-reflection==1.62.3 - # via feast (setup.py) grpcio-status==1.62.3 # via google-api-core grpcio-testing==1.62.3 - # via feast (setup.py) grpcio-tools==1.62.3 - # via feast (setup.py) gunicorn==23.0.0 - # via feast (setup.py) h11==0.14.0 # via # httpcore # uvicorn happybase==1.2.0 - # via feast (setup.py) hazelcast-python-client==5.5.0 - # via feast (setup.py) hiredis==2.4.0 - # via feast (setup.py) httpcore==1.0.5 # via httpx httptools==0.6.1 # via uvicorn httpx==0.27.2 # via - # feast (setup.py) # jupyterlab # python-keycloak ibis-framework[duckdb]==9.0.0 - # via - # feast (setup.py) - # ibis-substrait + # via ibis-substrait ibis-substrait==4.0.1 - # via feast (setup.py) identify==2.6.1 # via pre-commit idna==3.10 @@ -352,7 +310,6 @@ jedi==0.19.1 # via ipython jinja2==3.1.4 # via - # feast (setup.py) # altair # great-expectations # jupyter-server @@ -375,7 +332,6 @@ jsonpointer==3.0.0 # jsonschema jsonschema[format-nongpl]==4.23.0 # via - # feast (setup.py) # altair # great-expectations # jupyter-events @@ -423,7 +379,6 @@ jupyterlab-widgets==3.0.13 jwcrypto==1.5.6 # via python-keycloak kubernetes==20.13.0 - # via feast (setup.py) locket==1.0.0 # via partd makefun==1.15.4 @@ -444,17 +399,13 @@ matplotlib-inline==0.1.7 mdurl==0.1.2 # via markdown-it-py minio==7.1.0 - # via feast (setup.py) mistune==3.0.2 # via # great-expectations # nbconvert mmh3==5.0.0 - # via feast (setup.py) mock==2.0.0 - # via feast (setup.py) moto==4.2.14 - # via feast (setup.py) msal==1.31.0 # via # azure-identity @@ -466,13 +417,10 @@ multidict==6.1.0 # aiohttp # yarl mypy==1.11.2 - # via - # feast (setup.py) - # sqlalchemy + # via sqlalchemy mypy-extensions==1.0.0 # via mypy mypy-protobuf==3.3.0 - # via feast (setup.py) nbclient==0.10.0 # via nbconvert nbconvert==7.16.4 @@ -495,7 +443,6 @@ notebook-shim==0.2.4 # notebook numpy==1.26.4 # via - # feast (setup.py) # altair # dask # db-dtypes @@ -529,7 +476,6 @@ packaging==24.1 # sphinx pandas==2.2.2 # via - # feast (setup.py) # altair # dask # dask-expr @@ -555,7 +501,6 @@ pexpect==4.9.0 pip==24.2 # via pip-tools pip-tools==7.4.1 - # via feast (setup.py) platformdirs==3.11.0 # via # jupyter-core @@ -568,11 +513,8 @@ ply==3.11 portalocker==2.10.1 # via msal-extensions pre-commit==3.3.1 - # via feast (setup.py) prometheus-client==0.20.0 - # via - # feast (setup.py) - # jupyter-server + # via jupyter-server prompt-toolkit==3.0.47 # via ipython proto-plus==1.24.0 @@ -583,7 +525,6 @@ proto-plus==1.24.0 # google-cloud-datastore protobuf==4.25.5 # via - # feast (setup.py) # google-api-core # google-cloud-bigquery-storage # google-cloud-bigtable @@ -599,12 +540,9 @@ protobuf==4.25.5 # proto-plus # substrait psutil==5.9.0 - # via - # feast (setup.py) - # ipykernel -psycopg[binary, pool]==3.1.18 - # via feast (setup.py) -psycopg-binary==3.1.18 + # via ipykernel +psycopg[binary, pool]==3.2.2 +psycopg-binary==3.2.2 # via psycopg psycopg-pool==3.2.3 # via psycopg @@ -615,14 +553,12 @@ ptyprocess==0.7.0 pure-eval==0.2.3 # via stack-data py==1.11.0 - # via feast (setup.py) py-cpuinfo==9.0.0 # via pytest-benchmark py4j==0.10.9.7 # via pyspark pyarrow==16.1.0 # via - # feast (setup.py) # dask-expr # db-dtypes # deltalake @@ -638,35 +574,28 @@ pyasn1==0.6.1 pyasn1-modules==0.4.1 # via google-auth pybindgen==0.22.1 - # via feast (setup.py) pycparser==2.22 # via cffi pydantic==2.9.2 # via - # feast (setup.py) # fastapi # great-expectations pydantic-core==2.23.4 # via pydantic pygments==2.18.0 # via - # feast (setup.py) # ipython # nbconvert # rich # sphinx pyjwt[crypto]==2.9.0 # via - # feast (setup.py) # msal # singlestoredb # snowflake-connector-python pymssql==2.3.1 - # via feast (setup.py) pymysql==1.1.1 - # via feast (setup.py) pyodbc==5.1.0 - # via feast (setup.py) pyopenssl==24.2.1 # via snowflake-connector-python pyparsing==3.1.4 @@ -676,10 +605,8 @@ pyproject-hooks==1.1.0 # build # pip-tools pyspark==3.5.2 - # via feast (setup.py) pytest==7.4.4 # via - # feast (setup.py) # pytest-benchmark # pytest-cov # pytest-env @@ -689,21 +616,13 @@ pytest==7.4.4 # pytest-timeout # pytest-xdist pytest-benchmark==3.4.1 - # via feast (setup.py) pytest-cov==5.0.0 - # via feast (setup.py) pytest-env==1.1.3 - # via feast (setup.py) pytest-lazy-fixture==0.6.3 - # via feast (setup.py) pytest-mock==1.10.4 - # via feast (setup.py) pytest-ordering==0.6 - # via feast (setup.py) pytest-timeout==1.4.2 - # via feast (setup.py) pytest-xdist==3.6.1 - # via feast (setup.py) python-dateutil==2.9.0.post0 # via # arrow @@ -721,7 +640,6 @@ python-dotenv==1.0.1 python-json-logger==2.0.7 # via jupyter-events python-keycloak==4.2.2 - # via feast (setup.py) pytz==2024.2 # via # great-expectations @@ -731,7 +649,6 @@ pytz==2024.2 # trino pyyaml==6.0.2 # via - # feast (setup.py) # dask # ibis-substrait # jupyter-events @@ -745,19 +662,15 @@ pyzmq==26.2.0 # jupyter-client # jupyter-server redis==4.6.0 - # via feast (setup.py) referencing==0.35.1 # via # jsonschema # jsonschema-specifications # jupyter-events regex==2024.9.11 - # via - # feast (setup.py) - # parsimonious + # via parsimonious requests==2.32.3 # via - # feast (setup.py) # azure-core # docker # google-api-core @@ -802,8 +715,7 @@ ruamel-yaml==0.17.40 # via great-expectations ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.6.5 - # via feast (setup.py) +ruff==0.6.6 s3transfer==0.10.2 # via boto3 scipy==1.13.1 @@ -818,7 +730,6 @@ setuptools==75.1.0 # pip-tools # singlestoredb singlestoredb==1.6.3 - # via feast (setup.py) six==1.16.0 # via # asttokens @@ -839,13 +750,11 @@ sniffio==1.3.1 snowballstemmer==2.2.0 # via sphinx snowflake-connector-python[pandas]==3.12.2 - # via feast (setup.py) sortedcontainers==2.4.0 # via snowflake-connector-python soupsieve==2.6 # via beautifulsoup4 sphinx==6.2.1 - # via feast (setup.py) sphinxcontrib-applehelp==2.0.0 # via sphinx sphinxcontrib-devhelp==2.0.0 @@ -859,11 +768,9 @@ sphinxcontrib-qthelp==2.0.0 sphinxcontrib-serializinghtml==2.0.0 # via sphinx sqlalchemy[mypy]==2.0.35 - # via feast (setup.py) sqlglot==23.12.2 # via ibis-framework sqlite-vec==0.1.1 - # via feast (setup.py) sqlparams==6.1.0 # via singlestoredb stack-data==0.6.3 @@ -873,21 +780,17 @@ starlette==0.38.5 substrait==0.23.0 # via ibis-substrait tabulate==0.9.0 - # via feast (setup.py) tenacity==8.5.0 - # via feast (setup.py) terminado==0.18.1 # via # jupyter-server # jupyter-server-terminals testcontainers==4.4.0 - # via feast (setup.py) thriftpy2==0.5.2 # via happybase tinycss2==1.3.0 # via nbconvert toml==0.10.2 - # via feast (setup.py) tomli==2.0.1 # via # build @@ -915,9 +818,7 @@ tornado==6.4.1 # notebook # terminado tqdm==4.66.5 - # via - # feast (setup.py) - # great-expectations + # via great-expectations traitlets==5.14.3 # via # comm @@ -934,37 +835,23 @@ traitlets==5.14.3 # nbconvert # nbformat trino==0.329.0 - # via feast (setup.py) typeguard==4.3.0 - # via feast (setup.py) types-cffi==1.16.0.20240331 # via types-pyopenssl types-protobuf==3.19.22 - # via - # feast (setup.py) - # mypy-protobuf + # via mypy-protobuf types-pymysql==1.1.0.20240524 - # via feast (setup.py) types-pyopenssl==24.1.0.20240722 # via types-redis types-python-dateutil==2.9.0.20240906 - # via - # feast (setup.py) - # arrow + # via arrow types-pytz==2024.2.0.20240913 - # via feast (setup.py) types-pyyaml==6.0.12.20240917 - # via feast (setup.py) types-redis==4.6.0.20240903 - # via feast (setup.py) types-requests==2.30.0.0 - # via feast (setup.py) types-setuptools==75.1.0.20240917 - # via - # feast (setup.py) - # types-cffi + # via types-cffi types-tabulate==0.9.0.20240106 - # via feast (setup.py) types-urllib3==1.26.25.14 # via types-requests typing-extensions==4.12.2 @@ -1002,7 +889,6 @@ uri-template==1.3.0 # via jsonschema urllib3==1.26.20 # via - # feast (setup.py) # botocore # docker # elastic-transport @@ -1014,13 +900,10 @@ urllib3==1.26.20 # snowflake-connector-python # testcontainers uvicorn[standard]==0.30.6 - # via feast (setup.py) uvloop==0.20.0 # via uvicorn virtualenv==20.23.0 - # via - # feast (setup.py) - # pre-commit + # via pre-commit watchfiles==0.24.0 # via uvicorn wcwidth==0.2.13 diff --git a/sdk/python/requirements/py3.9-requirements.txt b/sdk/python/requirements/py3.9-requirements.txt index 7ffef84b235..857d7d72bf7 100644 --- a/sdk/python/requirements/py3.9-requirements.txt +++ b/sdk/python/requirements/py3.9-requirements.txt @@ -11,36 +11,30 @@ attrs==24.2.0 # jsonschema # referencing bigtree==0.21.1 - # via feast (setup.py) certifi==2024.8.30 # via requests charset-normalizer==3.3.2 # via requests click==8.1.7 # via - # feast (setup.py) # dask # uvicorn cloudpickle==3.0.0 # via dask colorama==0.4.6 - # via feast (setup.py) dask[dataframe]==2024.8.0 - # via - # feast (setup.py) - # dask-expr + # via dask-expr dask-expr==1.1.10 # via dask dill==0.3.8 - # via feast (setup.py) exceptiongroup==1.2.2 # via anyio fastapi==0.115.0 - # via feast (setup.py) fsspec==2024.9.0 # via dask +greenlet==3.1.0 + # via sqlalchemy gunicorn==23.0.0 - # via feast (setup.py) h11==0.14.0 # via uvicorn httptools==0.6.1 @@ -54,9 +48,7 @@ importlib-metadata==8.5.0 # dask # typeguard jinja2==3.1.4 - # via feast (setup.py) jsonschema==4.23.0 - # via feast (setup.py) jsonschema-specifications==2023.12.1 # via jsonschema locket==1.0.0 @@ -64,14 +56,12 @@ locket==1.0.0 markupsafe==2.1.5 # via jinja2 mmh3==5.0.0 - # via feast (setup.py) mypy==1.11.2 # via sqlalchemy mypy-extensions==1.0.0 # via mypy numpy==1.26.4 # via - # feast (setup.py) # dask # pandas # pyarrow @@ -81,31 +71,21 @@ packaging==24.1 # gunicorn pandas==2.2.2 # via - # feast (setup.py) # dask # dask-expr partd==1.4.2 # via dask prometheus-client==0.20.0 - # via feast (setup.py) protobuf==4.25.5 - # via feast (setup.py) psutil==6.0.0 - # via feast (setup.py) pyarrow==17.0.0 - # via - # feast (setup.py) - # dask-expr + # via dask-expr pydantic==2.9.2 - # via - # feast (setup.py) - # fastapi + # via fastapi pydantic-core==2.23.4 # via pydantic pygments==2.18.0 - # via feast (setup.py) pyjwt==2.9.0 - # via feast (setup.py) python-dateutil==2.9.0.post0 # via pandas python-dotenv==1.0.1 @@ -114,7 +94,6 @@ pytz==2024.2 # via pandas pyyaml==6.0.2 # via - # feast (setup.py) # dask # uvicorn referencing==0.35.1 @@ -122,7 +101,6 @@ referencing==0.35.1 # jsonschema # jsonschema-specifications requests==2.32.3 - # via feast (setup.py) rpds-py==0.20.0 # via # jsonschema @@ -132,15 +110,11 @@ six==1.16.0 sniffio==1.3.1 # via anyio sqlalchemy[mypy]==2.0.35 - # via feast (setup.py) starlette==0.38.5 # via fastapi tabulate==0.9.0 - # via feast (setup.py) tenacity==8.5.0 - # via feast (setup.py) toml==0.10.2 - # via feast (setup.py) tomli==2.0.1 # via mypy toolz==0.12.1 @@ -148,9 +122,7 @@ toolz==0.12.1 # dask # partd tqdm==4.66.5 - # via feast (setup.py) typeguard==4.3.0 - # via feast (setup.py) typing-extensions==4.12.2 # via # anyio @@ -167,7 +139,6 @@ tzdata==2024.1 urllib3==2.2.3 # via requests uvicorn[standard]==0.30.6 - # via feast (setup.py) uvloop==0.20.0 # via uvicorn watchfiles==0.24.0 diff --git a/setup.py b/setup.py index 5a6f18db353..c62fb8c50f8 100644 --- a/setup.py +++ b/setup.py @@ -11,20 +11,12 @@ # 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 glob import os import pathlib import re import shutil -import subprocess -import sys -from pathlib import Path -from setuptools import Command, find_packages, setup -from setuptools.command.build_ext import build_ext as _build_ext -from setuptools.command.build_py import build_py -from setuptools.command.develop import develop -from setuptools.command.install import install +from setuptools import find_packages, setup NAME = "feast" DESCRIPTION = "Python SDK for Feast" @@ -157,7 +149,6 @@ "virtualenv==20.23.0", "cryptography>=35.0,<43", "ruff>=0.3.3", - "protobuf<5", "mypy-protobuf>=3.1", "grpcio-tools>=1.56.2,<2", "grpcio-testing>=1.56.2,<2", @@ -244,107 +235,8 @@ else: use_scm_version = None -PROTO_SUBDIRS = ["core", "registry", "serving", "types", "storage"] PYTHON_CODE_PREFIX = "sdk/python" - -class BuildPythonProtosCommand(Command): - description = "Builds the proto files into Python files." - user_options = [ - ("inplace", "i", "Write generated proto files to source directory."), - ] - - def initialize_options(self): - self.python_protoc = [ - sys.executable, - "-m", - "grpc_tools.protoc", - ] # find_executable("protoc") - self.proto_folder = os.path.join(repo_root, "protos") - self.sub_folders = PROTO_SUBDIRS - self.build_lib = None - self.inplace = 0 - - def finalize_options(self): - self.set_undefined_options("build", ("build_lib", "build_lib")) - - @property - def python_folder(self): - if self.inplace: - return os.path.join( - os.path.dirname(__file__) or os.getcwd(), "sdk/python/feast/protos" - ) - - return os.path.join(self.build_lib, "feast/protos") - - def _generate_python_protos(self, path: str): - proto_files = glob.glob(os.path.join(self.proto_folder, path)) - Path(self.python_folder).mkdir(parents=True, exist_ok=True) - subprocess.check_call( - self.python_protoc - + [ - "-I", - self.proto_folder, - "--python_out", - self.python_folder, - "--grpc_python_out", - self.python_folder, - "--mypy_out", - self.python_folder, - ] - + proto_files - ) - - def run(self): - for sub_folder in self.sub_folders: - self._generate_python_protos(f"feast/{sub_folder}/*.proto") - # We need the __init__ files for each of the generated subdirs - # so that they are regular packages, and don't need the `--namespace-packages` flags - # when being typechecked using mypy. - with open(f"{self.python_folder}/feast/{sub_folder}/__init__.py", "w"): - pass - - with open(f"{self.python_folder}/__init__.py", "w"): - pass - with open(f"{self.python_folder}/feast/__init__.py", "w"): - pass - - for path in Path(self.python_folder).rglob("*.py"): - for folder in self.sub_folders: - # Read in the file - with open(path, "r") as file: - filedata = file.read() - - # Replace the target string - filedata = filedata.replace( - f"from feast.{folder}", f"from feast.protos.feast.{folder}" - ) - - # Write the file out again - with open(path, "w") as file: - file.write(filedata) - - -class BuildCommand(build_py): - """Custom build command.""" - - def run(self): - self.run_command("build_python_protos") - - self.run_command("build_ext") - build_py.run(self) - - -class DevelopCommand(develop): - """Custom develop command.""" - - def run(self): - self.reinitialize_command("build_python_protos", inplace=1) - self.run_command("build_python_protos") - - develop.run(self) - - setup( name=NAME, author=AUTHOR, @@ -358,8 +250,6 @@ def run(self): ), package_dir={"": PYTHON_CODE_PREFIX}, install_requires=REQUIRED, - # https://stackoverflow.com/questions/28509965/setuptools-development-requirements - # Install dev requirements with: pip install -e .[dev] extras_require={ "dev": DEV_REQUIRED, "ci": CI_REQUIRED, @@ -402,17 +292,7 @@ def run(self): entry_points={"console_scripts": ["feast=feast.cli:cli"]}, use_scm_version=use_scm_version, setup_requires=[ - # snowflake udf packages refer to conda packages, not pypi libraries. Conda stack is still on protobuf 4 - # So we are adding protobuf<5 as a requirement - "protobuf<5", - "grpcio-tools>=1.56.2,<2", - "mypy-protobuf>=3.1", - "pybindgen==0.22.0", - "setuptools_scm>=6.2", - ], - cmdclass={ - "build_python_protos": BuildPythonProtosCommand, - "build_py": BuildCommand, - "develop": DevelopCommand, - }, + "pybindgen==0.22.0", #TODO do we need this? + "setuptools_scm>=6.2", #TODO do we need this? + ] )