Shared typed-payload helpers for cache and offline-store serialization.
This module centralizes the project-wide logic for converting dataclass-based runtime objects to CPU-only, msgspec-compatible payloads and reconstructing them later. It supports the tensor-wrapper types commonly used across Aria-NBV, including PoseTW, CameraTW, ObbTW, generic TensorWrapper subclasses, and PyTorch3D PerspectiveCameras.
The helpers here are intentionally shared across both aria_nbv.data and aria_nbv.data_handling so the project does not maintain duplicate custom serialization code in multiple data packages.
# utils.tensor_payloads { #aria_nbv.utils.tensor_payloads }`utils.tensor_payloads`Shared typed-payload helpers for cache and offline-store serialization.This module centralizes the project-wide logic for converting dataclass-basedruntime objects to CPU-only, msgspec-compatible payloads and reconstructingthem later. It supports the tensor-wrapper types commonly used across Aria-NBV,including ``PoseTW``, ``CameraTW``, ``ObbTW``, generic ``TensorWrapper``subclasses, and PyTorch3D ``PerspectiveCameras``.The helpers here are intentionally shared across both ``aria_nbv.data`` and``aria_nbv.data_handling`` so the project does not maintain duplicate customserialization code in multiple data packages.## Classes| Name | Description || ---| ---||[PerspectiveCameraPayload](#aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload)| Msgspec payload for a PyTorch3D ``PerspectiveCameras`` batch. ||[TensorPayload](#aria_nbv.utils.tensor_payloads.TensorPayload)| Msgspec payload for a CPU tensor. |### PerspectiveCameraPayload { #aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload }```pythonutils.tensor_payloads.PerspectiveCameraPayload()```Msgspec payload for a PyTorch3D ``PerspectiveCameras`` batch.#### Attributes| Name | Description || ---| ---||[kind](#aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload.kind)| Stable type tag used during untyped restoration. ||[R](#aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload.R)| Rotation matrices. ||[T](#aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload.T)| Translation vectors. ||[focal_length](#aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload.focal_length)| Focal lengths. ||[principal_point](#aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload.principal_point)| Principal points. ||[image_size](#aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload.image_size)| Image sizes. ||[in_ndc](#aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload.in_ndc)| Whether the batch is in NDC coordinates. ||[znear](#aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload.znear)| Optional near-plane value. ||[zfar](#aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload.zfar)| Optional far-plane value. |#### Methods| Name | Description || ---| ---||[from_cameras](#aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload.from_cameras)| Build a payload from a PyTorch3D camera batch. ||[to_cameras](#aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload.to_cameras)| Reconstruct the camera batch represented by this payload. |##### from_cameras { #aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload.from_cameras }```pythonutils.tensor_payloads.PerspectiveCameraPayload.from_cameras(cameras)```Build a payload from a PyTorch3D camera batch.###### Parameters {.doc-section .doc-section-parameters}| Name | Type | Description | Default ||---------|-----------------------------------------------------------------------|----------------------------|------------|| cameras |[PerspectiveCameras](`pytorch3d.renderer.cameras.PerspectiveCameras`)| Camera batch to serialize. | _required_ |###### Returns {.doc-section .doc-section-returns}| Name | Type | Description ||--------|------------------------------|------------------------------------------||| \'PerspectiveCameraPayload\' | CPU payload describing the camera batch. |##### to_cameras { #aria_nbv.utils.tensor_payloads.PerspectiveCameraPayload.to_cameras }```pythonutils.tensor_payloads.PerspectiveCameraPayload.to_cameras(device)```Reconstruct the camera batch represented by this payload.###### Parameters {.doc-section .doc-section-parameters}| Name | Type | Description | Default ||--------|-------------------------------------------|---------------------|------------|| device |[torch](`torch`).[device](`torch.device`)| Destination device. | _required_ |###### Returns {.doc-section .doc-section-returns}| Name | Type | Description ||--------|-----------------------------------------------------------------------|---------------------------------------------|||[PerspectiveCameras](`pytorch3d.renderer.cameras.PerspectiveCameras`)| Reconstructed ``PerspectiveCameras`` batch. |### TensorPayload { #aria_nbv.utils.tensor_payloads.TensorPayload }```pythonutils.tensor_payloads.TensorPayload()```Msgspec payload for a CPU tensor.#### Attributes {.doc-section .doc-section-attributes}| Name | Type | Description ||--------|---------------------------------------|------------------------------------------------------|| kind |[str](`str`)| Stable type tag used when decoding untyped payloads. || dtype |[str](`str`)| NumPy dtype string for the stored array. || shape |[tuple](`tuple`)\[[int](`int`), ...\]| Full tensor shape. || data |[bytes](`bytes`)| Contiguous raw bytes for the CPU tensor. |#### Methods| Name | Description || ---| ---||[from_tensor](#aria_nbv.utils.tensor_payloads.TensorPayload.from_tensor)| Build a payload from a tensor. ||[to_tensor](#aria_nbv.utils.tensor_payloads.TensorPayload.to_tensor)| Reconstruct the tensor represented by this payload. |##### from_tensor { #aria_nbv.utils.tensor_payloads.TensorPayload.from_tensor }```pythonutils.tensor_payloads.TensorPayload.from_tensor(tensor)```Build a payload from a tensor.###### Parameters {.doc-section .doc-section-parameters}| Name | Type | Description | Default ||--------|---------------------------------------------------|----------------------|------------|| tensor |[Tensor](`aria_nbv.utils.tensor_payloads.Tensor`)| Tensor to serialize. | _required_ |###### Returns {.doc-section .doc-section-returns}| Name | Type | Description ||--------|-------------------|------------------------------------||| \'TensorPayload\' | CPU payload describing the tensor. |##### to_tensor { #aria_nbv.utils.tensor_payloads.TensorPayload.to_tensor }```pythonutils.tensor_payloads.TensorPayload.to_tensor(device=None)```Reconstruct the tensor represented by this payload.###### Parameters {.doc-section .doc-section-parameters}| Name | Type | Description | Default ||--------|---------------------------------------------------|------------------------------|-----------|| device |[torch](`torch`).[device](`torch.device`)\| None | Optional destination device. |`None`|###### Returns {.doc-section .doc-section-returns}| Name | Type | Description ||--------|---------------------------------------------------|-----------------------|||[Tensor](`aria_nbv.utils.tensor_payloads.Tensor`)| Reconstructed tensor. |## Functions| Name | Description || ---| ---||[from_serializable](#aria_nbv.utils.tensor_payloads.from_serializable)| Reconstruct a typed runtime object from a serialized payload. ||[to_serializable](#aria_nbv.utils.tensor_payloads.to_serializable)| Convert a runtime value into a msgspec-compatible CPU payload. |### from_serializable { #aria_nbv.utils.tensor_payloads.from_serializable }```pythonutils.tensor_payloads.from_serializable( cls, payload,*, device, include_fields=None,)```Reconstruct a typed runtime object from a serialized payload.#### Parameters {.doc-section .doc-section-parameters}| Name | Type | Description | Default ||----------------|-----------------------------------------------------------------------------------------|-------------------------------------------------------|------------|| cls |[type](`type`)\[[SerializableType](`aria_nbv.utils.tensor_payloads.SerializableType`)\]| Target runtime type. | _required_ || payload |[Any](`typing.Any`)| Serialized payload. | _required_ || device |[torch](`torch`).[device](`torch.device`)\| None | Optional destination device for tensors and wrappers. | _required_ || include_fields |[set](`set`)\[[str](`str`)\]\| None | Optional subset of dataclass fields to decode. |`None`|#### Returns {.doc-section .doc-section-returns}| Name | Type | Description ||--------|-----------------------------------------------------------------------|-------------------------------|||[SerializableType](`aria_nbv.utils.tensor_payloads.SerializableType`)| Reconstructed runtime object. |### to_serializable { #aria_nbv.utils.tensor_payloads.to_serializable }```pythonutils.tensor_payloads.to_serializable(value, *, exclude=None)```Convert a runtime value into a msgspec-compatible CPU payload.#### Parameters {.doc-section .doc-section-parameters}| Name | Type | Description | Default ||---------|--------------------------------------|-----------------------------------------|------------|| value |[Any](`typing.Any`)| Runtime value to serialize. | _required_ || exclude |[set](`set`)\[[str](`str`)\]\| None | Optional dataclass field names to omit. |`None`|#### Returns {.doc-section .doc-section-returns}| Name | Type | Description ||--------|---------------------|---------------------------------------------------------------------|||[Any](`typing.Any`)| Serializable builtins composed of scalars, lists, dicts, bytes, and |||[Any](`typing.Any`)| tagged msgspec payloads. |