"""
@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.internal.enum_type_wrapper
import google.protobuf.message
import snapchat.research.gbml.graph_schema_pb2
import sys
import typing
if sys.version_info >= (3, 10):
import typing as typing_extensions
else:
import typing_extensions
[docs]
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
class _SamplingDirection:
ValueType = typing.NewType("ValueType", builtins.int)
V: typing_extensions.TypeAlias = ValueType
class _SamplingDirectionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SamplingDirection.ValueType], builtins.type): # noqa: F821
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
INCOMING: _SamplingDirection.ValueType # 0
"""Sample incoming edges to the dst nodes (default)"""
OUTGOING: _SamplingDirection.ValueType # 1
"""Sample outgoing edges from the src nodes"""
[docs]
class SamplingDirection(_SamplingDirection, metaclass=_SamplingDirectionEnumTypeWrapper): ...
[docs]
INCOMING: SamplingDirection.ValueType # 0
"""Sample incoming edges to the dst nodes (default)"""
[docs]
OUTGOING: SamplingDirection.ValueType # 1
"""Sample outgoing edges from the src nodes"""
[docs]
global___SamplingDirection = SamplingDirection
[docs]
class RandomWeighted(google.protobuf.message.Message):
"""Sample based off some edge weight"""
[docs]
DESCRIPTOR: google.protobuf.descriptor.Descriptor
[docs]
NUM_NODES_TO_SAMPLE_FIELD_NUMBER: builtins.int
[docs]
EDGE_FEAT_NAME_FIELD_NUMBER: builtins.int
[docs]
num_nodes_to_sample: builtins.int
[docs]
edge_feat_name: builtins.str
def __init__(
self,
*,
num_nodes_to_sample: builtins.int = ...,
edge_feat_name: builtins.str = ...,
) -> None: ...
[docs]
def ClearField(self, field_name: typing_extensions.Literal["edge_feat_name", b"edge_feat_name", "num_nodes_to_sample", b"num_nodes_to_sample"]) -> None: ...
[docs]
global___RandomWeighted = RandomWeighted
[docs]
class TopK(google.protobuf.message.Message):
"""Order the edges based off of some edge feature and pick top K"""
[docs]
DESCRIPTOR: google.protobuf.descriptor.Descriptor
[docs]
NUM_NODES_TO_SAMPLE_FIELD_NUMBER: builtins.int
[docs]
EDGE_FEAT_NAME_FIELD_NUMBER: builtins.int
[docs]
num_nodes_to_sample: builtins.int
[docs]
edge_feat_name: builtins.str
def __init__(
self,
*,
num_nodes_to_sample: builtins.int = ...,
edge_feat_name: builtins.str = ...,
) -> None: ...
[docs]
def ClearField(self, field_name: typing_extensions.Literal["edge_feat_name", b"edge_feat_name", "num_nodes_to_sample", b"num_nodes_to_sample"]) -> None: ...
[docs]
class UserDefined(google.protobuf.message.Message):
[docs]
DESCRIPTOR: google.protobuf.descriptor.Descriptor
[docs]
class ParamsEntry(google.protobuf.message.Message):
[docs]
DESCRIPTOR: google.protobuf.descriptor.Descriptor
[docs]
KEY_FIELD_NUMBER: builtins.int
[docs]
VALUE_FIELD_NUMBER: builtins.int
[docs]
value: builtins.str
def __init__(
self,
*,
key: builtins.str = ...,
value: builtins.str = ...,
) -> None: ...
[docs]
def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...
[docs]
PATH_TO_UDF_FIELD_NUMBER: builtins.int
[docs]
PARAMS_FIELD_NUMBER: builtins.int
[docs]
path_to_udf: builtins.str
"""Path to class that implements UserDefinedFilter interface (TODO: Define this interface)"""
@property
[docs]
def params(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
"""Runtime params to pass into the class"""
def __init__(
self,
*,
path_to_udf: builtins.str = ...,
params: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
) -> None: ...
[docs]
def ClearField(self, field_name: typing_extensions.Literal["params", b"params", "path_to_udf", b"path_to_udf"]) -> None: ...
[docs]
global___UserDefined = UserDefined
[docs]
class SamplingOp(google.protobuf.message.Message):
"""TODO: (svij) Define UserDefinedFilter interface
Rough idea of UserDefinedFilter interface
class UserDefinedFilter:
def filter_next_hop_nodes_and_edges(
potential_next_hop: Tuple[Set(Edge), Set(Node)],
) -> Tuple[Set(Edge), Set(Node)] # Given a set of edges and nodes; the function filters the next hop nodes/edges
"""
[docs]
DESCRIPTOR: google.protobuf.descriptor.Descriptor
[docs]
OP_NAME_FIELD_NUMBER: builtins.int
[docs]
EDGE_TYPE_FIELD_NUMBER: builtins.int
[docs]
RANDOM_WEIGHTED_FIELD_NUMBER: builtins.int
[docs]
TOP_K_FIELD_NUMBER: builtins.int
[docs]
USER_DEFINED_FIELD_NUMBER: builtins.int
[docs]
SAMPLING_DIRECTION_FIELD_NUMBER: builtins.int
"""1-100 field numbers reserved for expanding SamplingOp
Can be used as a reference in other operations
"""
@property
[docs]
def edge_type(self) -> snapchat.research.gbml.graph_schema_pb2.EdgeType: ...
@property
@property
@property
[docs]
def random_weighted(self) -> global___RandomWeighted: ...
@property
[docs]
def top_k(self) -> global___TopK: ...
@property
[docs]
def user_defined(self) -> global___UserDefined: ...
[docs]
sampling_direction: global___SamplingDirection.ValueType
"""Sampling edge direction, INCOMING or OUTGOING. INCOMING is default since SamplingDirection enum defined INCOMING=0, OUTGOING=1
INCOMING - Sample incoming edges to the dst nodes (default)
OUTGOING - Sample outgoing edges from the src nodes
"""
def __init__(
self,
*,
op_name: builtins.str = ...,
edge_type: snapchat.research.gbml.graph_schema_pb2.EdgeType | None = ...,
input_op_names: collections.abc.Iterable[builtins.str] | None = ...,
random_uniform: global___RandomUniform | None = ...,
random_weighted: global___RandomWeighted | None = ...,
top_k: global___TopK | None = ...,
user_defined: global___UserDefined | None = ...,
sampling_direction: global___SamplingDirection.ValueType = ...,
) -> None: ...
[docs]
def HasField(self, field_name: typing_extensions.Literal["edge_type", b"edge_type", "random_uniform", b"random_uniform", "random_weighted", b"random_weighted", "sampling_method", b"sampling_method", "top_k", b"top_k", "user_defined", b"user_defined"]) -> builtins.bool: ...
[docs]
def ClearField(self, field_name: typing_extensions.Literal["edge_type", b"edge_type", "input_op_names", b"input_op_names", "op_name", b"op_name", "random_uniform", b"random_uniform", "random_weighted", b"random_weighted", "sampling_direction", b"sampling_direction", "sampling_method", b"sampling_method", "top_k", b"top_k", "user_defined", b"user_defined"]) -> None: ...
[docs]
def WhichOneof(self, oneof_group: typing_extensions.Literal["sampling_method", b"sampling_method"]) -> typing_extensions.Literal["random_uniform", "random_weighted", "top_k", "user_defined"] | None: ...
[docs]
global___SamplingOp = SamplingOp
[docs]
class MessagePassingPath(google.protobuf.message.Message):
[docs]
DESCRIPTOR: google.protobuf.descriptor.Descriptor
[docs]
ROOT_NODE_TYPE_FIELD_NUMBER: builtins.int
[docs]
SAMPLING_OPS_FIELD_NUMBER: builtins.int
[docs]
root_node_type: builtins.str
@property
[docs]
def sampling_ops(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SamplingOp]: ...
def __init__(
self,
*,
root_node_type: builtins.str = ...,
sampling_ops: collections.abc.Iterable[global___SamplingOp] | None = ...,
) -> None: ...
[docs]
def ClearField(self, field_name: typing_extensions.Literal["root_node_type", b"root_node_type", "sampling_ops", b"sampling_ops"]) -> None: ...
[docs]
global___MessagePassingPath = MessagePassingPath
[docs]
class MessagePassingPathStrategy(google.protobuf.message.Message):
[docs]
DESCRIPTOR: google.protobuf.descriptor.Descriptor
[docs]
PATHS_FIELD_NUMBER: builtins.int
@property
[docs]
def paths(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MessagePassingPath]:
"""Note: One message passing path needs to be specified per relevant node type
i.e. for SupervisedNodeBasedTask, one message passing path per supervision node type
for SupervisedLinkBasedTask, one message passing path per node type in the supervision edges
We currently do not support multiple message passing paths for the same node type.
"""
def __init__(
self,
*,
paths: collections.abc.Iterable[global___MessagePassingPath] | None = ...,
) -> None: ...
[docs]
def ClearField(self, field_name: typing_extensions.Literal["paths", b"paths"]) -> None: ...
[docs]
global___MessagePassingPathStrategy = MessagePassingPathStrategy
[docs]
class SubgraphSamplingStrategy(google.protobuf.message.Message):
[docs]
DESCRIPTOR: google.protobuf.descriptor.Descriptor
[docs]
MESSAGE_PASSING_PATHS_FIELD_NUMBER: builtins.int
@property
[docs]
def message_passing_paths(self) -> global___MessagePassingPathStrategy: ...
@property
def __init__(
self,
*,
message_passing_paths: global___MessagePassingPathStrategy | None = ...,
global_random_uniform: global___GlobalRandomUniformStrategy | None = ...,
) -> None: ...
[docs]
def HasField(self, field_name: typing_extensions.Literal["global_random_uniform", b"global_random_uniform", "message_passing_paths", b"message_passing_paths", "strategy", b"strategy"]) -> builtins.bool: ...
[docs]
def ClearField(self, field_name: typing_extensions.Literal["global_random_uniform", b"global_random_uniform", "message_passing_paths", b"message_passing_paths", "strategy", b"strategy"]) -> None: ...
[docs]
def WhichOneof(self, oneof_group: typing_extensions.Literal["strategy", b"strategy"]) -> typing_extensions.Literal["message_passing_paths", "global_random_uniform"] | None: ...
[docs]
global___SubgraphSamplingStrategy = SubgraphSamplingStrategy