code: def _ops_equal(op1, op2):
      """Checks if two operators are equal up to class, data, hyperparameters, and wires"""
      return (
          op1.__class__ is op2.__class__
          and (op1.data == op2.data)
          and (op1.hyperparameters == op2.hyperparameters)
          and (op1.wires == op2.wires)
      )
  
file_path: pennylane/pennylane/transforms/optimization/cancel_inverses.py
imports: from typing import Sequence, Callable
  from pennylane.ops.op_math import Adjoint
  from pennylane.wires import Wires
  from pennylane.tape import QuantumTape
  from pennylane.transforms import transform
  from pennylane.ops.qubit.attributes import self_inverses, symmetric_over_all_wires, symmetric_over_control_wires
  from .optimization_utils import find_next_gate
label_desc: Use image node_id 1 for calling a global function with example usage: _ops_equal(op1, op2) and returns: unknown