Exemplo n.º 1
0
	def get_return_package(function_name, argument_package_list, work_range, output_halo, merge_func=''):
		data_package = Data_package()
		def get_unique_id():
			global unique_id
			unique_id += 1
			return unique_id
		data_package.unique_id = get_unique_id()
		data_package.data_dtype = numpy.ndarray
		data_package.data_halo = output_halo
		
		# Find return type of worker function
		def get_return_dtype(function_name, argument_package_list):
			from Vivaldi_translator_layer import get_return_dtype
			function_code = function_code_dict[function_name]
			return_dtype = get_return_dtype(function_name, argument_package_list, function_code)
			for elem in argument_package_list:
				if isinstance(elem, Data_package):
					if elem.data_source in ["hdfs", "local"] and merge_func == '':
						return elem.data_contents_dtype
			if return_dtype.endswith('_volume'):
				print "Vivaldi_warning"
				print "---------------------------------"
				print "Check your function"
				print "you are trying to return a volume"
				print "return_dtype: ", return_dtype
				print "---------------------------------"
			return return_dtype

		def get_return_source(argument_package_list):
			return_source = None
			
			for elem in argument_package_list:
				if elem.data_source in ["hdfs", "local"]  and merge_func== '':
					return_source = "local"
			
			return return_source
					
		return_dtype = get_return_dtype(function_name, argument_package_list)


		data_package.set_data_contents_dtype(return_dtype)
		data_package.set_full_data_range(work_range)
		data_package.set_data_range(work_range)
		data_package.halo = output_halo
		data_package.split = output_split
		data_package.shared = True

		# FREYJA STREAMING
		data_package.set_data_source(get_return_source(argument_package_list))
		return data_package