in python/src/pywy/core/serializer.py [0:0]
def serialize(self, operator):
json_operator = {}
json_operator["id"] = self.id_table[operator]
json_operator["operatorName"] = operator.json_name
json_operator["cat"] = operator.cat
if operator.cat != "input":
json_operator["input"] = list(map(lambda x: self.id_table[x], operator.inputOperator))
else:
json_operator["input"] = []
if operator.cat != "output":
json_operator["output"] = list(map(lambda x: self.id_table[x], operator.outputOperator))
else:
json_operator["output"] = []
json_operator["data"] = {}
if hasattr(operator, "input_type") and operator.input_type is not None:
json_operator["data"]["inputType"] = ndim_from_type(operator.input_type).to_json()
if hasattr(operator, "output_type") and operator.output_type is not None:
json_operator["data"]["outputType"] = ndim_from_type(operator.output_type).to_json()
if operator.json_name == "filter":
json_operator["data"]["udf"] = base64.b64encode(cloudpickle.dumps(operator.use_predicate)).decode('utf-8')
elif operator.json_name == "reduceBy":
json_operator["data"]["keyUdf"] = base64.b64encode(cloudpickle.dumps(operator.key_function)).decode('utf-8')
json_operator["data"]["udf"] = base64.b64encode(cloudpickle.dumps(operator.reduce_function)).decode('utf-8')
elif operator.json_name == "join":
json_operator["data"]["thisKeyUdf"] = base64.b64encode(cloudpickle.dumps(operator.this_key_function)).decode('utf-8')
json_operator["data"]["thatKeyUdf"] = base64.b64encode(cloudpickle.dumps(operator.that_key_function)).decode('utf-8')
elif operator.json_name == "cartesian":
del json_operator["data"]
elif operator.json_name == "dlTraining":
json_operator["data"]["model"] = {"modelType": "DLModel", "op": operator.model.get_out().to_dict()}
json_operator["data"]["option"] = operator.option.to_dict()
else:
if hasattr(operator, "get_udf"):
json_operator["data"]["udf"] = base64.b64encode(cloudpickle.dumps(operator.get_udf)).decode('utf-8')
if hasattr(operator, "path"):
json_operator["data"]["filename"] = operator.path
if hasattr(operator, "projection"):
json_operator["data"]["projection"] = operator.projection
if hasattr(operator, "column_names"):
json_operator["data"]["column_names"] = operator.column_names
return json_operator