"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import flyteidl.core.literals_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 typing
import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor = ...

class CreateDatasetRequest(google.protobuf.message.Message):
    """
    Request message for creating a Dataset.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    DATASET_FIELD_NUMBER: builtins.int
    @property
    def dataset(self) -> global___Dataset: ...
    def __init__(self,
        *,
        dataset : typing.Optional[global___Dataset] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"dataset",b"dataset"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"dataset",b"dataset"]) -> None: ...
global___CreateDatasetRequest = CreateDatasetRequest

class CreateDatasetResponse(google.protobuf.message.Message):
    """
    Response message for creating a Dataset
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    def __init__(self,
        ) -> None: ...
global___CreateDatasetResponse = CreateDatasetResponse

class GetDatasetRequest(google.protobuf.message.Message):
    """
    Request message for retrieving a Dataset. The Dataset is retrieved by it's unique identifier
    which is a combination of several fields.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    DATASET_FIELD_NUMBER: builtins.int
    @property
    def dataset(self) -> global___DatasetID: ...
    def __init__(self,
        *,
        dataset : typing.Optional[global___DatasetID] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"dataset",b"dataset"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"dataset",b"dataset"]) -> None: ...
global___GetDatasetRequest = GetDatasetRequest

class GetDatasetResponse(google.protobuf.message.Message):
    """
    Response message for retrieving a Dataset. The response will include the metadata for the
    Dataset.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    DATASET_FIELD_NUMBER: builtins.int
    @property
    def dataset(self) -> global___Dataset: ...
    def __init__(self,
        *,
        dataset : typing.Optional[global___Dataset] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"dataset",b"dataset"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"dataset",b"dataset"]) -> None: ...
global___GetDatasetResponse = GetDatasetResponse

class GetArtifactRequest(google.protobuf.message.Message):
    """
    Request message for retrieving an Artifact. Retrieve an artifact based on a query handle that
    can be one of artifact_id or tag. The result returned will include the artifact data and metadata
    associated with the artifact.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    DATASET_FIELD_NUMBER: builtins.int
    ARTIFACT_ID_FIELD_NUMBER: builtins.int
    TAG_NAME_FIELD_NUMBER: builtins.int
    @property
    def dataset(self) -> global___DatasetID: ...
    artifact_id: typing.Text = ...
    tag_name: typing.Text = ...
    def __init__(self,
        *,
        dataset : typing.Optional[global___DatasetID] = ...,
        artifact_id : typing.Text = ...,
        tag_name : typing.Text = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"artifact_id",b"artifact_id",u"dataset",b"dataset",u"query_handle",b"query_handle",u"tag_name",b"tag_name"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"artifact_id",b"artifact_id",u"dataset",b"dataset",u"query_handle",b"query_handle",u"tag_name",b"tag_name"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal[u"query_handle",b"query_handle"]) -> typing.Optional[typing_extensions.Literal["artifact_id","tag_name"]]: ...
global___GetArtifactRequest = GetArtifactRequest

class GetArtifactResponse(google.protobuf.message.Message):
    """
    Response message for retrieving an Artifact. The result returned will include the artifact data
    and metadata associated with the artifact.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    ARTIFACT_FIELD_NUMBER: builtins.int
    @property
    def artifact(self) -> global___Artifact: ...
    def __init__(self,
        *,
        artifact : typing.Optional[global___Artifact] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"artifact",b"artifact"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"artifact",b"artifact"]) -> None: ...
global___GetArtifactResponse = GetArtifactResponse

class CreateArtifactRequest(google.protobuf.message.Message):
    """
    Request message for creating an Artifact and its associated artifact Data.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    ARTIFACT_FIELD_NUMBER: builtins.int
    @property
    def artifact(self) -> global___Artifact: ...
    def __init__(self,
        *,
        artifact : typing.Optional[global___Artifact] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"artifact",b"artifact"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"artifact",b"artifact"]) -> None: ...
global___CreateArtifactRequest = CreateArtifactRequest

class CreateArtifactResponse(google.protobuf.message.Message):
    """
    Response message for creating an Artifact.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    def __init__(self,
        ) -> None: ...
