Breaking: "the array is the backend". An element's array backend
(NumPy/PyTorch) is inferred from its data via the Python Array API, not
configured. The backend= argument is removed from every element and from
AdapterConfig; choose the backend at a source, or insert a Converter where
backends cross. See docs/user/use-array-backends.md.
Elements declare a backends capability (ClassVar, default
frozenset({"numpy"}), or ANY_BACKEND); data in an undeclared backend raises
BackendError at runtime, naming the pad and the fix.
An element declares its output backend/dtype by example with
output_prototype(self, pad) (built from input_prototype(name, dtype=,
device=)). Most transforms override nothing (dtype is inherited); a source
returns a literal prototype; a Converter (which sets changes_backend = True)
is the only element that may change namespace/device.
TSFrame.filleddata() takes no arguments (it uses the frame's spec);
SeriesBuffer.filleddata(reference) fills a single buffer's gap to match a
reference array.
The ArrayBackend / NumpyBackend / TorchBackend / NumpyArray /
TorchArray abstractions and the set_dtype / set_device globals — dtype
and device now travel with the data.
SeriesBuffer.filleddata() with no reference, and scalar data=0/1
buffer construction (both can only numpy-default): pass a real array or a
reference array of the intended backend.
Add FileRetentionMixin to sgnts.sinks.retention, providing reusable
count-based and time-based file cleanup policies for sinks that write files
in stride mode, including a directory-scan method for recovering after restart
When a source reaches its requested end, emit heartbeats instead of raising
an error, so downstream elements can drain cleanly
AudioAdapter now raises a clear error when its stride is incompatible with
the application stride, instead of failing obscurely later
Elements now read adapter settings (stride, overlap, skip_gaps,
offset_shift, pad_zeros_startup) directly from adapter_config rather
than cached copies on the element; user code that accessed these as element
attributes should switch to adapter_config.*
Format large offset integers with _ digit separators in assertion messages
for readability
Fix Ctrl-C hangs in pipelines using TSResourceSource under SignalEOS;
the source now cooperatively drains on interrupt
Fix TSResourceSource emitting spurious heartbeats when the worker produces
data in blocks smaller than the application stride; data is now accumulated
until a full stride is ready
Fix pad_zeros_startup accounting for multi-sink elements
Fix adapter alignment producing 0-duration gap buffers, which caused
cross-pad duration mismatches in multi-pad elements
Overhaul documentation: restructure into User Guide, Developer Guide,
Background, and Reference sections following Divio guidelines; add dedicated
offset background page; split built-in elements reference into Sources,
Transforms, and Sinks; add testable code snippets throughout
Standardize on seconds for time quantities, expose _ns properties for
nanosecond equivalents
Standardize start/end parameters for TSSource and TSResourceSource
Change TSResourceSource base class from ParallelizeSourceElement to
ParallelizeBase
Have TSResourceSource derive from TSSource
Simplify TSCompose to wrap Compose while keeping the public API