code: def find_measurable_clips(
      fgraph: FunctionGraph, node: Node
  ) -> Optional[List[MeasurableClip]]:
      # TODO: Canonicalize x[x>ub] = ub -> clip(x, x, ub)
  
      rv_map_feature: Optional[PreserveRVMappings] = getattr(
          fgraph, "preserve_rv_mappings", None
      )
      if rv_map_feature is None:
          return None  # pragma: no cover
  
      if not rv_map_feature.request_measurable(node.inputs):
          return None
  
      base_var, lower_bound, upper_bound = node.inputs
  
      # Replace bounds by `+-inf` if `y = clip(x, x, ?)` or `y=clip(x, ?, x)`
      # This is used in `clip_logprob` to generate a more succinct logprob graph
      # for one-sided clipped random variables
      lower_bound = (
          lower_bound
          if (lower_bound is not base_var)
          else pt.constant(-np.inf)
      )
      upper_bound = (
          upper_bound
          if (upper_bound is not base_var)
          else pt.constant(np.inf)
      )
  
      clipped_rv = measurable_clip.make_node(
          base_var, lower_bound, upper_bound
      ).outputs[0]
      return [clipped_rv]
  
imports: from typing import List, Optional
  import numpy
  import pytensor.tensor
  from pytensor.graph.basic import Node
  from pytensor.graph.fg import FunctionGraph
  from pytensor.graph.rewriting.basic import node_rewriter
  from pytensor.scalar.basic import Ceil, Clip, Floor, RoundHalfToEven
  from pytensor.scalar.basic import clip
  from pytensor.tensor.math import ceil, clip, floor, round_half_to_even
  from pytensor.tensor.variable import TensorConstant
  from pymc.logprob.abstract import MeasurableElemwise, _logcdf, _logprob
  from pymc.logprob.rewriting import PreserveRVMappings, measurable_ir_rewrites_db
  from pymc.logprob.utils import CheckParameterValue
label_desc: Use image node_id 1 for calling a global function with example usage: find_measurable_clips(fgraph, node) and returns: list, None, None