code: def numba_funcify_SolveTriangular(op, node, **kwargs):
      trans = op.trans
      lower = op.lower
      unit_diagonal = op.unit_diagonal
      check_finite = op.check_finite
  
      dtype = node.inputs[0].dtype
      if str(dtype).startswith("complex"):
          raise NotImplementedError(
              "Complex inputs not currently supported by solve_triangular in Numba mode"
          )
  
      @numba_basic.numba_njit(inline="always")
      def solve_triangular(a, b):
          if check_finite:
              if np.any(np.bitwise_or(np.isinf(a), np.isnan(a))):
                  raise np.linalg.LinAlgError(
                      "Non-numeric values (nan or inf) in input A to solve_triangular"
                  )
              if np.any(np.bitwise_or(np.isinf(b), np.isnan(b))):
                  raise np.linalg.LinAlgError(
                      "Non-numeric values (nan or inf) in input b to solve_triangular"
                  )
  
          res, info = _solve_triangular(
              a, b, trans, lower, unit_diagonal
          )
          if info != 0:
              raise np.linalg.LinAlgError(
                  "Singular matrix in input A to solve_triangular"
              )
          return res
  
      return solve_triangular
  
imports: import ctypes
  import numba
  import numpy
  from numba.core import cgutils, types
  from numba.extending import get_cython_function_address, intrinsic, overload
  from numba.np.linalg import _copy_to_fortran_order, ensure_lapack, get_blas_kind
  from scipy import linalg
  from pytensor.link.numba.dispatch import basic
  from pytensor.link.numba.dispatch.basic import numba_funcify
  from pytensor.tensor.slinalg import BlockDiagonal, Cholesky, SolveTriangular
label_desc: Use image node_id 15 for calling a global function with example usage: numba_funcify_SolveTriangular(op, node) and returns: solve_triangular, res