global___CreateArtifactResponse = CreateArtifactResponse

class AddTagRequest(google.protobuf.message.Message):
    """
    Request message for tagging an Artifact.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    TAG_FIELD_NUMBER: builtins.int
    @property
    def tag(self) -> global___Tag: ...
    def __init__(self,
        *,
        tag : typing.Optional[global___Tag] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"tag",b"tag"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"tag",b"tag"]) -> None: ...
global___AddTagRequest = AddTagRequest

class AddTagResponse(google.protobuf.message.Message):
    """
    Response message for tagging an Artifact.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    def __init__(self,
        ) -> None: ...
global___AddTagResponse = AddTagResponse

class ListArtifactsRequest(google.protobuf.message.Message):
    """List the artifacts that belong to the Dataset, optionally filtered using filtered expression."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    DATASET_FIELD_NUMBER: builtins.int
    FILTER_FIELD_NUMBER: builtins.int
    PAGINATION_FIELD_NUMBER: builtins.int
    @property
    def dataset(self) -> global___DatasetID:
        """Use a datasetID for which you want to retrieve the artifacts"""
        pass
    @property
    def filter(self) -> global___FilterExpression:
        """Apply the filter expression to this query"""
        pass
    @property
    def pagination(self) -> global___PaginationOptions:
        """Pagination options to get a page of artifacts"""
        pass
    def __init__(self,
        *,
        dataset : typing.Optional[global___DatasetID] = ...,
        filter : typing.Optional[global___FilterExpression] = ...,
        pagination : typing.Optional[global___PaginationOptions] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"dataset",b"dataset",u"filter",b"filter",u"pagination",b"pagination"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"dataset",b"dataset",u"filter",b"filter",u"pagination",b"pagination"]) -> None: ...
global___ListArtifactsRequest = ListArtifactsRequest

class ListArtifactsResponse(google.protobuf.message.Message):
    """Response to list artifacts"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    ARTIFACTS_FIELD_NUMBER: builtins.int
    NEXT_TOKEN_FIELD_NUMBER: builtins.int
    @property
    def artifacts(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Artifact]:
        """The list of artifacts"""
        pass
    next_token: typing.Text = ...
    """Token to use to request the next page, pass this into the next requests PaginationOptions"""

    def __init__(self,
        *,
        artifacts : typing.Optional[typing.Iterable[global___Artifact]] = ...,
        next_token : typing.Text = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"artifacts",b"artifacts",u"next_token",b"next_token"]) -> None: ...
global___ListArtifactsResponse = ListArtifactsResponse

class ListDatasetsRequest(google.protobuf.message.Message):
    """List the datasets for the given query"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    FILTER_FIELD_NUMBER: builtins.int
    PAGINATION_FIELD_NUMBER: builtins.int
    @property
    def filter(self) -> global___FilterExpression:
        """Apply the filter expression to this query"""
        pass
    @property
    def pagination(self) -> global___PaginationOptions:
        """Pagination options to get a page of datasets"""
        pass
    def __init__(self,
        *,
        filter : typing.Optional[global___FilterExpression] = ...,
        pagination : typing.Optional[global___PaginationOptions] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"filter",b"filter",u"pagination",b"pagination"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"filter",b"filter",u"pagination",b"pagination"]) -> None: ...
global___ListDatasetsRequest = ListDatasetsRequest

class ListDatasetsResponse(google.protobuf.message.Message):
    """List the datasets response with token for next pagination"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    DATASETS_FIELD_NUMBER: builtins.int
    NEXT_TOKEN_FIELD_NUMBER: builtins.int
    @property
    def datasets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Dataset]:
        """The list of datasets"""
        pass
    next_token: typing.Text = ...
    """Token to use to request the next page, pass this into the next requests PaginationOptions"""

    def __init__(self,
        *,
        datasets : typing.Optional[typing.Iterable[global___Dataset]] = ...,
        next_token : typing.Text = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"datasets",b"datasets",u"next_token",b"next_token"]) -> None: ...
