code: def find_measurable_bitwise(
      fgraph: FunctionGraph, node: Node
  ) -> Optional[List[MeasurableBitwise]]:
      rv_map_feature: Optional[PreserveRVMappings] = getattr(
          fgraph, "preserve_rv_mappings", None
      )
      if rv_map_feature is None:
          return None  # pragma: no cover
  
      base_var = node.inputs[0]
  
      if not base_var.dtype.startswith("bool"):
          raise None
  
      if not rv_map_feature.request_measurable([base_var]):
          return None
  
      node_scalar_op = node.op.scalar_op
      bitwise_op = MeasurableBitwise(node_scalar_op)
      bitwise_rv = bitwise_op.make_node(base_var).default_output()
      return [bitwise_rv]
  
file_path: pymc/pymc/logprob/binary.py
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 GE, GT, LE, LT, Invert
  from pytensor.tensor.math import ge, gt, invert, le, lt
  from pymc.logprob.abstract import MeasurableElemwise, _logcdf_helper, _logprob, _logprob_helper
  from pymc.logprob.rewriting import PreserveRVMappings, measurable_ir_rewrites_db
  from pymc.logprob.utils import check_potential_measurability
label_desc: Use image node_id 3 for calling a global function with example usage: find_measurable_bitwise(fgraph, node) and returns: list, None, None