Пример #1
0
    def test_translate_np_dtype(self):
        '''
        Tests dtypes.translate_np_dtype method
        
        :return: None
        :raise: AssertionError if 1.. test cases fail
        '''
        d_tuple = dtypes.translate_np_dtype(np.dtype(np.bool_))
        self.assertEqual(1, d_tuple[1])
        self.assertEqual('bool', d_tuple[0])
        d_tuple = dtypes.translate_np_dtype(np.dtype(bool))
        self.assertEqual(1, d_tuple[1])
        self.assertEqual('bool', d_tuple[0])
        d_tuple = dtypes.translate_np_dtype(np.dtype(np.int64))
        self.assertEqual(8, d_tuple[1])
        self.assertEqual('int', d_tuple[0])
        d_tuple = dtypes.translate_np_dtype(np.dtype(np.float64))
        self.assertEqual(8, d_tuple[1])
        self.assertEqual('float', d_tuple[0])
        d_tuple = dtypes.translate_np_dtype(np.dtype(np.uint8))
        self.assertEqual(1, d_tuple[1])
        self.assertEqual('uint',d_tuple[0])
        d_tuple = dtypes.translate_np_dtype(np.dtype(np.str_))
        self.assertEqual(0, d_tuple[1])
        self.assertEqual('str', d_tuple[0])
        d_tuple = dtypes.translate_np_dtype(np.dtype(str))
        self.assertEqual(0, d_tuple[1])
        self.assertEqual('str', d_tuple[0])

        with self.assertRaises(TypeError):
            dtypes.check_np_dtype(np.dtype(np.int16))
        with self.assertRaises(TypeError):
            dtypes.translate_np_dtype('np.str')
Пример #2
0
 def __getitem__(self, key):
     if np.isscalar(key) and resolve_scalar_dtype(key) == 'int64':
         orig_key = key
         if key < 0:
             # Interpret negative key as offset from end of array
             key += self.size
         if (key >= 0 and key < self.size):
             cmd = "segmentedIndex"
             args = " {} {} {} {} {}".format('intIndex', self.objtype,
                                             self.offsets.name,
                                             self.bytes.name, key)
             repMsg = generic_msg(cmd=cmd, args=args)
             _, value = repMsg.split(maxsplit=1)
             return parse_single_value(value)
         else:
             raise IndexError("[int] {} is out of bounds with size {}".\
                              format(orig_key,self.size))
     elif isinstance(key, slice):
         (start, stop, stride) = key.indices(self.size)
         self.logger.debug('start: {}; stop: {}; stride: {}'.format(
             start, stop, stride))
         cmd = "segmentedIndex"
         args = " {} {} {} {} {} {} {}".format('sliceIndex', self.objtype,
                                               self.offsets.name,
                                               self.bytes.name, start, stop,
                                               stride)
         repMsg = generic_msg(cmd=cmd, args=args)
         offsets, values = repMsg.split('+')
         return Strings(offsets, values)
     elif isinstance(key, pdarray):
         kind, _ = translate_np_dtype(key.dtype)
         if kind not in ("bool", "int"):
             raise TypeError("unsupported pdarray index type {}".format(
                 key.dtype))
         if kind == "bool" and self.size != key.size:
             raise ValueError("size mismatch {} {}".format(
                 self.size, key.size))
         cmd = "segmentedIndex"
         args = "{} {} {} {} {}".format('pdarrayIndex', self.objtype,
                                        self.offsets.name, self.bytes.name,
                                        key.name)
         repMsg = generic_msg(cmd, args)
         offsets, values = repMsg.split('+')
         return Strings(offsets, values)
     else:
         raise TypeError("unsupported pdarray index type {}".format(
             key.__class__.__name__))