global___ListDatasetsResponse = ListDatasetsResponse

class GetOrReserveArtifactRequest(google.protobuf.message.Message):
    """Get the Artifact or try to reserve a spot if the Artifact does not exist."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    DATASET_ID_FIELD_NUMBER: builtins.int
    TAG_NAME_FIELD_NUMBER: builtins.int
    OWNER_ID_FIELD_NUMBER: builtins.int
    @property
    def dataset_id(self) -> global___DatasetID: ...
    tag_name: typing.Text = ...
    owner_id: typing.Text = ...
    def __init__(self,
        *,
        dataset_id : typing.Optional[global___DatasetID] = ...,
        tag_name : typing.Text = ...,
        owner_id : typing.Text = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"dataset_id",b"dataset_id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"dataset_id",b"dataset_id",u"owner_id",b"owner_id",u"tag_name",b"tag_name"]) -> None: ...
global___GetOrReserveArtifactRequest = GetOrReserveArtifactRequest

class ReservationStatus(google.protobuf.message.Message):
    """Whether we successfully reserve a spot."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class State(_State, metaclass=_StateEnumTypeWrapper):
        pass
    class _State:
        V = typing.NewType('V', builtins.int)
    class _StateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_State.V], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
        ACQUIRED = ReservationStatus.State.V(0)
        """Acquired the reservation successfully."""

        ALREADY_IN_PROGRESS = ReservationStatus.State.V(1)
        """Indicates an existing active reservation exist for a different owner_id."""


    ACQUIRED = ReservationStatus.State.V(0)
    """Acquired the reservation successfully."""

    ALREADY_IN_PROGRESS = ReservationStatus.State.V(1)
    """Indicates an existing active reservation exist for a different owner_id."""


    STATE_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    OWNER_ID_FIELD_NUMBER: builtins.int
    state: global___ReservationStatus.State.V = ...
    @property
    def metadata(self) -> global___Metadata: ...
    owner_id: typing.Text = ...
    def __init__(self,
        *,
        state : global___ReservationStatus.State.V = ...,
        metadata : typing.Optional[global___Metadata] = ...,
        owner_id : typing.Text = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"metadata",b"metadata"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"metadata",b"metadata",u"owner_id",b"owner_id",u"state",b"state"]) -> None: ...
global___ReservationStatus = ReservationStatus

