code: def numba_funcify_Unique(op, node, **kwargs):
      axis = op.axis
  
      use_python = False
  
      if axis is not None:
          use_python = True
  
      return_index = op.return_index
      return_inverse = op.return_inverse
      return_counts = op.return_counts
  
      returns_multi = return_index or return_inverse or return_counts
      use_python |= returns_multi
  
      if not use_python:
  
          @numba_basic.numba_njit(inline="always")
          def unique(x):
              return np.unique(x)
  
      else:
          warnings.warn(
              (
                  "Numba will use object mode to allow the "
                  "`axis` and/or `return_*` arguments to `numpy.unique`."
              ),
              UserWarning,
          )
  
          if returns_multi:
              ret_sig = numba.types.Tuple(
                  [get_numba_type(o.type) for o in node.outputs]
              )
          else:
              ret_sig = get_numba_type(node.outputs[0].type)
  
          @numba_basic.numba_njit
          def unique(x):
              with numba.objmode(ret=ret_sig):
                  ret = np.unique(
                      x,
                      return_index,
                      return_inverse,
                      return_counts,
                      axis,
                  )
              return ret
  
      return unique
  
imports: import warnings
  from typing import cast
  import numba
  import numpy
  from pytensor import config
  from pytensor.graph import Apply
  from pytensor.link.numba.dispatch import basic
  from pytensor.link.numba.dispatch.basic import get_numba_type, numba_funcify
  from pytensor.raise_op import CheckAndRaise
  from pytensor.tensor import TensorVariable
  from pytensor.tensor.extra_ops import Bartlett, CumOp, FillDiagonal, FillDiagonalOffset, RavelMultiIndex, Repeat, SearchsortedOp, Unique, UnravelIndex
label_desc: Use image node_id 7 for calling a global function with example usage: numba_funcify_Unique(op, node) and returns: unique, np, ret