code: def numba_funcify_Eigh(op, node, **kwargs):
      uplo = op.UPLO
  
      if uplo != "L":
          warnings.warn(
              (
                  "Numba will use object mode to allow the "
                  "`UPLO` argument to `numpy.linalg.eigh`."
              ),
              UserWarning,
          )
  
          out_dtypes = tuple(o.type.numpy_dtype for o in node.outputs)
          ret_sig = numba.types.Tuple(
              [
                  get_numba_type(node.outputs[0].type),
                  get_numba_type(node.outputs[1].type),
              ]
          )
  
          @numba_basic.numba_njit
          def eigh(x):
              with numba.objmode(ret=ret_sig):
                  out = np.linalg.eigh(x, UPLO=uplo)
                  ret = (
                      out[0].astype(out_dtypes[0]),
                      out[1].astype(out_dtypes[1]),
                  )
              return ret
  
      else:
  
          @numba_basic.numba_njit(inline="always")
          def eigh(x):
              return np.linalg.eigh(x)
  
      return eigh
  
file_path: pytensor/pytensor/link/numba/dispatch/nlinalg.py
imports: import warnings
  import numba
  import numpy
  from pytensor.link.numba.dispatch import basic
  from pytensor.link.numba.dispatch.basic import get_numba_type, int_to_float_fn, numba_funcify
  from pytensor.tensor.nlinalg import SVD, Det, Eig, Eigh, MatrixInverse, MatrixPinv, QRFull, SLogDet
label_desc: Use image node_id 5 for calling a global function with example usage: numba_funcify_Eigh(op, node) and returns: eigh, ret, np