class GetOrReserveArtifactResponse(google.protobuf.message.Message):
    """Response to get artifact or reserve spot."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    ARTIFACT_FIELD_NUMBER: builtins.int
    RESERVATION_STATUS_FIELD_NUMBER: builtins.int
    @property
    def artifact(self) -> global___Artifact: ...
    @property
    def reservation_status(self) -> global___ReservationStatus: ...
    def __init__(self,
        *,
        artifact : typing.Optional[global___Artifact] = ...,
        reservation_status : typing.Optional[global___ReservationStatus] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"artifact",b"artifact",u"reservation_status",b"reservation_status",u"value",b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"artifact",b"artifact",u"reservation_status",b"reservation_status",u"value",b"value"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal[u"value",b"value"]) -> typing.Optional[typing_extensions.Literal["artifact","reservation_status"]]: ...
global___GetOrReserveArtifactResponse = GetOrReserveArtifactResponse

class ExtendReservationRequest(google.protobuf.message.Message):
    """Request to extend reservation"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    DATASET_ID_FIELD_NUMBER: builtins.int
    TAG_NAME_FIELD_NUMBER: builtins.int
    OWNER_ID_FIELD_NUMBER: builtins.int
    @property
    def dataset_id(self) -> global___DatasetID: ...
    tag_name: typing.Text = ...
    owner_id: typing.Text = ...
    def __init__(self,
        *,
        dataset_id : typing.Optional[global___DatasetID] = ...,
        tag_name : typing.Text = ...,
        owner_id : typing.Text = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"dataset_id",b"dataset_id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"dataset_id",b"dataset_id",u"owner_id",b"owner_id",u"tag_name",b"tag_name"]) -> None: ...
global___ExtendReservationRequest = ExtendReservationRequest

class ExtendReservationResponse(google.protobuf.message.Message):
    """Response to extend reservation"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    def __init__(self,
        ) -> None: ...
global___ExtendReservationResponse = ExtendReservationResponse

class ReleaseReservationRequest(google.protobuf.message.Message):
    """Request to release reservation"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    DATASET_ID_FIELD_NUMBER: builtins.int
    TAG_NAME_FIELD_NUMBER: builtins.int
    OWNER_ID_FIELD_NUMBER: builtins.int
    @property
    def dataset_id(self) -> global___DatasetID: ...
    tag_name: typing.Text = ...
    owner_id: typing.Text = ...
    def __init__(self,
        *,
        dataset_id : typing.Optional[global___DatasetID] = ...,
        tag_name : typing.Text = ...,
        owner_id : typing.Text = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"dataset_id",b"dataset_id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"dataset_id",b"dataset_id",u"owner_id",b"owner_id",u"tag_name",b"tag_name"]) -> None: ...
global___ReleaseReservationRequest = ReleaseReservationRequest

class ReleaseReservationResponse(google.protobuf.message.Message):
    """Response to release reservation"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    def __init__(self,
        ) -> None: ...
global___ReleaseReservationResponse = ReleaseReservationResponse

class Dataset(google.protobuf.message.Message):
    """
    Dataset message. It is uniquely identified by DatasetID.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    ID_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    PARTITIONKEYS_FIELD_NUMBER: builtins.int
    @property
    def id(self) -> global___DatasetID: ...
    @property
    def metadata(self) -> global___Metadata: ...
    @property
    def partitionKeys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
    def __init__(self,
        *,
        id : typing.Optional[global___DatasetID] = ...,
        metadata : typing.Optional[global___Metadata] = ...,
        partitionKeys : typing.Optional[typing.Iterable[typing.Text]] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"id",b"id",u"metadata",b"metadata"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"id",b"id",u"metadata",b"metadata",u"partitionKeys",b"partitionKeys"]) -> None: ...
global___Dataset = Dataset

class Partition(google.protobuf.message.Message):
    """
    An artifact could have multiple partitions and each partition can have an arbitrary string key/value pair
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    KEY_FIELD_NUMBER: builtins.int
    VALUE_FIELD_NUMBER: builtins.int
    key: typing.Text = ...
    value: typing.Text = ...
    def __init__(self,
        *,
        key : typing.Text = ...,
        value : typing.Text = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"key",b"key",u"value",b"value"]) -> None: ...
global___Partition = Partition

class DatasetID(google.protobuf.message.Message):
    """
    DatasetID message that is composed of several string fields.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    PROJECT_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    DOMAIN_FIELD_NUMBER: builtins.int
    VERSION_FIELD_NUMBER: builtins.int
    UUID_FIELD_NUMBER: builtins.int
    project: typing.Text = ...
    """The name of the project"""

    name: typing.Text = ...
    """The name of the dataset"""

    domain: typing.Text = ...
    """The domain (eg. environment)"""

    version: typing.Text = ...
    """Version of the data schema"""

    UUID: typing.Text = ...
    """UUID for the dataset (if set the above fields are optional)"""

    def __init__(self,
        *,
        project : typing.Text = ...,
        name : typing.Text = ...,
        domain : typing.Text = ...,
        version : typing.Text = ...,
        UUID : typing.Text = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"UUID",b"UUID",u"domain",b"domain",u"name",b"name",u"project",b"project",u"version",b"version"]) -> None: ...
global___DatasetID = DatasetID

