code: def _hurdle_mixture(
      *, name, nonzero_p, nonzero_dist, dtype, **kwargs
  ):
      """Helper function to create a hurdle mixtures
  
      If name is `None`, this function returns an unregistered variable
  
      In hurdle models, the zeros come from a completely different process than the rest of the data.
      In other words, the zeros are not inflated, they come from a different process.
      """
      if dtype == "float":
          zero = 0.0
          lower = np.finfo(pytensor.config.floatX).eps
      elif dtype == "int":
          zero = 0
          lower = 1
      else:
          raise ValueError("dtype must be 'float' or 'int'")
  
      nonzero_p = pt.as_tensor_variable(floatX(nonzero_p))
      weights = pt.stack([1 - nonzero_p, nonzero_p], axis=-1)
      comp_dists = [
          DiracDelta.dist(zero),
          Truncated.dist(nonzero_dist, lower=lower),
      ]
  
      if name is not None:
          return Mixture(name, weights, comp_dists, **kwargs)
      else:
          return Mixture.dist(weights, comp_dists, **kwargs)
  
imports: import warnings
  import numpy
  import pytensor
  import pytensor.tensor
  from pytensor.graph.basic import Node, equal_computations
  from pytensor.tensor import TensorVariable
  from pytensor.tensor.random.op import RandomVariable
  from pymc.distributions import transforms
  from pymc.distributions.continuous import Gamma, LogNormal, Normal, get_tau_sigma
  from pymc.distributions.discrete import Binomial, NegativeBinomial, Poisson
  from pymc.distributions.dist_math import check_parameters
  from pymc.distributions.distribution import DiracDelta, Distribution, SymbolicRandomVariable, _moment, moment
  from pymc.distributions.shape_utils import _change_dist_size, change_dist_size
  from pymc.distributions.transforms import _default_transform
  from pymc.distributions.truncated import Truncated
  from pymc.logprob.abstract import _logcdf, _logcdf_helper, _logprob
  from pymc.logprob.basic import logp
  from pymc.logprob.transforms import IntervalTransform
  from pymc.pytensorf import floatX
  from pymc.util import check_dist_not_registered
  from pymc.vartypes import continuous_types, discrete_types
label_desc: Use image node_id 7 for calling a global function with example usage: _hurdle_mixture() and returns: Mixture, Mixture