kups.core.data.buffered
¶
Buffered
¶
Bases: Table[TLabel, TData], Generic[TLabel, TData]
:class:Table with buffer management for row occupation.
A Buffered[TKey, TData] IS-A :class:Table where some rows may be
unoccupied (soft-deleted). The view function extracts an
:class:Index leaf from the data whose :attr:~Index.valid_mask serves
as the occupation mask: rows with OOB sentinel indices are considered
unoccupied.
On construction, all leaves except the viewed leaf are sanitized:
plain array leaves are zeroed and other :class:Index leaves get an
OOB sentinel for unoccupied rows.
Attributes:
| Name | Type | Description |
|---|---|---|
view |
Callable[[TData], Index]
|
Static callable that extracts the authoritative Index leaf from the data. |
Source code in src/kups/core/data/buffered.py
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 | |
num_occupied
property
¶
Number of occupied slots.
occupation
property
¶
Boolean mask derived from the viewed Index leaf's valid_mask.
arange(data, *, num_occupied=None, label=int, view=system_view)
classmethod
¶
Create a Buffered with integer labels (0, 1, ..., n-1).
The view function extracts the authoritative Index leaf from
data. If num_occupied is less than n, the viewed leaf
is masked so that trailing entries have OOB sentinel values.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
D
|
Pytree of arrays with a common leading dimension. |
required |
num_occupied
|
int | None
|
Number of leading slots marked as occupied. Defaults to all slots occupied. |
None
|
label
|
Callable[[int], L]
|
Callable mapping |
int
|
view
|
Callable[[D], Index]
|
Callable extracting the authoritative Index leaf. |
system_view
|
Returns:
| Type | Description |
|---|---|
Buffered[L, D]
|
|
Source code in src/kups/core/data/buffered.py
full(table, *, view=system_view)
classmethod
¶
Create a fully-occupied Buffered from a Table.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
table
|
Table[TLabel, D]
|
Source table. |
required |
view
|
Callable[[D], Index]
|
Callable extracting the authoritative Index leaf. |
system_view
|
Returns:
| Type | Description |
|---|---|
Buffered[TLabel, D]
|
|
Source code in src/kups/core/data/buffered.py
pad(table, num_free, *, view=system_view)
classmethod
¶
Convert a Table to a Buffered with extra free rows.
All original entries are marked as occupied. New labels are consecutive integers starting after the last existing label. Zero-padded data has OOB indices in the viewed Index leaf.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
table
|
Table[L, D]
|
Source table (fully occupied in the result). |
required |
num_free
|
int
|
Number of unoccupied rows to append. |
required |
view
|
Callable[[D], Index]
|
Callable extracting the authoritative Index leaf. |
system_view
|
Returns:
| Type | Description |
|---|---|
Buffered[L, D]
|
|
Source code in src/kups/core/data/buffered.py
select_free(n)
¶
Return an Index referencing n unoccupied slots.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n
|
int
|
Number of free slots to select. |
required |
Returns:
| Type | Description |
|---|---|
Index[TLabel]
|
|
Index[TLabel]
|
If fewer than |
Index[TLabel]
|
the OOB sentinel ( |
Source code in src/kups/core/data/buffered.py
update(index, data, **kwargs)
¶
Update rows, returning Buffered.
The viewed Index leaf in data must carry correct validity
(OOB sentinel for unoccupied rows).
Source code in src/kups/core/data/buffered.py
update_if(accept, indices, new_data)
¶
Conditionally update rows, returning Buffered.
Source code in src/kups/core/data/buffered.py
add_buffers(*groups)
¶
add_buffers(
group1: tuple[Table[L1, D1], int],
group2: tuple[Table[L2, D2], int],
) -> tuple[Buffered[L1, D1], Buffered[L2, D2]]
add_buffers(
group1: tuple[Table[L1, D1], int],
group2: tuple[Table[L2, D2], int],
group3: tuple[Table[L3, D3], int],
) -> tuple[
Buffered[L1, D1], Buffered[L2, D2], Buffered[L3, D3]
]
add_buffers(
group1: tuple[Table[L1, D1], int],
group2: tuple[Table[L2, D2], int],
group3: tuple[Table[L3, D3], int],
group4: tuple[Table[L4, D4], int],
) -> tuple[
Buffered[L1, D1],
Buffered[L2, D2],
Buffered[L3, D3],
Buffered[L4, D4],
]
add_buffers(
group1: tuple[
Table[L1, D1], int, Callable[[D1], Index]
],
) -> tuple[Buffered[L1, D1]]
add_buffers(
group1: tuple[
Table[L1, D1], int, Callable[[D1], Index]
],
group2: tuple[
Table[L2, D2], int, Callable[[D2], Index]
],
) -> tuple[Buffered[L1, D1], Buffered[L2, D2]]
add_buffers(
group1: tuple[
Table[L1, D1], int, Callable[[D1], Index]
],
group2: tuple[
Table[L2, D2], int, Callable[[D2], Index]
],
group3: tuple[
Table[L3, D3], int, Callable[[D3], Index]
],
) -> tuple[
Buffered[L1, D1], Buffered[L2, D2], Buffered[L3, D3]
]
add_buffers(
group1: tuple[
Table[L1, D1], int, Callable[[D1], Index]
],
group2: tuple[
Table[L2, D2], int, Callable[[D2], Index]
],
group3: tuple[
Table[L3, D3], int, Callable[[D3], Index]
],
group4: tuple[
Table[L4, D4], int, Callable[[D4], Index]
],
) -> tuple[
Buffered[L1, D1],
Buffered[L2, D2],
Buffered[L3, D3],
Buffered[L4, D4],
]
Convert Table containers to Buffered with extra free rows.
Each argument is either a (table, num_free) pair (uses
system_view) or a (table, num_free, view) triple.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
*groups
|
_BufferGroup
|
|
()
|
Returns:
| Type | Description |
|---|---|
tuple[Buffered, ...] | Buffered
|
Tuple of |
Source code in src/kups/core/data/buffered.py
system_view(x)
¶
Default view function: extracts the system :class:Index leaf.
Used as the default view argument for :class:Buffered and
:func:add_buffers when data implements HasSystemIndex.