class Artifact(google.protobuf.message.Message):
    """
    Artifact message. It is composed of several string fields.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    ID_FIELD_NUMBER: builtins.int
    DATASET_FIELD_NUMBER: builtins.int
    DATA_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    PARTITIONS_FIELD_NUMBER: builtins.int
    TAGS_FIELD_NUMBER: builtins.int
    CREATED_AT_FIELD_NUMBER: builtins.int
    id: typing.Text = ...
    """The unique ID of the artifact"""

    @property
    def dataset(self) -> global___DatasetID:
        """The Dataset that the artifact belongs to"""
        pass
    @property
    def data(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ArtifactData]:
        """A list of data that is associated with the artifact"""
        pass
    @property
    def metadata(self) -> global___Metadata:
        """Free-form metadata associated with the artifact"""
        pass
    @property
    def partitions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Partition]: ...
    @property
    def tags(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Tag]: ...
    @property
    def created_at(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """creation timestamp of artifact, autogenerated by service"""
        pass
    def __init__(self,
        *,
        id : typing.Text = ...,
        dataset : typing.Optional[global___DatasetID] = ...,
        data : typing.Optional[typing.Iterable[global___ArtifactData]] = ...,
        metadata : typing.Optional[global___Metadata] = ...,
        partitions : typing.Optional[typing.Iterable[global___Partition]] = ...,
        tags : typing.Optional[typing.Iterable[global___Tag]] = ...,
        created_at : typing.Optional[google.protobuf.timestamp_pb2.Timestamp] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"created_at",b"created_at",u"dataset",b"dataset",u"metadata",b"metadata"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"created_at",b"created_at",u"data",b"data",u"dataset",b"dataset",u"id",b"id",u"metadata",b"metadata",u"partitions",b"partitions",u"tags",b"tags"]) -> None: ...
global___Artifact = Artifact

class ArtifactData(google.protobuf.message.Message):
    """
    ArtifactData that belongs to an artifact
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    NAME_FIELD_NUMBER: builtins.int
    VALUE_FIELD_NUMBER: builtins.int
    name: typing.Text = ...
    @property
    def value(self) -> flyteidl.core.literals_pb2.Literal: ...
    def __init__(self,
        *,
        name : typing.Text = ...,
        value : typing.Optional[flyteidl.core.literals_pb2.Literal] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"value",b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"name",b"name",u"value",b"value"]) -> None: ...
global___ArtifactData = ArtifactData

class Tag(google.protobuf.message.Message):
    """
    Tag message that is unique to a Dataset. It is associated to a single artifact and
    can be retrieved by name later.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    NAME_FIELD_NUMBER: builtins.int
    ARTIFACT_ID_FIELD_NUMBER: builtins.int
    DATASET_FIELD_NUMBER: builtins.int
    name: typing.Text = ...
    """Name of tag"""

    artifact_id: typing.Text = ...
    """The tagged artifact"""

    @property
    def dataset(self) -> global___DatasetID:
        """The Dataset that this tag belongs to"""
        pass
    def __init__(self,
        *,
        name : typing.Text = ...,
        artifact_id : typing.Text = ...,
        dataset : typing.Optional[global___DatasetID] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"dataset",b"dataset"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"artifact_id",b"artifact_id",u"dataset",b"dataset",u"name",b"name"]) -> None: ...
global___Tag = Tag

class Metadata(google.protobuf.message.Message):
    """
    Metadata representation for artifacts and datasets
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class KeyMapEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: typing.Text = ...
        value: typing.Text = ...
        def __init__(self,
            *,
            key : typing.Text = ...,
            value : typing.Text = ...,
            ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"key",b"key",u"value",b"value"]) -> None: ...

    KEY_MAP_FIELD_NUMBER: builtins.int
    @property
    def key_map(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]:
        """key map is a dictionary of key/val strings that represent metadata"""
        pass
    def __init__(self,
        *,
        key_map : typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"key_map",b"key_map"]) -> None: ...
global___Metadata = Metadata

