"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import google.protobuf.struct_pb2
import typing
import typing_extensions

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

class SimpleType(_SimpleType, metaclass=_SimpleTypeEnumTypeWrapper):
    """Define a set of simple types."""
    pass
class _SimpleType:
    V = typing.NewType('V', builtins.int)
class _SimpleTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SimpleType.V], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
    NONE = SimpleType.V(0)
    INTEGER = SimpleType.V(1)
    FLOAT = SimpleType.V(2)
    STRING = SimpleType.V(3)
    BOOLEAN = SimpleType.V(4)
    DATETIME = SimpleType.V(5)
    DURATION = SimpleType.V(6)
    BINARY = SimpleType.V(7)
    ERROR = SimpleType.V(8)
    STRUCT = SimpleType.V(9)

NONE = SimpleType.V(0)
INTEGER = SimpleType.V(1)
FLOAT = SimpleType.V(2)
STRING = SimpleType.V(3)
BOOLEAN = SimpleType.V(4)
DATETIME = SimpleType.V(5)
DURATION = SimpleType.V(6)
BINARY = SimpleType.V(7)
ERROR = SimpleType.V(8)
STRUCT = SimpleType.V(9)
global___SimpleType = SimpleType


class SchemaType(google.protobuf.message.Message):
    """Defines schema columns and types to strongly type-validate schemas interoperability."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class SchemaColumn(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        class SchemaColumnType(_SchemaColumnType, metaclass=_SchemaColumnTypeEnumTypeWrapper):
            pass
        class _SchemaColumnType:
            V = typing.NewType('V', builtins.int)
        class _SchemaColumnTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SchemaColumnType.V], builtins.type):
            DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
            INTEGER = SchemaType.SchemaColumn.SchemaColumnType.V(0)
            FLOAT = SchemaType.SchemaColumn.SchemaColumnType.V(1)
            STRING = SchemaType.SchemaColumn.SchemaColumnType.V(2)
            BOOLEAN = SchemaType.SchemaColumn.SchemaColumnType.V(3)
            DATETIME = SchemaType.SchemaColumn.SchemaColumnType.V(4)
            DURATION = SchemaType.SchemaColumn.SchemaColumnType.V(5)

        INTEGER = SchemaType.SchemaColumn.SchemaColumnType.V(0)
        FLOAT = SchemaType.SchemaColumn.SchemaColumnType.V(1)
        STRING = SchemaType.SchemaColumn.SchemaColumnType.V(2)
        BOOLEAN = SchemaType.SchemaColumn.SchemaColumnType.V(3)
        DATETIME = SchemaType.SchemaColumn.SchemaColumnType.V(4)
        DURATION = SchemaType.SchemaColumn.SchemaColumnType.V(5)

        NAME_FIELD_NUMBER: builtins.int
        TYPE_FIELD_NUMBER: builtins.int
        name: typing.Text = ...
        """A unique name -within the schema type- for the column"""

        type: global___SchemaType.SchemaColumn.SchemaColumnType.V = ...
        """The column type. This allows a limited set of types currently."""

        def __init__(self,
            *,
            name : typing.Text = ...,
            type : global___SchemaType.SchemaColumn.SchemaColumnType.V = ...,
            ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"name",b"name",u"type",b"type"]) -> None: ...

    COLUMNS_FIELD_NUMBER: builtins.int
    @property
    def columns(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SchemaType.SchemaColumn]:
        """A list of ordered columns this schema comprises of."""
        pass
    def __init__(self,
        *,
        columns : typing.Optional[typing.Iterable[global___SchemaType.SchemaColumn]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"columns",b"columns"]) -> None: ...
global___SchemaType = SchemaType

class BlobType(google.protobuf.message.Message):
    """Defines type behavior for blob objects"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class BlobDimensionality(_BlobDimensionality, metaclass=_BlobDimensionalityEnumTypeWrapper):
        pass
    class _BlobDimensionality:
        V = typing.NewType('V', builtins.int)
    class _BlobDimensionalityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_BlobDimensionality.V], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
        SINGLE = BlobType.BlobDimensionality.V(0)
        MULTIPART = BlobType.BlobDimensionality.V(1)

    SINGLE = BlobType.BlobDimensionality.V(0)
    MULTIPART = BlobType.BlobDimensionality.V(1)

    FORMAT_FIELD_NUMBER: builtins.int
    DIMENSIONALITY_FIELD_NUMBER: builtins.int
    format: typing.Text = ...
    """Format can be a free form string understood by SDK/UI etc like
    csv, parquet etc
    """

    dimensionality: global___BlobType.BlobDimensionality.V = ...
    def __init__(self,
        *,
        format : typing.Text = ...,
        dimensionality : global___BlobType.BlobDimensionality.V = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"dimensionality",b"dimensionality",u"format",b"format"]) -> None: ...
global___BlobType = BlobType

