"""
@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.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
    WRITE_TO_ONLINE_STORE_FIELD_NUMBER: builtins.int
    ENTITIES_FIELD_NUMBER: builtins.int
    ENTITY_COLUMNS_FIELD_NUMBER: builtins.int
    SINGLETON_FIELD_NUMBER: builtins.int
    AGGREGATIONS_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
    write_to_online_store: builtins.bool
    @property
    def entities(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of names of entities associated with this feature view."""
    @property
    def entity_columns(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Feature_pb2.FeatureSpecV2]:
        """List of specifications for each entity defined as part of this feature view."""
    singleton: builtins.bool
    @property
    def aggregations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Aggregation_pb2.Aggregation]:
        """Aggregation definitions"""
    def __init__(
        self,
        *,
        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 = ...,
        write_to_online_store: builtins.bool = ...,
        entities: collections.abc.Iterable[builtins.str] | None = ...,
        entity_columns: collections.abc.Iterable[feast.core.Feature_pb2.FeatureSpecV2] | None = ...,
        singleton: builtins.bool = ...,
        aggregations: collections.abc.Iterable[feast.core.Aggregation_pb2.Aggregation] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["feature_transformation", b"feature_transformation", "user_defined_function", b"user_defined_function"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["aggregations", b"aggregations", "description", b"description", "entities", b"entities", "entity_columns", b"entity_columns", "feature_transformation", b"feature_transformation", "features", b"features", "mode", b"mode", "name", b"name", "owner", b"owner", "project", b"project", "singleton", b"singleton", "sources", b"sources", "tags", b"tags", "user_defined_function", b"user_defined_function", "write_to_online_store", b"write_to_online_store"]) -> None: ...

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

class OnDemandFeatureViewList(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ONDEMANDFEATUREVIEWS_FIELD_NUMBER: builtins.int
    @property
    def ondemandfeatureviews(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___OnDemandFeatureView]: ...
    def __init__(
        self,
        *,
        ondemandfeatureviews: collections.abc.Iterable[global___OnDemandFeatureView] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["ondemandfeatureviews", b"ondemandfeatureviews"]) -> None: ...

global___OnDemandFeatureViewList = OnDemandFeatureViewList
