code: def create_scalar_operation_from_proto(
      proto,
      input_coder_info,
      output_coder_into,
      one_arg_optimization=False,
      one_result_optimization=False,
  ):
      from pyflink.fn_execution.table.operations import (
          ScalarFunctionOperation,
      )
  
      serialized_fn = parse_function_proto(proto)
  
      input_data_converter = from_schema_proto(
          parse_coder_proto(input_coder_info).flatten_row_type.schema,
          one_arg_optimization,
      )
  
      output_data_converter = from_schema_proto(
          parse_coder_proto(output_coder_into).flatten_row_type.schema,
          one_result_optimization,
      )
  
      scalar_operation = ScalarFunctionOperation(
          serialized_fn, one_arg_optimization, one_result_optimization
      )
  
      process_element_func = scalar_operation.process_element
  
      def process_element(value):
          actual_value = input_data_converter.to_internal(value)
          result = process_element_func(actual_value)
          return output_data_converter.to_external(result)
  
      scalar_operation.process_element = process_element
      return scalar_operation
  
file_path: flink/flink-python/pyflink/fn_execution/embedded/operation_utils.py
imports: from pyflink.fn_execution.embedded.operations import OneInputFunctionOperation, TwoInputFunctionOperation
  from pyflink.fn_execution.embedded.converters import from_type_info_proto, from_schema_proto
label_desc: Use image node_id 4 for calling a global function with example usage: create_scalar_operation_from_proto(proto, input_coder_info, output_coder_into, one_arg_optimization, one_result_optimization) and returns: scalar_operation, output_data_converter