class EnumType(google.protobuf.message.Message):
    """Enables declaring enum types, with predefined string values
    For len(values) > 0, the first value in the ordered list is regarded as the default value. If you wish
    To provide no defaults, make the first value as undefined.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    VALUES_FIELD_NUMBER: builtins.int
    @property
    def values(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]:
        """Predefined set of enum values."""
        pass
    def __init__(self,
        *,
        values : typing.Optional[typing.Iterable[typing.Text]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"values",b"values"]) -> None: ...
global___EnumType = EnumType

class SumType(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    SUMMANDS_FIELD_NUMBER: builtins.int
    @property
    def summands(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___LiteralType]: ...
    def __init__(self,
        *,
        summands : typing.Optional[typing.Iterable[global___LiteralType]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"summands",b"summands"]) -> None: ...
global___SumType = SumType

class RecordType(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class RecordField(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        NAME_FIELD_NUMBER: builtins.int
        TYPE_FIELD_NUMBER: builtins.int
        name: typing.Text = ...
        @property
        def type(self) -> global___LiteralType: ...
        def __init__(self,
            *,
            name : typing.Text = ...,
            type : typing.Optional[global___LiteralType] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal[u"type",b"type"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"name",b"name",u"type",b"type"]) -> None: ...

    FIELDS_FIELD_NUMBER: builtins.int
    @property
    def fields(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RecordType.RecordField]: ...
    def __init__(self,
        *,
        fields : typing.Optional[typing.Iterable[global___RecordType.RecordField]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"fields",b"fields"]) -> None: ...
global___RecordType = RecordType

class LiteralType(google.protobuf.message.Message):
    """Defines a strong type to allow type checking between interfaces."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    SIMPLE_FIELD_NUMBER: builtins.int
    SCHEMA_FIELD_NUMBER: builtins.int
    COLLECTION_TYPE_FIELD_NUMBER: builtins.int
    MAP_VALUE_TYPE_FIELD_NUMBER: builtins.int
    BLOB_FIELD_NUMBER: builtins.int
    ENUM_TYPE_FIELD_NUMBER: builtins.int
    SUM_FIELD_NUMBER: builtins.int
    RECORD_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    simple: global___SimpleType.V = ...
    """A simple type that can be compared one-to-one with another."""

    @property
    def schema(self) -> global___SchemaType:
        """A complex type that requires matching of inner fields."""
        pass
    @property
    def collection_type(self) -> global___LiteralType:
        """Defines the type of the value of a collection. Only homogeneous collections are allowed."""
        pass
    @property
    def map_value_type(self) -> global___LiteralType:
        """Defines the type of the value of a map type. The type of the key is always a string."""
        pass
    @property
    def blob(self) -> global___BlobType:
        """A blob might have specialized implementation details depending on associated metadata."""
        pass
    @property
    def enum_type(self) -> global___EnumType:
        """Defines an enum with pre-defined string values."""
        pass
    @property
    def sum(self) -> global___SumType: ...
    @property
    def record(self) -> global___RecordType: ...
    @property
    def metadata(self) -> google.protobuf.struct_pb2.Struct:
        """This field contains type metadata that is descriptive of the type, but is NOT considered in type-checking.  This might be used by
        consumers to identify special behavior or display extended information for the type.
        """
        pass
    def __init__(self,
        *,
        simple : global___SimpleType.V = ...,
        schema : typing.Optional[global___SchemaType] = ...,
        collection_type : typing.Optional[global___LiteralType] = ...,
        map_value_type : typing.Optional[global___LiteralType] = ...,
        blob : typing.Optional[global___BlobType] = ...,
        enum_type : typing.Optional[global___EnumType] = ...,
        sum : typing.Optional[global___SumType] = ...,
        record : typing.Optional[global___RecordType] = ...,
        metadata : typing.Optional[google.protobuf.struct_pb2.Struct] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"blob",b"blob",u"collection_type",b"collection_type",u"enum_type",b"enum_type",u"map_value_type",b"map_value_type",u"metadata",b"metadata",u"record",b"record",u"schema",b"schema",u"simple",b"simple",u"sum",b"sum",u"type",b"type"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"blob",b"blob",u"collection_type",b"collection_type",u"enum_type",b"enum_type",u"map_value_type",b"map_value_type",u"metadata",b"metadata",u"record",b"record",u"schema",b"schema",u"simple",b"simple",u"sum",b"sum",u"type",b"type"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal[u"type",b"type"]) -> typing.Optional[typing_extensions.Literal["simple","schema","collection_type","map_value_type","blob","enum_type","sum","record"]]: ...
global___LiteralType = LiteralType

class OutputReference(google.protobuf.message.Message):
    """A reference to an output produced by a node. The type can be retrieved -and validated- from
    the underlying interface of the node.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    NODE_ID_FIELD_NUMBER: builtins.int
    VAR_FIELD_NUMBER: builtins.int
    node_id: typing.Text = ...
    """Node id must exist at the graph layer."""

    var: typing.Text = ...
    """Variable name must refer to an output variable for the node."""

    def __init__(self,
        *,
        node_id : typing.Text = ...,
        var : typing.Text = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"node_id",b"node_id",u"var",b"var"]) -> None: ...
global___OutputReference = OutputReference

class Error(google.protobuf.message.Message):
    """Represents an error thrown from a node."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    FAILED_NODE_ID_FIELD_NUMBER: builtins.int
    MESSAGE_FIELD_NUMBER: builtins.int
    failed_node_id: typing.Text = ...
    """The node id that threw the error."""

    message: typing.Text = ...
    """Error message thrown."""

    def __init__(self,
        *,
        failed_node_id : typing.Text = ...,
        message : typing.Text = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"failed_node_id",b"failed_node_id",u"message",b"message"]) -> None: ...
global___Error = Error
