"""
@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 snapchat.research.gbml.graph_schema_pb2
import sys
if sys.version_info >= (3, 8):
    import typing as typing_extensions
else:
    import typing_extensions
[docs]
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor 
[docs]
class Label(google.protobuf.message.Message):
[docs]
    DESCRIPTOR: google.protobuf.descriptor.Descriptor 
[docs]
    LABEL_TYPE_FIELD_NUMBER: builtins.int 
[docs]
    LABEL_FIELD_NUMBER: builtins.int 
[docs]
    label_type: builtins.str 
    def __init__(
        self,
        *,
        label_type: builtins.str = ...,
        label: builtins.int = ...,
    ) -> None: ...
[docs]
    def ClearField(self, field_name: typing_extensions.Literal["label", b"label", "label_type", b"label_type"]) -> None: ... 
 
[docs]
class RootedNodeNeighborhood(google.protobuf.message.Message):
    """Store each node and related neighborhood subgraph
    can be used for storing random negative samples
    """
[docs]
    DESCRIPTOR: google.protobuf.descriptor.Descriptor 
[docs]
    ROOT_NODE_FIELD_NUMBER: builtins.int 
[docs]
    NEIGHBORHOOD_FIELD_NUMBER: builtins.int 
    @property
[docs]
    def root_node(self) -> snapchat.research.gbml.graph_schema_pb2.Node:
        """The main node for the sample""" 
    @property
[docs]
    def neighborhood(self) -> snapchat.research.gbml.graph_schema_pb2.Graph:
        """k-hop neighborhood of the root_node""" 
    def __init__(
        self,
        *,
        root_node: snapchat.research.gbml.graph_schema_pb2.Node | None = ...,
        neighborhood: snapchat.research.gbml.graph_schema_pb2.Graph | None = ...,
    ) -> None: ...
[docs]
    def HasField(self, field_name: typing_extensions.Literal["neighborhood", b"neighborhood", "root_node", b"root_node"]) -> builtins.bool: ... 
[docs]
    def ClearField(self, field_name: typing_extensions.Literal["neighborhood", b"neighborhood", "root_node", b"root_node"]) -> None: ... 
 
[docs]
global___RootedNodeNeighborhood = RootedNodeNeighborhood 
[docs]
class SupervisedNodeClassificationSample(google.protobuf.message.Message):
[docs]
    DESCRIPTOR: google.protobuf.descriptor.Descriptor 
[docs]
    ROOT_NODE_FIELD_NUMBER: builtins.int 
[docs]
    NEIGHBORHOOD_FIELD_NUMBER: builtins.int 
[docs]
    ROOT_NODE_LABELS_FIELD_NUMBER: builtins.int 
    @property
[docs]
    def root_node(self) -> snapchat.research.gbml.graph_schema_pb2.Node:
        """The main node for the sample""" 
    @property
[docs]
    def neighborhood(self) -> snapchat.research.gbml.graph_schema_pb2.Graph:
        """k-hop neighborhood of the root_node""" 
    @property
[docs]
    def root_node_labels(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Label]: ... 
    def __init__(
        self,
        *,
        root_node: snapchat.research.gbml.graph_schema_pb2.Node | None = ...,
        neighborhood: snapchat.research.gbml.graph_schema_pb2.Graph | None = ...,
        root_node_labels: collections.abc.Iterable[global___Label] | None = ...,
    ) -> None: ...
[docs]
    def HasField(self, field_name: typing_extensions.Literal["neighborhood", b"neighborhood", "root_node", b"root_node"]) -> builtins.bool: ... 
[docs]
    def ClearField(self, field_name: typing_extensions.Literal["neighborhood", b"neighborhood", "root_node", b"root_node", "root_node_labels", b"root_node_labels"]) -> None: ... 
 
[docs]
global___SupervisedNodeClassificationSample = SupervisedNodeClassificationSample 
[docs]
class NodeAnchorBasedLinkPredictionSample(google.protobuf.message.Message):
[docs]
    DESCRIPTOR: google.protobuf.descriptor.Descriptor 
[docs]
    ROOT_NODE_FIELD_NUMBER: builtins.int 
[docs]
    HARD_NEG_EDGES_FIELD_NUMBER: builtins.int 
[docs]
    POS_EDGES_FIELD_NUMBER: builtins.int 
[docs]
    NEG_EDGES_FIELD_NUMBER: builtins.int 
[docs]
    NEIGHBORHOOD_FIELD_NUMBER: builtins.int 
    @property
[docs]
    def root_node(self) -> snapchat.research.gbml.graph_schema_pb2.Node:
        """The main node for the sample""" 
    @property
[docs]
    def hard_neg_edges(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[snapchat.research.gbml.graph_schema_pb2.Edge]:
        """Hard negative edges: destination node is a negative example to the root_node
        Can be "fake" edges i.e. destination is a non neighbor of the root_node or user-defined
        """ 
    @property
[docs]
    def pos_edges(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[snapchat.research.gbml.graph_schema_pb2.Edge]:
        """Positive edges: destination node is a positive example to the root_node
        Can be "real" edges i.e. destination is a neighbor of the root_node or user-defined
        """ 
    @property
[docs]
    def neg_edges(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[snapchat.research.gbml.graph_schema_pb2.Edge]:
        """(DEPRECATED) Random negatives edges, now provided by batch-shared random negatives
        in RootedNodeNeighborhood and in-batch negatives
        """ 
    @property
[docs]
    def neighborhood(self) -> snapchat.research.gbml.graph_schema_pb2.Graph:
        """The khop neighborhoods of root/pos/neg nodes are merged in proto definition,
        therefore in training additional fast tree search needs to be done to retrieve
        the relevant k hop neighborhoods for each node
        """ 
    def __init__(
        self,
        *,
        root_node: snapchat.research.gbml.graph_schema_pb2.Node | None = ...,
        hard_neg_edges: collections.abc.Iterable[snapchat.research.gbml.graph_schema_pb2.Edge] | None = ...,
        pos_edges: collections.abc.Iterable[snapchat.research.gbml.graph_schema_pb2.Edge] | None = ...,
        neg_edges: collections.abc.Iterable[snapchat.research.gbml.graph_schema_pb2.Edge] | None = ...,
        neighborhood: snapchat.research.gbml.graph_schema_pb2.Graph | None = ...,
    ) -> None: ...
[docs]
    def HasField(self, field_name: typing_extensions.Literal["neighborhood", b"neighborhood", "root_node", b"root_node"]) -> builtins.bool: ... 
[docs]
    def ClearField(self, field_name: typing_extensions.Literal["hard_neg_edges", b"hard_neg_edges", "neg_edges", b"neg_edges", "neighborhood", b"neighborhood", "pos_edges", b"pos_edges", "root_node", b"root_node"]) -> None: ... 
 
[docs]
global___NodeAnchorBasedLinkPredictionSample = NodeAnchorBasedLinkPredictionSample 
[docs]
class SupervisedLinkBasedTaskSample(google.protobuf.message.Message):
    """The SupervisedLinkBasedTaskSample can be used for both
    Link-classification-based link prediction tasks & Edge level prediction tasks
    """
[docs]
    DESCRIPTOR: google.protobuf.descriptor.Descriptor 
[docs]
    ROOT_EDGE_FIELD_NUMBER: builtins.int 
[docs]
    NEIGHBORHOOD_FIELD_NUMBER: builtins.int 
[docs]
    ROOT_EDGE_LABELS_FIELD_NUMBER: builtins.int 
    @property
[docs]
    def root_edge(self) -> snapchat.research.gbml.graph_schema_pb2.Edge:
        """The main edge for the sample""" 
    @property
[docs]
    def neighborhood(self) -> snapchat.research.gbml.graph_schema_pb2.Graph:
        """Contains the k hop neighborhood for both nodes composing the root_edge""" 
    @property
[docs]
    def root_edge_labels(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Label]:
        """Allow multiple edge labels with different type ex. Snap view as target label, and Story view as target label""" 
    def __init__(
        self,
        *,
        root_edge: snapchat.research.gbml.graph_schema_pb2.Edge | None = ...,
        neighborhood: snapchat.research.gbml.graph_schema_pb2.Graph | None = ...,
        root_edge_labels: collections.abc.Iterable[global___Label] | None = ...,
    ) -> None: ...
[docs]
    def HasField(self, field_name: typing_extensions.Literal["neighborhood", b"neighborhood", "root_edge", b"root_edge"]) -> builtins.bool: ... 
[docs]
    def ClearField(self, field_name: typing_extensions.Literal["neighborhood", b"neighborhood", "root_edge", b"root_edge", "root_edge_labels", b"root_edge_labels"]) -> None: ... 
 
[docs]
global___SupervisedLinkBasedTaskSample = SupervisedLinkBasedTaskSample