code: def _handle_call(self, ufunc, input_args, outputs):
          '''
          TODO: add description
          '''
          # if output is not None, choose the first one - since we don't support any ops with
          # multiple outputs.
          if outputs: output = outputs[0]
          else: output = None
  
          # check for supported ops.
          if ufunc.__name__ in UNARY_OPS:
              assert(len(input_args) == 1)
              return self._unary_op(UNARY_OPS[ufunc.__name__], result=output)
  
          if ufunc.__name__ in BINARY_OPS:
              # weldarray can be first or second arg.
              if isinstance(input_args[0], weldarray):
                  # first arg is weldarray, must be self
                  assert input_args[0].name == self.name
                  other_arg = input_args[1]
              else:
                  other_arg = input_args[0]
                  assert input_args[1].name == self.name
  
              return self._binary_op(other_arg, BINARY_OPS[ufunc.__name__], result=outputf _handle_call(self, ufunc, input_args, outputs):
          '''
          TODO: add description
          '''
          # if output is not None, choose the first one - since we don't support any ops with
          # multiple outputs.
          if outputs: output = outputs[0]
          else: output = None
  
          # check for supported ops.
          if ufunc.__name__ in UNARY_OPS:
              assert(len(input_args) == 1)
              return self._unary_op(UNARY_OPS[ufunc.__name__], result=output)
  
          if ufunc.__name__ in BINARY_OPS:
              # weldarray can be first or second arg.
              if isinstance(input_args[0], weldarray):
                  # first arg is weldarray, must be self
                  assert input_args[0].name == self.name
                  other_arg = input_args[1]
              else:
                  other_arg = input_args[0]
                  assert input_args[1].name == self.name
  
              return self._binary_op(other_arg, BINARY_OPS[ufunc.__name__], result=output)
docs: TODO: add description