parameters: (self, other, op)
docstring: Helper function for the NativeMeshTag operators when the operation is
          being done on two NativeMeshTag objects
docstring_summary: Helper function for the NativeMeshTag operators when the operation is
          being done on two NativeMeshTag objects
docstring_tokens: Helper function for the NativeMeshTag operators when the operation is being done on two NativeMeshTag objects
function: def _do_native_op(self, other, op):
          """ Helper function for the NativeMeshTag operators when the operation is
          being done on two NativeMeshTag objects"""
  
          if self.size == other.size:
              try:
                  return _ops[op](self[:], other[:])
              except:
                  raise ValueError("Data must have the same shape")
          elif other.size > 1:
              try:
                  return _ops[op](self[:][:, None], other[:])
              except:
                  raise ValueError("Incompatible shape for scalar or vector data")
          elif self.size > 1:
              try:
                  return _ops[op](self[:], other[:][None, :])
              except:
                  raise ValueError("Incompatible shape for vector or scalar data")
function_tokens: def _do_native_op ( self , other , op ) : if self . size == other . size : try : return _ops [ op ] ( self [ : ] , other [ : ] ) except : raise ValueError ( "Data must have the same shape" ) elif other . size > 1 : try : return _ops [ op ] ( self [ : ] [ : , None ] , other [ : ] ) except : raise ValueError ( "Incompatible shape for scalar or vector data" ) elif self . size > 1 : try : return _ops [ op ] ( self [ : ] , other [ : ] [ None , : ] ) except : raise ValueError ( "Incompatible shape for vector or scalar data" )