code: def _equal(
      op1,
      op2,
      check_interface=True,
      check_trainability=True,
      rtol=1e-5,
      atol=1e-9,
  ):  # pylint: disable=unused-argument
      raise NotImplementedError(
          f"Comparison of {type(op1)} and {type(op2)} not implemented"
      )
  
imports: from collections.abc import Iterable
  from functools import singledispatch
  from typing import Union
  import pennylane
  from pennylane.measurements import MeasurementProcess
  from pennylane.measurements.classical_shadow import ShadowExpvalMP
  from pennylane.measurements.mid_measure import MidMeasureMP, MeasurementValue
  from pennylane.measurements.mutual_info import MutualInfoMP
  from pennylane.measurements.vn_entropy import VnEntropyMP
  from pennylane.measurements.counts import CountsMP
  from pennylane.pulse.parametrized_evolution import ParametrizedEvolution
  from pennylane.operation import Observable, Operator, Tensor
  from pennylane.ops import Hamiltonian, Controlled, Pow, Adjoint, Exp, SProd, CompositeOp
  from pennylane.templates.subroutines import ControlledSequence
  from pennylane.tape import QuantumTape
label_desc: Use image node_id 2 for calling a global function with example usage: _equal(op1, op2, check_interface, check_trainability, rtol, atol) without return types