def test_complex(self): l0 = [{'foo': 5e5, 'can': u'haz', 'bar': [{'alpha': 'a'}]}] l1 = [{'foo': 5e5, 'can': u'haz', 'bar': [{'alpha': 'b'}]}] l2 = [{'foo': 5e6, 'can': u'haz', 'bar': [{'alpha': 'b'}]}] r0 = tuple(lists_of_dicts_intersection_on(('foo', 'bar'), l0, l1)) self.assertEqual(len(r0), 0, 'r0 is not empty') r1 = tuple(lists_of_dicts_intersection_on(('foo', 'can'), l0, l1)) self.assertGreater(len(r1), 0, 'r1 is empty') it_consumes(all((self.assertEqual(obj['foo'], l1[idx]['foo']), self.assertEqual(obj['can'], l1[idx]['can']))) for idx, obj in enumerate(r1)) r2 = tuple(lists_of_dicts_intersection_on(('can', 'bar'), l1, l2)) self.assertGreater(len(r2), 0, 'r2 is empty') it_consumes(all((self.assertEqual(obj['can'], l2[idx]['can']), self.assertEqual(obj['bar'], l2[idx]['bar']))) for idx, obj in enumerate(r2)) r3 = next(lists_of_dicts_intersection_on_any((('foo', 'bar'), ('foo', 'can')), l0, l1)) self.assertIsNotNone(r3, 'r3 is None') it_consumes(all((self.assertEqual(obj['foo'], l1[idx]['foo']), self.assertEqual(obj['can'], l1[idx]['can']))) for idx, obj in enumerate([r3]))
def get_location(enumerable, options): options1 = filter(None, map( lambda provider_dict: {'name': provider_dict['provider']['region'], 'region_name': provider_dict['provider']['region'], 'availability_zone': provider_dict['provider'].get('availability_zone') } if 'region' in provider_dict.get('provider', frozenset()) else None, options)) for options in (options, options1): r = next(lists_of_dicts_intersection_on_any((('driver', 'id'), ('name',), ('availability_zone',)), enumerable, options), next(lists_of_dicts_intersection_on( ('name',), enumerable, [next(lists_of_dicts_intersection_on(('availability_zone',), map(node_to_dict, enumerable), options1), None) ]), None) ) if r: return r
def get_image(self, enumerable, options): self.image = next(lists_of_dicts_intersection_on_any((('id',), ('name',)), enumerable, options), None) return self.image
def get_hardware(enumerable, options): return next(lists_of_dicts_intersection_on_any( (('id',), ('driver', 'name'), ('ram', 'name', 'disk'), ('name',)), enumerable, options), None )