class FilterExpression(google.protobuf.message.Message):
    """Filter expression that is composed of a combination of single filters"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    FILTERS_FIELD_NUMBER: builtins.int
    @property
    def filters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SinglePropertyFilter]: ...
    def __init__(self,
        *,
        filters : typing.Optional[typing.Iterable[global___SinglePropertyFilter]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"filters",b"filters"]) -> None: ...
global___FilterExpression = FilterExpression

class SinglePropertyFilter(google.protobuf.message.Message):
    """A single property to filter on."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class ComparisonOperator(_ComparisonOperator, metaclass=_ComparisonOperatorEnumTypeWrapper):
        """as use-cases come up we can add more operators, ex: gte, like, not eq etc."""
        pass
    class _ComparisonOperator:
        V = typing.NewType('V', builtins.int)
    class _ComparisonOperatorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ComparisonOperator.V], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
        EQUALS = SinglePropertyFilter.ComparisonOperator.V(0)

    EQUALS = SinglePropertyFilter.ComparisonOperator.V(0)

    TAG_FILTER_FIELD_NUMBER: builtins.int
    PARTITION_FILTER_FIELD_NUMBER: builtins.int
    ARTIFACT_FILTER_FIELD_NUMBER: builtins.int
    DATASET_FILTER_FIELD_NUMBER: builtins.int
    OPERATOR_FIELD_NUMBER: builtins.int
    @property
    def tag_filter(self) -> global___TagPropertyFilter: ...
    @property
    def partition_filter(self) -> global___PartitionPropertyFilter: ...
    @property
    def artifact_filter(self) -> global___ArtifactPropertyFilter: ...
    @property
    def dataset_filter(self) -> global___DatasetPropertyFilter: ...
    operator: global___SinglePropertyFilter.ComparisonOperator.V = ...
    """field 10 in case we add more entities to query"""

    def __init__(self,
        *,
        tag_filter : typing.Optional[global___TagPropertyFilter] = ...,
        partition_filter : typing.Optional[global___PartitionPropertyFilter] = ...,
        artifact_filter : typing.Optional[global___ArtifactPropertyFilter] = ...,
        dataset_filter : typing.Optional[global___DatasetPropertyFilter] = ...,
        operator : global___SinglePropertyFilter.ComparisonOperator.V = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"artifact_filter",b"artifact_filter",u"dataset_filter",b"dataset_filter",u"partition_filter",b"partition_filter",u"property_filter",b"property_filter",u"tag_filter",b"tag_filter"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"artifact_filter",b"artifact_filter",u"dataset_filter",b"dataset_filter",u"operator",b"operator",u"partition_filter",b"partition_filter",u"property_filter",b"property_filter",u"tag_filter",b"tag_filter"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal[u"property_filter",b"property_filter"]) -> typing.Optional[typing_extensions.Literal["tag_filter","partition_filter","artifact_filter","dataset_filter"]]: ...
global___SinglePropertyFilter = SinglePropertyFilter

class ArtifactPropertyFilter(google.protobuf.message.Message):
    """Artifact properties we can filter by"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    ARTIFACT_ID_FIELD_NUMBER: builtins.int
    artifact_id: typing.Text = ...
    def __init__(self,
        *,
        artifact_id : typing.Text = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"artifact_id",b"artifact_id",u"property",b"property"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"artifact_id",b"artifact_id",u"property",b"property"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal[u"property",b"property"]) -> typing.Optional[typing_extensions.Literal["artifact_id"]]: ...
global___ArtifactPropertyFilter = ArtifactPropertyFilter

class TagPropertyFilter(google.protobuf.message.Message):
    """Tag properties we can filter by"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    TAG_NAME_FIELD_NUMBER: builtins.int
    tag_name: typing.Text = ...
    def __init__(self,
        *,
        tag_name : typing.Text = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"property",b"property",u"tag_name",b"tag_name"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"property",b"property",u"tag_name",b"tag_name"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal[u"property",b"property"]) -> typing.Optional[typing_extensions.Literal["tag_name"]]: ...
