syside.ChildrenNodes
- class ChildrenNodes
Bases:
ChildrenNodesView
[R
,M
]Container that stores a vector of children nodes.
This is the primary object to modify the model through. In order to maintain type invariants, relationships can only be constructed internally by this container using the provided relationship type. The related element type is then checked against the types supported by the relationship and the container. However, due to limitations in the Python type system, this check can only be done at runtime. In addition, type system limitations do not allow generic
TypeVar
constraints which prevents fully resolved return types in this generic implementation.- append(relationship: type[syside.R], element: syside.M, name: syside.NameID = ...) tuple[syside.R, syside.M]
Append a new owned or referenced element, inferred from the relationship type and this container. Returns a pair of (relationship, element), only the relationship is newly constructed.
- replace(index: int, relationship: type[syside.R], element: syside.M, name: syside.NameID = ...) tuple[syside.R, syside.M]
Replace the relationship and its related element at the specified index. The relationship may be reused if its type matches the current relationship at that index. The related element may be owned or referenced depending on the relationship type and this container, see
append
for more details.
- insert(index: int, relationship: type[syside.R], element: syside.M, name: syside.NameID = ...) tuple[syside.R, syside.M]
Insert a relationship and a related element at the specified index. The related element may be owned or referenced depending on the relationship type and this container, see
append
for more details.
- pop(index: int = -1) tuple[syside.R, syside.M]
Removes and returns a pair (relationship, element) from this container at the specified index. The relationship may be reused internally when constructing a new relationship of the same type, while the related element will only be reused if it was and owned related element. In this case, the related element may be assigned to a new owner in the same document. Note that removed owned related elements will have all the elements in the subtree removed as well.