Skip to content

Index

Classes

GraphModel

A Graph Model

Used to declaratively register Edge and/or Node data supplier functions by using decorators.

Parameters:

Name Type Description Default
name str

the archetype name for Graphs generated based on the GraphModel.

required
Attributes
edge_generators: Mapping[str, list[Callable[[], Iterable[Edge]]]] property

Returns:

Type Description
Mapping[str, list[Callable[[], Iterable[Edge]]]]

Edge generator functions for Edge Types

node_models: Mapping[NodeTypeAbsoluteId, list[NodeModel]] property

Returns:

Type Description
Mapping[NodeTypeAbsoluteId, list[NodeModel]]

NodeModel for Node Types. Key values are NodeTypeAbsoluteId.

node_types: set[str] property

Returns:

Type Description
set[str]

Node Types

Methods:
edge(type_: Extractor | None = None, source: Extractor = 'source', target: Extractor = 'target', label: Extractor | None = str, value: Extractor | None = None, weight: Union[float, Callable[[Any], float]] = 1.0) -> Callable[[Items], None]

Decorator to Register a generator of edge payloads as a source of Graph Edges. It creates an Edge generator function.

Parameters:

Name Type Description Default
type_ Extractor | None

Optional source for the Edge Type. Defaults to use Generator function name as the Edge Type.

None
source Extractor

Source for edge source Node ID.

'source'
target Extractor

Source for edge target Node ID.

'target'
label Extractor | None

Source for edge label.

str
value Extractor | None

Source for edge value.

None
weight Union[float, Callable[[Any], float]]

Source for edge weight.

1.0

Returns:

Type Description
Callable[[Items], None]

None.

node(type_: Extractor | None = None, parent_type: str | None = UniverseNode, key: Extractor | None = None, value: Extractor | None = None, label: Extractor | None = None, unique: bool = True, multiplicity: Multiplicity = Multiplicity.ALL) -> Callable[[Items], None]

Decorator to Register a Generator of node payloads as a source for Graph Nodes. It creates a NodeModel object.

Parameters:

Name Type Description Default
type_ Extractor | None

Optional source for the Node Type. Defaults to use Generator function name as the Node Type.

None
parent_type str | None

Optional parent Node Type. Defaults to UNIVERSE_NODE

UniverseNode
key Extractor | None

Optional source for Node IDs. Defaults to use the complete Node payload as Node ID.

None
value Extractor | None

Optional source for Node value field. Defaults to use the complete Node payload as Node ID.

None
label Extractor | None

Optional source for Node label field. Defaults to use a 'str' representation of the complete Node payload.

None
unique bool

is the Node universally unique. Defaults to True.

True
multiplicity Multiplicity

Multiplicity of the Node. Defaults to ALL.

ALL
Generator Function Signature

The decorated generator function may accept arguments to receive context from parent nodes. These arguments MUST conform to the following strict naming convention: 1. The argument name must be lowercase. 2. The argument name must end with '_id'. 3. The prefix (before '_id') must match an existing registered Node Type.

Example: If you have a parent node type 'user', your child node generator can accept 'user_id'.

1
2
@model.node(parent_type='user')
def get_posts(user_id): ...

Note: Arbitrary arguments (e.g., configuration flags) are currently NOT supported.

Returns:

Type Description
Callable[[Items], None]

None

node_children_types(_type: str = UniverseNode) -> Mapping[str, list[str]]

Children Node Types for given input Node Type

Parameters:

Name Type Description Default
_type str

Node Type. Default value is UNIVERSE_NODE.

UniverseNode

Returns:

Type Description
Mapping[str, list[str]]

List of children Node Types.

rectify(_type: Extractor | None = None, parent_type: str | None = UniverseNode, key: Extractor | None = None, value: Extractor | None = None, label: Extractor | None = None)

Rectify the model. Add a default NodeModel in case of having just edge supplier/s and no node supplier/s.

Returns:

Type Description

None

GraphType

Bases: Enum

Graph Types

The choice of graph class depends on the structure of the graph you want to represent.

Graph Type Type Self-loops allowed Parallel edges allowed
Graph Undirected Yes No
DiGraph Directed Yes No
MultiGraph Undirected Yes Yes
MultiDiGraph Directed Yes Yes

See more here: NetworkX Reference

Methods:
of(graph: nx.Graph) -> Self classmethod

Determine the graph type based on structure and properties.

Parameters:

Name Type Description Default
graph Graph

A NetworkX graph object.

required

Returns:

Name Type Description
GraphType Self

An instance of this Enum matching the input graph.

ParentId

Annotation marker to declare a dependency on a parent node ID.

Methods:
__init__(node_type: str | Enum)

Initialize ParentId annotation.

Parameters:

Name Type Description Default
node_type str | Enum

The parent node type string or Enum member.

required

Functions:

build(builder_cls: type[Builder], graph_model: GraphModel, graph_type: GraphType = GraphType.Graph, default_node_attributes: Mapping | None = None, **kwargs: Any) -> Any

Build a graph from a graph model

Parameters:

Name Type Description Default
builder_cls type[Builder]

builder class type

required
graph_model GraphModel

a GraphModel instance

required
graph_type GraphType

type of the generated graph

Graph
default_node_attributes Mapping | None

default node attributes

None
**kwargs Any

node id values

{}

Returns:

Type Description
Any

Graph data structure

model(name: str)

Create a graph model

Parameters:

Name Type Description Default
name str

model name

required

Returns:

Type Description

GraphModel