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.

reserve(arg: int, /) None

Increase the capacity of the container. Size is not changed.

clear() None

Clear all nodes from this container. Size is reset to 0 afterwards.

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.

remove_relationship(arg: syside.R, /) bool

Removes a relationship and its related element from this container. Returns True if the relationship was removed, and False otherwise. Note that removed owned related elements will have all the elements in the subtree removed as well.

remove_element(arg: syside.M, /) bool

Removes a related element from this container. Returns True if the related element was removed, and False otherwise. Note that removed owned related elements will have all the elements in the subtree removed as well.