"""
@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 sys
if sys.version_info >= (3, 8):
    import typing as typing_extensions
else:
    import typing_extensions
[docs]
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor 
[docs]
class Node(google.protobuf.message.Message):
[docs]
    DESCRIPTOR: google.protobuf.descriptor.Descriptor 
[docs]
    NODE_ID_FIELD_NUMBER: builtins.int 
[docs]
    CONDENSED_NODE_TYPE_FIELD_NUMBER: builtins.int 
[docs]
    FEATURE_VALUES_FIELD_NUMBER: builtins.int 
    """should be unique for nodes per node_type"""
[docs]
    condensed_node_type: builtins.int 
    """condensed_node_type are integer values that correspond 1:1 to a node_type: string
    See GraphMetadata for mapping. If not provided, assumed homogeneous.
    """
    @property
[docs]
    def feature_values(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """feature_values for a node""" 
    def __init__(
        self,
        *,
        node_id: builtins.int = ...,
        condensed_node_type: builtins.int | None = ...,
        feature_values: collections.abc.Iterable[builtins.float] | None = ...,
    ) -> None: ...
[docs]
    def HasField(self, field_name: typing_extensions.Literal["_condensed_node_type", b"_condensed_node_type", "condensed_node_type", b"condensed_node_type"]) -> builtins.bool: ... 
[docs]
    def ClearField(self, field_name: typing_extensions.Literal["_condensed_node_type", b"_condensed_node_type", "condensed_node_type", b"condensed_node_type", "feature_values", b"feature_values", "node_id", b"node_id"]) -> None: ... 
[docs]
    def WhichOneof(self, oneof_group: typing_extensions.Literal["_condensed_node_type", b"_condensed_node_type"]) -> typing_extensions.Literal["condensed_node_type"] | None: ... 
 
[docs]
class Edge(google.protobuf.message.Message):
[docs]
    DESCRIPTOR: google.protobuf.descriptor.Descriptor 
[docs]
    SRC_NODE_ID_FIELD_NUMBER: builtins.int 
[docs]
    DST_NODE_ID_FIELD_NUMBER: builtins.int 
[docs]
    CONDENSED_EDGE_TYPE_FIELD_NUMBER: builtins.int 
[docs]
    FEATURE_VALUES_FIELD_NUMBER: builtins.int 
[docs]
    src_node_id: builtins.int 
    """the src_node_id & dst_node_id that the edge spans across
    node types for these nodes is encoded in condensed_edge_type
    """
[docs]
    dst_node_id: builtins.int 
[docs]
    condensed_edge_type: builtins.int 
    """Graph is assumed homogeneous if condensed_edge_type is not provided
    We store condensed representation here instead of EdgeType to optimize
    on storage space. Otherwise we would be storing atleast 3*32bytes of information : (
       src_node_type: string, dst_node_type: string, edge_type: string
    )
    See GraphMetadata for mapping
    """
    @property
[docs]
    def feature_values(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]:
        """features_values for an edge""" 
    def __init__(
        self,
        *,
        src_node_id: builtins.int = ...,
        dst_node_id: builtins.int = ...,
        condensed_edge_type: builtins.int | None = ...,
        feature_values: collections.abc.Iterable[builtins.float] | None = ...,
    ) -> None: ...
[docs]
    def HasField(self, field_name: typing_extensions.Literal["_condensed_edge_type", b"_condensed_edge_type", "condensed_edge_type", b"condensed_edge_type"]) -> builtins.bool: ... 
[docs]
    def ClearField(self, field_name: typing_extensions.Literal["_condensed_edge_type", b"_condensed_edge_type", "condensed_edge_type", b"condensed_edge_type", "dst_node_id", b"dst_node_id", "feature_values", b"feature_values", "src_node_id", b"src_node_id"]) -> None: ... 
[docs]
    def WhichOneof(self, oneof_group: typing_extensions.Literal["_condensed_edge_type", b"_condensed_edge_type"]) -> typing_extensions.Literal["condensed_edge_type"] | None: ... 
 
[docs]
class EdgeType(google.protobuf.message.Message):
[docs]
    DESCRIPTOR: google.protobuf.descriptor.Descriptor 
[docs]
    RELATION_FIELD_NUMBER: builtins.int 
[docs]
    SRC_NODE_TYPE_FIELD_NUMBER: builtins.int 
[docs]
    DST_NODE_TYPE_FIELD_NUMBER: builtins.int 
    """The relation of source / destination node_type
    i.e. (Person , is_friend, Person) ; "Person" is node_type for both
    src and dst nodes, and "is_friend" is the "relation"
    """
[docs]
    src_node_type: builtins.str 
[docs]
    dst_node_type: builtins.str 
    def __init__(
        self,
        *,
        relation: builtins.str = ...,
        src_node_type: builtins.str = ...,
        dst_node_type: builtins.str = ...,
    ) -> None: ...
[docs]
    def ClearField(self, field_name: typing_extensions.Literal["dst_node_type", b"dst_node_type", "relation", b"relation", "src_node_type", b"src_node_type"]) -> None: ... 
 
[docs]
global___EdgeType = EdgeType 
[docs]
class Graph(google.protobuf.message.Message):
    """Represents a graph; usually used to represent a rooted k-hop subgraph for a bigger graph"""
[docs]
    DESCRIPTOR: google.protobuf.descriptor.Descriptor 
[docs]
    NODES_FIELD_NUMBER: builtins.int 
[docs]
    EDGES_FIELD_NUMBER: builtins.int 
    @property
[docs]
    def nodes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Node]: ... 
    @property
[docs]
    def edges(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Edge]: ... 
    def __init__(
        self,
        *,
        nodes: collections.abc.Iterable[global___Node] | None = ...,
        edges: collections.abc.Iterable[global___Edge] | None = ...,
    ) -> None: ...
[docs]
    def ClearField(self, field_name: typing_extensions.Literal["edges", b"edges", "nodes", b"nodes"]) -> None: ...