code: def categorical_to_funsor(
      numpyro_dist, output=None, dim_to_name=None
  ):
      new_pyro_dist = _NumPyroWrapper_Geometric(
          probs=numpyro_dist.probs
      )
      return backenddist_to_funsor(
          Geometric, new_pyro_dist, output, dim_to_name
      )
  
imports: import functools
  from typing import Tuple, Union
  import numpyro.distributions
  import funsor.ops
  from funsor.cnf import Contraction
  from funsor.distribution import FUNSOR_DIST_NAMES, Bernoulli, LogNormal, backenddist_to_funsor, eager_beta, eager_beta_bernoulli, eager_binomial, eager_categorical_funsor, eager_categorical_tensor, eager_delta_funsor_funsor, eager_delta_funsor_variable, eager_delta_tensor, eager_delta_variable_variable, eager_dirichlet_categorical, eager_dirichlet_multinomial, eager_dirichlet_posterior, eager_gamma_gamma, eager_gamma_poisson, eager_multinomial, eager_mvn, eager_normal, eager_plate_multinomial, expandeddist_to_funsor, indepdist_to_funsor, make_dist, maskeddist_to_funsor, transformeddist_to_funsor
  from funsor.domains import Real, Reals
  from funsor.interpretations import eager
  from funsor.tensor import Tensor
  from funsor.terms import Binary, Funsor, Reduce, Variable, to_data, to_funsor
  from funsor.util import methodof
label_desc: Use image node_id 12 for calling a global function with example usage: categorical_to_funsor(numpyro_dist, output, dim_to_name) and returns: backenddist_to_funsor