refs.listshape
Virtuals shapes list reference: sequence of homogeneous shapes.
Module nustd.kv.refs.listshape.
Virtuals shapes list reference: sequence of homogeneous shapes.
Index descent (ref[i]) is overridden to return a substrate-backed virtuals
ShapeRef at the index, with this ref as parent_ref.
| Name | Sort | Call | Meaning |
|---|---|---|---|
| ShapesListRef | ref | ShapesListRef(address, shape_type, view_type=None, parent_ref=None, owner_shape=None) | An ordered list of one shape type in KV storage, indexed into by position. |
ShapesListRef
An ordered list of one shape type in KV storage, indexed into by position.
ShapesListRef(address, shape_type, view_type=None, parent_ref=None, owner_shape=None)Path nustd.kv.ShapesListRef. Kind Ref, sort ref, cardinality scalar.
Indexing lands on a shape ref at that position rather than on a value, so
a row's fields are reachable and writable one at a time:
rows[0].symbol.set(...).
Notes
- Every row is stored decomposed, field by field, so writing one field of one row does not read or rewrite the others.
- A position does not vivify: writing a field at an index the list does not reach raises IndexError. Grow the list first, by appending the row or setting the whole list.
- Reading a field at an out-of-range index is not an error; it yields EMPTY.
- The index may be an expression or a ref, so the position can be computed at run time.
- ListRef is the sibling for lists of plain values.
Example
class Order(Shape):
symbol = StrRef.slot()
class Portfolio(Shape):
orders = ShapesListRef.slot(Order)
run(Portfolio.orders.append({"symbol": "SOL"}), ctx)
run(Portfolio.orders[0].symbol, ctx)Inherited methods
From nu.forms.collections.abc.sequence.ReactiveSequenceForm:
| Call | Builds | Meaning |
|---|---|---|
.on_change() | object | Subscribe to any change on this sequence slot. |
From nu.forms.collections.abc.sequence.MutableSequenceForm:
| Call | Builds | Meaning |
|---|---|---|
.append(value) | Any | Append value to the end of self. |
.extend(other) | Any | Extend self with the elements of other, in order. |
.insert(index, value) | Any | Insert value at index, shifting later elements right. |
.pop(index=-1) | ElementResultT | Remove and return the element at index. |
.del_at(index) | Any | Remove the element at index. |
.remove(value) | Any | Remove the first occurrence of value. |
.reverse() | Any | Reverse self in place. |
.sort() | Any | Sort self in place, ascending, using the elements' natural order. |
.copy() | CollectionResultT | Shallow copy of self: a new sequence with the same elements. |
.clear() | Any | Remove every element from self. |
From nu.domains.shape.refs.shapes_sequence.ShapesSequenceRef:
| Call | Builds | Meaning |
|---|---|---|
a[key] | ItemResultT | Int index navigates to the child ShapeRef; slice routes to the form-level slice op. |
From nu.forms.collections.abc.sequence.SequenceForm:
| Call | Builds | Meaning |
|---|---|---|
.first_elem() | ElementResultT | First element of self. |
.last_elem() | ElementResultT | Last element of self. |
.index(value) | Int | Lowest index in self where value is found, searching from the left. |
.count(value) | Int | Count of occurrences of value in self. |
.reversed() | CollectionResultT | Self walked back to front, as a stream. |
From nu.forms.collections.abc.collection.CollectionForm:
| Call | Builds | Meaning |
|---|---|---|
.extract() | object | Materialise the full subtree rooted at self. |
From nu.forms.collections.abc.sized.SizedForm:
| Call | Builds | Meaning |
|---|---|---|
.len() | Int | Length of self. |
From nu.forms.collections.abc.iterable.IterableForm:
| Call | Builds | Meaning |
|---|---|---|
iter(a) | Iterator[ElementT] | Open self into a lazy iterator stream (Python's iter). |
From nu.forms.collections.abc.container.ContainerForm:
| Call | Builds | Meaning |
|---|---|---|
.contains(item) | Bool | Whether item is a member of self. |
From nu.forms.collections.abc.sliceable.SliceableForm:
| Call | Builds | Meaning |
|---|---|---|
.slice(start, stop, step=None) | ResultT | Slice of self from start to stop, stepping by step. |
From nu.domains.shape.forms.collection.ReactiveCollectionForm:
| Call | Builds | Meaning |
|---|---|---|
.on_child_change(address) | OnChildChange | Observe changes at a specific child address. |
.on_children_change() | OnChildrenChange | Observe changes across all direct children. |
.on_descendants_change() | OnDescendantsChange | Observe changes across descendants matching pattern. |
From nu.domains.shape.forms.collection.MutableCollectionForm:
| Call | Builds | Meaning |
|---|---|---|
.set(value) | SetCmd | Build a SetCmd. |
.erase() | Erase | Build an Erase. |
.init(value) | IfDo | Set value iff the collection is currently missing. |
From nu.domains.shape.forms.collection.CollectionForm:
| Call | Builds | Meaning |
|---|---|---|
.exists() | Exists | Build an Exists query. |
.missing() | Missing | Build a Missing query. |
From nu.lang.forms.Form:
| Call | Builds | Meaning |
|---|---|---|
.is_empty() | Bool | True if this Form yields the EMPTY sentinel. |
.is_invalid() | Bool | True if this Form yields the INVALID sentinel. |
.is_sentinel() | Bool | True if this Form yields either sentinel (EMPTY or INVALID). |
.not_empty() | Bool | True if this Form does not yield EMPTY. |
.not_invalid() | Bool | True if this Form does not yield INVALID. |