nustack
ReferenceNu STDkv

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.

NameSortCallMeaning
ShapesListRefrefShapesListRef(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:

CallBuildsMeaning
.on_change()objectSubscribe to any change on this sequence slot.

From nu.forms.collections.abc.sequence.MutableSequenceForm:

CallBuildsMeaning
.append(value)AnyAppend value to the end of self.
.extend(other)AnyExtend self with the elements of other, in order.
.insert(index, value)AnyInsert value at index, shifting later elements right.
.pop(index=-1)ElementResultTRemove and return the element at index.
.del_at(index)AnyRemove the element at index.
.remove(value)AnyRemove the first occurrence of value.
.reverse()AnyReverse self in place.
.sort()AnySort self in place, ascending, using the elements' natural order.
.copy()CollectionResultTShallow copy of self: a new sequence with the same elements.
.clear()AnyRemove every element from self.

From nu.domains.shape.refs.shapes_sequence.ShapesSequenceRef:

CallBuildsMeaning
a[key]ItemResultTInt index navigates to the child ShapeRef; slice routes to the form-level slice op.

From nu.forms.collections.abc.sequence.SequenceForm:

CallBuildsMeaning
.first_elem()ElementResultTFirst element of self.
.last_elem()ElementResultTLast element of self.
.index(value)IntLowest index in self where value is found, searching from the left.
.count(value)IntCount of occurrences of value in self.
.reversed()CollectionResultTSelf walked back to front, as a stream.

From nu.forms.collections.abc.collection.CollectionForm:

CallBuildsMeaning
.extract()objectMaterialise the full subtree rooted at self.

From nu.forms.collections.abc.sized.SizedForm:

CallBuildsMeaning
.len()IntLength of self.

From nu.forms.collections.abc.iterable.IterableForm:

CallBuildsMeaning
iter(a)Iterator[ElementT]Open self into a lazy iterator stream (Python's iter).

From nu.forms.collections.abc.container.ContainerForm:

CallBuildsMeaning
.contains(item)BoolWhether item is a member of self.

From nu.forms.collections.abc.sliceable.SliceableForm:

CallBuildsMeaning
.slice(start, stop, step=None)ResultTSlice of self from start to stop, stepping by step.

From nu.domains.shape.forms.collection.ReactiveCollectionForm:

CallBuildsMeaning
.on_child_change(address)OnChildChangeObserve changes at a specific child address.
.on_children_change()OnChildrenChangeObserve changes across all direct children.
.on_descendants_change()OnDescendantsChangeObserve changes across descendants matching pattern.

From nu.domains.shape.forms.collection.MutableCollectionForm:

CallBuildsMeaning
.set(value)SetCmdBuild a SetCmd.
.erase()EraseBuild an Erase.
.init(value)IfDoSet value iff the collection is currently missing.

From nu.domains.shape.forms.collection.CollectionForm:

CallBuildsMeaning
.exists()ExistsBuild an Exists query.
.missing()MissingBuild a Missing query.

From nu.lang.forms.Form:

CallBuildsMeaning
.is_empty()BoolTrue if this Form yields the EMPTY sentinel.
.is_invalid()BoolTrue if this Form yields the INVALID sentinel.
.is_sentinel()BoolTrue if this Form yields either sentinel (EMPTY or INVALID).
.not_empty()BoolTrue if this Form does not yield EMPTY.
.not_invalid()BoolTrue if this Form does not yield INVALID.

On this page