nustack
ReferenceNu STDkv

refs.list

Virtuals sequence reference: ordered container backed by a virtuals View.

Module nustd.kv.refs.list.

Virtuals sequence reference: ordered container backed by a virtuals View.

NameSortCallMeaning
ListRefrefListRef(address, item_type, item_value_type, view_type, parent_ref=None, owner_shape=None)An ordered list slot in KV storage, decomposed into per-index children.

ListRef

An ordered list slot in KV storage, decomposed into per-index children.

ListRef(address, item_type, item_value_type, view_type, parent_ref=None, owner_shape=None)

Path nustd.kv.ListRef. Kind Ref, sort ref, cardinality scalar.

Every element lives at its own address under the slot, so the list can be appended to, indexed and watched without reading the whole thing. The element type is fixed at declaration, and indexing descends to a leaf ref of that type rather than to a plain value.

Notes

  • Ops run against the live View, so len and contains are answered by storage instead of by materializing the list.
  • Indexing yields a leaf ref, which is what makes ref[0].set(...) and ref[0].on_change() possible.
  • Slices stay materialized: a slice is a value, not a ref.
  • A position does not vivify: writing at an index the list does not reach raises IndexError, so append before assigning. Reading an out-of-range index yields EMPTY instead.
  • Change observation covers the child, the children and the whole subtree, each with its own hook.
  • PrimitiveListRef is the other choice: one opaque blob, no per-element addresses, but heterogeneous contents.

Example

class Portfolio(Shape):
    tags = ListRef.slot(str)
run(Portfolio.tags.append("core"), ctx)
run(Portfolio.tags[0], 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.sequence.SequenceRef:

CallBuildsMeaning
a[key]ItemResultTInt index navigates to the child Ref; 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