def __getitem__(self, key): # noqa: F811 if isinstance(key, slice): fields = self.fields[key] raw_values = self.data[key] return tuple(tsdb.cast(field.datatype, raw) for field, raw in zip(fields, raw_values)) else: if isinstance(key, str): index = self._field_index[key] else: index = key field = self.fields[index] raw_value = self.data[index] return tsdb.cast(field.datatype, raw_value)
def test_cast(): assert tsdb.cast(':integer', None) is None assert tsdb.cast(':float', None) is None assert tsdb.cast(':string', None) is None assert tsdb.cast(':date', None) is None assert tsdb.cast(':integer', '15') == 15 assert tsdb.cast(':integer', '-1') == -1 assert tsdb.cast(':integer', '') is None assert tsdb.cast(':float', '2.05e-3') == 0.00205 assert tsdb.cast(':float', '') is None assert tsdb.cast(':string', 'Abrams slept.') == 'Abrams slept.' assert tsdb.cast(':string', '') is None assert tsdb.cast(':date', '10-6-2002') == datetime(2002, 6, 10, 0, 0) assert tsdb.cast(':date', '8-sep-1999') == datetime(1999, 9, 8, 0, 0) assert tsdb.cast(':date', 'apr-95') == datetime(1995, 4, 1, 0, 0) assert (tsdb.cast(':date', '01-dec-02 (15:31:01)') == datetime(2002, 12, 1, 15, 31, 1)) assert (tsdb.cast(':date', '2008-10-12 10:51') == datetime(2008, 10, 12, 10, 51)) assert tsdb.cast(':date', '') is None
def __iter__(self) -> Iterator[tsdb.Value]: datatypes = tuple(field.datatype for field in self.fields) for datatype, raw_value in zip(datatypes, self.data): yield tsdb.cast(datatype, raw_value)