class NestedList(Flattener): __field_names__ = ["user", "date", "x_coord", "y_coord"] x_coord = ListValue( DerivedValue( get_x, dict(coordinates=Value("daily_movement.coordinates", False)))) y_coord = ListValue( DerivedValue( get_y, dict(coordinates=Value("daily_movement.coordinates", False))))
class MultipleLists(Flattener): __field_names__ = ["user", "timestamp", "food", "drink"] food = ListValue( DerivedValue( get_food, dict(food_order=Value("food_order", True), drink_order=Value("drink_order", True)))) drink = ListValue( DerivedValue( get_drink, dict(food_order=Value("food_order", True), drink_order=Value("drink_order", True))))
class ConcName(Flattener): __field_names__ = ["name", "age"] name = DerivedValue( concatenation, dict(lastName=Value("lastName", False), firstName=Value("firstName", False)))
def test_derived_value(self): test_json = {"apple": 1, "plum": [1, 2, 3], "peach": 234} def func(a1, a2): return a1[0] * sum(a2) self.assertEqual(DerivedValue(func, dict(a1=Value("apple", False), a2=Value("plum", False))).getValue(test_json), [6])
class ListJsonFlattener(Flattener): __field_names__ = ["id", "name", "zip", "results_other_list"] results_other_list = ListValue( DerivedValue( func, dict(results=Value("results", False), other_list=Value("other_list", False))))