symforce.values.index_entry module¶
- class IndexEntry(offset, storage_dim, stored_datatype, shape=None, item_index=None)[source]¶
Bases:
object
Contains the structural information needed to reconstruct a single value of a Values from storage in method Values.from_storage_index
Meant to be a python parallel to index_entry_t in symforce.lcm
- For `entry
IndexEntry = v.index()[key]` for Values v and string key
- offset¶
The index of StorageOps.to_storage(v) at which StorageOps.to_storage(v[key]) begins
- Type:
int
- storage_dim¶
The length of StorageOps.to_storage(v[key])
- Type:
int
- shape¶
If datatype() is np.ndarray or sf.Matrix, it’s the shape of v[key]. Otherwise, it’s None
- Type:
T.Optional[T.Tuple[int, …]]
- item_index¶
v[key].index() if datatype() is Values, if datatype() is list or tuple, is dict d where d[f”{key}_{i}”] equals the IndexEntry of v[key][i], and otherwise is None
- Type:
T.Optional[T.Dict[str, T.Any]]
- offset: int¶
- storage_dim: int¶
- stored_datatype: dataclasses.InitVar[T.Type]¶
- shape: T.Optional[T.Tuple[int, ...]] = None¶
- item_index: T.Optional[T.Dict[str, T.Any]] = None¶
- datatype()[source]¶
Returns the type indexed by self
Example
IndexEntry(offset, storage_dim, stored_datatype).datatype() returns stored_datatype
- Precondition:
The datatype stored must have had its module loaded (i.e., if the stored datatype is sf.rot3, symforce.geo must have been imported). The datatype must also be accesible from the module (dynamically created types do not do this. For example, the sf.Matrix types with more than 10 rows or columns)
- Return type:
Type
- __init__(offset, storage_dim, stored_datatype, shape=None, item_index=None)¶