code: def cholesky(
      x: JaxArray,
      /,
      *,
      upper: bool = False,
      out: Optional[JaxArray] = None,
  ) -> JaxArray:
      if not upper:
          ret = jnp.linalg.cholesky(x)
      else:
          axes = list(range(len(x.shape) - 2)) + [
              len(x.shape) - 1,
              len(x.shape) - 2,
          ]
          ret = jnp.transpose(
              jnp.linalg.cholesky(jnp.transpose(x, axes=axes)),
              axes=axes,
          )
      return ret
  
imports: from collections import namedtuple
  from typing import Union, Optional, Tuple, Literal, Sequence, NamedTuple
  import jax.numpy
  import ivy
  from ivy import inf
  from ivy.func_wrapper import with_unsupported_dtypes
  from ivy.functional.backends.jax import JaxArray
  from .None import backend_version
  from ivy import promote_types_of_inputs
label_desc: Use image node_id 1 for calling a global function with example usage: cholesky() and returns: ret