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
|