Skip to content

Node

pylpg.node

Node base class for mapping Python classes to graph nodes.

Classes:

Name Description
Node

Base class for graph nodes.

Node

Node(**kwargs: Any)

Base class for graph nodes.

Subclass Node to define graph node types. Properties are declared via type annotations, and labels default to the class name.

Example
class Person(Node):
    name: str
    age: int | None = None

Methods:

Name Description
is_saved

Return True if this node has been saved to the database.

resolve_class

Find the registered Node subclass with exactly the given labels.

to_dict

Return primitive properties as a dict, excluding None values.

Source code in src/pylpg/node.py
def __init__(self, **kwargs: typing.Any) -> None:
    self._database_id = None
    self._session: typing.Any = None
    self._temp_id = uuid.uuid4().hex
    for name in self.__primitive_properties__:
        if name in kwargs:
            setattr(self, name, kwargs[name])
        elif not hasattr(type(self), name):
            raise ValueError(f"Missing required property: {name}")

is_saved

is_saved() -> bool

Return True if this node has been saved to the database.

Source code in src/pylpg/node.py
def is_saved(self) -> bool:
    """Return True if this node has been saved to the database."""
    return self._database_id is not None

resolve_class classmethod

resolve_class(labels: frozenset[str]) -> type[Node]

Find the registered Node subclass with exactly the given labels.

Source code in src/pylpg/node.py
@classmethod
def resolve_class(cls, labels: frozenset[str]) -> type["Node"]:
    """Find the registered Node subclass with exactly the given labels."""
    node_class = cls._label_registry.get(labels)
    if node_class is None:
        raise ValueError(f"No registered Node class matches labels: {labels}")
    return node_class

to_dict

to_dict() -> dict[str, Any]

Return primitive properties as a dict, excluding None values.

Source code in src/pylpg/node.py
def to_dict(self) -> dict[str, typing.Any]:
    """Return primitive properties as a dict, excluding None values."""
    result: dict[str, typing.Any] = {}
    for property_name in self.__primitive_properties__:
        value = getattr(self, property_name)
        if value is not None:
            result[property_name] = value
    return result