code: def numba_funcify_FillDiagonalOffset(op, node, **kwargs):
      @numba_basic.numba_njit
      def filldiagonaloffset(a, val, offset):
          height, width = a.shape
  
          if offset >= 0:
              start = numba_basic.to_scalar(offset)
              num_of_step = min(min(width, height), width - offset)
          else:
              start = -numba_basic.to_scalar(offset) * a.shape[1]
              num_of_step = min(min(width, height), height + offset)
  
          step = a.shape[1] + 1
          end = start + step * num_of_step
          b = a.ravel()
          b[start:end:step] = val
          # TODO: This isn't implemented in Numba
          # a.flat[start:end:step] = val
          # return a
          return b.reshape(a.shape)
  
      return filldiagonaloffset
  
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 4 for calling a global function with example usage: numba_funcify_FillDiagonalOffset(op, node) and returns: filldiagonaloffset, b