Esempio n. 1
0
def stack(geometries: List[Geometry], dim: Shape):
    """ Stacks `geometries` along `dim`. The size of `dim` is ignored. """
    if all(type(g) == type(geometries[0]) and not isinstance(g, GridCell) for g in geometries):
        attrs = variable_attributes(geometries[0])
        new_attributes = {a: math.stack([getattr(g, a) for g in geometries], dim) for a in attrs}
        return copy_with(geometries[0], **new_attributes)
    return GeometryStack(math.layout(geometries, dim))
Esempio n. 2
0
 def test_iterate_layout(self):
     a = [dict(a=1), dict(b=2)]
     t = math.layout(a, channel('outer,dict'))
     total = []
     for d in t:
         total.append(d)
     self.assertEqual(total, [1, 2])
Esempio n. 3
0
 def test_layout_dict_conflict(self):
     a = [dict(a=1), dict(b=2)]
     t = math.layout(a, channel('outer,dict'))
     self.assertEqual(None, t.shape.get_item_names('dict'))
     self.assertEqual(a, t.native())
     self.assertEqual([1, 2], t.dict[0].native())
     self.assertEqual(2, t.dict[0].outer[1].native())
Esempio n. 4
0
 def test_layout_tree(self):
     a = [['a', 'b1'], 'b2', 'c']
     t = math.layout(a, channel(outer='list,b2,c', inner=None))
     self.assertEqual(a, t.native())
     self.assertEqual(['a', 'b1'], t.outer['list'].native())
     self.assertEqual('a', t.outer['list'].inner[0].native())
     self.assertEqual(['a', 'b', 'c'], t.inner[0].native())
     self.assertEqual('a', t.inner[0].outer['list'].native())
Esempio n. 5
0
 def test_layout_dict(self):
     a = {'a': 'text', 'b': [0, 1]}
     t = math.layout(a, channel('dict,inner'))
     self.assertEqual(a, t.native())
     self.assertEqual(('a', 'b'), t.shape.get_item_names('dict'))
     self.assertEqual(a, t.native())
     self.assertEqual('text', t.dict['a'].native())
     self.assertEqual('e', t.dict['a'].inner[1].native())
     self.assertEqual(1, t.dict['b'].inner[1].native())
     self.assertEqual(('e', 1), t.inner[1].native())
Esempio n. 6
0
 def test_default_backend_layout(self):
     self.assertIsNone(math.layout(None).default_backend)
Esempio n. 7
0
 def test_layout_None(self):
     none = math.layout(None)
     self.assertEqual(None, none.native())
     l = math.layout([None, None], channel('v'))
     self.assertEqual(None, none.v[0].native())
Esempio n. 8
0
 def test_layout_size(self):
     a = [['a', 'b1'], 'b2', 'c']
     t = math.layout(a, channel(outer='list,b2,c', inner=None))
     self.assertEqual(3, t.shape.get_size('outer'))
     self.assertEqual(2, t.outer['list'].shape.get_size('inner'))
     self.assertEqual(1, t.outer['c'].shape.get_size('inner'))
Esempio n. 9
0
 def test_layout_list(self):
     a = ['a', 'b', 'c']
     t = math.layout(a, channel(letters=a))
     self.assertEqual(a, t.native())
     self.assertEqual('a', t.letters['a'].native())
     self.assertEqual('a', t.letters['b, a'].letters['a'].native())
Esempio n. 10
0
 def test_layout_single(self):
     a = object()
     t = math.layout(a)
     self.assertEqual(a, t.native())