"""
@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