global___TagPropertyFilter = TagPropertyFilter

class PartitionPropertyFilter(google.protobuf.message.Message):
    """Partition properties we can filter by"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    KEY_VAL_FIELD_NUMBER: builtins.int
    @property
    def key_val(self) -> global___KeyValuePair: ...
    def __init__(self,
        *,
        key_val : typing.Optional[global___KeyValuePair] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"key_val",b"key_val",u"property",b"property"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"key_val",b"key_val",u"property",b"property"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal[u"property",b"property"]) -> typing.Optional[typing_extensions.Literal["key_val"]]: ...
global___PartitionPropertyFilter = PartitionPropertyFilter

class KeyValuePair(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    KEY_FIELD_NUMBER: builtins.int
    VALUE_FIELD_NUMBER: builtins.int
    key: typing.Text = ...
    value: typing.Text = ...
    def __init__(self,
        *,
        key : typing.Text = ...,
        value : typing.Text = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"key",b"key",u"value",b"value"]) -> None: ...
global___KeyValuePair = KeyValuePair

class DatasetPropertyFilter(google.protobuf.message.Message):
    """Dataset properties we can filter by"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    PROJECT_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    DOMAIN_FIELD_NUMBER: builtins.int
    VERSION_FIELD_NUMBER: builtins.int
    project: typing.Text = ...
    name: typing.Text = ...
    domain: typing.Text = ...
    version: typing.Text = ...
    def __init__(self,
        *,
        project : typing.Text = ...,
        name : typing.Text = ...,
        domain : typing.Text = ...,
        version : typing.Text = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"domain",b"domain",u"name",b"name",u"project",b"project",u"property",b"property",u"version",b"version"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"domain",b"domain",u"name",b"name",u"project",b"project",u"property",b"property",u"version",b"version"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal[u"property",b"property"]) -> typing.Optional[typing_extensions.Literal["project","name","domain","version"]]: ...
global___DatasetPropertyFilter = DatasetPropertyFilter

class PaginationOptions(google.protobuf.message.Message):
    """Pagination options for making list requests"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class SortOrder(_SortOrder, metaclass=_SortOrderEnumTypeWrapper):
        pass
    class _SortOrder:
        V = typing.NewType('V', builtins.int)
    class _SortOrderEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SortOrder.V], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
        DESCENDING = PaginationOptions.SortOrder.V(0)
        ASCENDING = PaginationOptions.SortOrder.V(1)

    DESCENDING = PaginationOptions.SortOrder.V(0)
    ASCENDING = PaginationOptions.SortOrder.V(1)

    class SortKey(_SortKey, metaclass=_SortKeyEnumTypeWrapper):
        pass
    class _SortKey:
        V = typing.NewType('V', builtins.int)
    class _SortKeyEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SortKey.V], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
        CREATION_TIME = PaginationOptions.SortKey.V(0)

    CREATION_TIME = PaginationOptions.SortKey.V(0)

    LIMIT_FIELD_NUMBER: builtins.int
    TOKEN_FIELD_NUMBER: builtins.int
    SORTKEY_FIELD_NUMBER: builtins.int
    SORTORDER_FIELD_NUMBER: builtins.int
    limit: builtins.int = ...
    """the max number of results to return"""

    token: typing.Text = ...
    """the token to pass to fetch the next page"""

    sortKey: global___PaginationOptions.SortKey.V = ...
    """the property that we want to sort the results by"""

    sortOrder: global___PaginationOptions.SortOrder.V = ...
    """the sort order of the results"""

    def __init__(self,
        *,
        limit : builtins.int = ...,
        token : typing.Text = ...,
        sortKey : global___PaginationOptions.SortKey.V = ...,
        sortOrder : global___PaginationOptions.SortOrder.V = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"limit",b"limit",u"sortKey",b"sortKey",u"sortOrder",b"sortOrder",u"token",b"token"]) -> None: ...
global___PaginationOptions = PaginationOptions
