Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- import pprint
- class ComputeGraph(object):
- operations = []
- def __init__(self):
- print('init_graph')
- pass
- #gr = json.loads(source, encoding='utf8')
- def ComputeGraph(self, *args):
- return self
- def add_operation(self, *args):
- print('add_operation')
- self.operations.append(args)
- #print(str(args))
- def run(self, *args):
- print('run')
- table = args[0]
- for arg in self.operations:
- print(arg)
- class Map(object):
- ''' операция, которая вызывает переданный генератор (называемый мэппером)
- от каждой из строк таблицы. Значения, выданные генератором, образуют таблицу-
- результат. (Подходит для элементарных операций над строками - фильтраций,
- преобразований типов, элементарных операций над полями таблицы etc).
- Мэп в нашем задании не тождественен функции map из python, которая реализует
- соответствие 1-к-1 (наша по каждой строке может вернуть любое нетрицательное
- число строк).'''
- def __init__(self, mapper):
- print("map_init")
- self.mapper = mapper
- def compute(self, inp):
- print("map_compute")
- outp = [];
- for row in inp:
- for new_row in self.mapper(row):
- outp.append(new_row)
- return outp
- class Sort(object):
- '''сортирует таблицу по какому-то набору колонок лексикографически'''
- def __init__(self, *columns):
- print("sort_init")
- self.columns = columns
- def compute(self, inp):
- print("sort_sort")
- def comparator(row1, row2):
- for column in self.columns:
- if row1[column] > row[column]:
- return True
- outp = inp
- for row1 in range(len(outp) - 1):
- for row2 in range(row1 + 1, len(outp)):
- if (comparator(outp[row1], outp[row2])):
- print('lalala')
- outp[row1], outp[row2] = outp[row2], outp[row1]
- return outp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement