ursa._temporaldata_compat

Source-anchored manifest of the upstream temporaldata internals Ursa reaches into.

This module is empty (__all__ = []); its only artifact is this docstring’s dependency table. Greppable target for uv lock --upgrade temporaldata PRs and the tests/test_temporaldata_compat.py behavioral smoke test.

Pinned against temporaldata in the >=0.1.3,<0.2 range. Behavior is verified by tests/test_temporaldata_compat.py, not by line numbers — line numbers below are anchors for human review, not test assertions.

Upstream symbol

File:line

What we depend on

LazyRegularTimeSeries.__getattribute__

temporaldata.py:1473-1499

Recursion guard name in ("__dict__", "keys"); materialization gate isinstance(out, h5py.Dataset); class-flip mechanic self.__class__ = RegularTimeSeries; del self._lazy_ops.

LazyRegularTimeSeries.slice

:1501-1531

Constructs via __class__.__new__; copies _sampling_rate/_lazy_ops/_domain + per-key __dict__ entries; does NOT copy _metadata.

_lazy_ops dict shape (Regular)

:1445 / :1523-1524

Override reads _lazy_ops.get("slice") expecting (start_idx, end_idx).

LazyIrregularTimeSeries.__getattribute__

:938-996

Same gate; unresolved_slice + slice + mask + _timekeys + _unicode_keys branches we raise on.

LazyIrregularTimeSeries.slice

:1070-1155

Copies _unicode_keys/_timekeys/_lazy_ops/_domain + per-key entries.

ArrayDict.__setattr__ ndarray guard

:65

Bypassed via instance.__dict__[name] = zarr_array.

ArrayDict.keys() __dict__-derivation

:46-48

Returns every non-_-prefixed __dict__ key.

RegularTimeSeries.__init__ private attrs

:1235-1256

Sets _sampling_rate, _domain.

IrregularTimeSeries.__init__ private attrs

:542-581

Sets _timekeys, _domain, plus _sorted via __setattr__.

LazyIrregularTimeSeries class-level attrs

:906-907

Class-level _lazy_ops = dict() and _unicode_keys = [] — instance-level writes shadow these in our lazy openers.