Skip to content

symfonic.memory.backends.node_ownership

node_ownership

Keep the reserved node owner path outside user property replacements.

in_memory_updates

in_memory_updates(updates: dict[str, Any], owner: str | None) -> dict[str, Any]

Protect ownership without changing replacement of other user fields.

Source code in src/symfonic/memory/backends/node_ownership.py
def in_memory_updates(
    updates: dict[str, Any], owner: str | None,
) -> dict[str, Any]:
    """Protect ownership without changing replacement of other user fields."""
    result = {key: value for key, value in updates.items() if key != SCOPE_PATH_KEY}
    if isinstance(result.get("properties"), dict):
        result["properties"] = owned_properties(result["properties"], owner)
    return result

owned_properties

owned_properties(properties: dict[str, Any], owner: str | None) -> dict[str, Any]

Copy user fields while making the stored owner authoritative.

Source code in src/symfonic/memory/backends/node_ownership.py
def owned_properties(properties: dict[str, Any], owner: str | None) -> dict[str, Any]:
    """Copy user fields while making the stored owner authoritative."""
    result = dict(properties)
    if owner:
        result[SCOPE_PATH_KEY] = owner
    else:
        result.pop(SCOPE_PATH_KEY, None)
    return result