Example #1
0
 def test_group_by_multi(self):
     h11, h12, h23 = (Holder(*x) for x in ((1, 1), (1, 2), (2, 3)))
     h11_2 = Holder(1, 1)
     # empty
     grouped = group_by([], lambda x: x, multi=True)
     self.assertEqual(dict(grouped), {})
     # single element, one group
     grouped = group_by([h11], lambda x: x, multi=True)
     self.assertEqual(dict(grouped), {1: set([h11])})
     # single element, two groups
     grouped = group_by([h12], lambda x: x, multi=True)
     self.assertEqual(dict(grouped), {1: set([h12]), 2: set([h12])})
     # two elements, one group
     grouped = group_by([h11, h11_2], lambda x: x, multi=True)
     self.assertEqual(dict(grouped), {1: set((h11, h11_2))})
     # two elements, two groups
     grouped = group_by([h11, h12], lambda x: x, multi=True)
     self.assertEqual(dict(grouped), {1: set((h11, h12)), 2: set((h12,))})
     # two elements, three groups
     grouped = group_by([h11, h12], lambda x: [9, 8, 7], multi=True)
     self.assertEqual(dict(grouped), {9: set((h11, h12)), 7: set((h11, h12)), 8: set((h11, h12))})
     # three elements, one group
     grouped = group_by([h11, h12, h23], lambda x: [0], multi=True)
     self.assertEqual(dict(grouped), {0: set((h11, h12, h23))})
     # three elements, three groups
     grouped = group_by([h11, h12, h23], lambda x: x, multi=True)
     self.assertEqual(dict(grouped), {1: set((h11, h12)), 2: set((h12, h23)), 3: set([h23])})
Example #2
0
 def test_group_by_non_multi(self):
     h11, h12, h23 = (Holder(*x) for x in ((1, 1), (1, 2), (2, 3)))
     # empty
     grouped = group_by([], lambda x: x.a)
     self.assertEqual(dict(grouped), {})
     # single element
     grouped = group_by([h12], lambda x: x.a)
     self.assertEqual(dict(grouped), {1: set((h12,))})
     # single element (different key func)
     grouped = group_by([h12], lambda x: x.b)
     self.assertEqual(dict(grouped), {2: set((h12,))})
     # two elements, one group
     grouped = group_by([h11, h12], lambda x: x.a)
     self.assertEqual(dict(grouped), {1: set((h11, h12))})
     # two elements, two groups
     grouped = group_by([h11, h12], lambda x: x.b)
     self.assertEqual(dict(grouped), {1: set((h11,)), 2: set((h12,))})
     # three elements, one group
     grouped = group_by([h11, h12, h23], lambda x: 0)
     self.assertEqual(dict(grouped), {0: set((h11, h12, h23))})
     # three elements, two groups
     grouped = group_by([h11, h12, h23], lambda x: x.a)
     self.assertEqual(dict(grouped), {1: set((h11, h12)), 2: set((h23,))})
     # three elements, three groups
     grouped = group_by([h11, h12, h23], lambda x: x.b)
     self.assertEqual(dict(grouped), {1: set((h11,)), 2: set((h12,)), 3: set((h23,))})
Example #3
0
 def __init__(self, list_of_markets):
     tuple.__init__(self, list_of_markets)
     assert all(isinstance(m, Market) for m in self)
     self._all = set(self)
     self._by_currency = group_by(self, lambda market: (market.base_currency, market.counter_currency), multi=True)
     self._by_exchange = group_by(self, lambda market: market.exchange.name.lower())