code: def _insert_op(tape, ops, op_idx):
      """Create new tapes, each with an additional operation from a provided list inserted at
      the specified position. Creates as many new tapes as there are operations provided.
  
      Args:
          tape (`~.QuantumTape`): Original tape.
          ops (list[qml.Operation]): Operations to insert (individually) at ``op_idx``
              to produce a new tape each.
          op_idx (int): Index at which to insert the operations in ``ops``.
  
      Returns:
          list[`~.QuantumScript`]: new tapes with inserted operations, one tape per operation
          in ``ops``.
      """
      ops_pre = tape.operations[:op_idx]
      ops_post = tape.operations[op_idx:]
      return [
          qml.tape.QuantumScript(
              ops_pre + [insert] + ops_post,
              tape.measurements,
              shots=tape.shots,
          )
          for insert in ops
      ]
  
file_path: pennylane/pennylane/gradients/pulse_gradient_odegen.py
imports: from typing import Callable, Sequence
  from functools import partial
  import numpy
  import pennylane
  from pennylane.pulse import ParametrizedEvolution
  from pennylane.ops.qubit.special_unitary import pauli_basis_strings, _pauli_decompose
  from pennylane import transform
  from .parameter_shift import _make_zero_rep
  from .pulse_gradient import _assert_has_jax, raise_pulse_diff_on_qnode
  from .gradient_transform import _all_zero_grad, assert_no_state_returns, assert_no_tape_batching, assert_no_variance, choose_trainable_params, find_and_validate_gradient_methods, _no_trainable_grad, reorder_grads
label_desc: Use image node_id 4 for calling a global function with example usage: _insert_op(tape, ops, op_idx) and returns: unknown