class_docstr: Abstract base class for PennyLane devices.
  
  Args:
      wires (int or Iterable[Number, str]]): Number of subsystems represented by the device,
          or iterable that contains unique labels for the subsystems as numbers (i.e., ``[-1, 0, 2]``)
          or strings (``['ancilla', 'q1', 'q2']``). Default 1 if not specified.
      shots (int): Number of circuit evaluations/random samples used to estimate
          expectation values of observables. Defaults to 1000 if not specified.
class_docstr_tok: ["Abstract","base","class","for","PennyLane","devices",".","Args",":","wires","(","int","or","Iterable","[","Number",",","str","]","]",")",":","Number","of","subsystems","represented","by","the","device",",","or","iterable","that","contains","unique","labels","for","the","subsystems","as","numbers","(","i.e.",",","``","[","-1",",","0",",","2","]","``",")","or","strings","(","``","[","'ancilla","'",",","'q1","'",",","'q2","'","]","``",")",".","Default","1","if","not","specified",".","shots","(","int",")",":","Number","of","circuit","evaluations\/random","samples","used","to","estimate","expectation","values","of","observables",".","Defaults","to","1000","if","not","specified","."]
docstr: Return the gradients of a batch of quantum circuits on the device.
  
  The gradient method ``method`` is called sequentially for each
  circuit, and the corresponding Jacobians are collected in a list.
  
  For plugin developers: This method should be overwritten if the device
  can efficiently compute the gradient of multiple circuits on a
  backend, for example using parallel and/or asynchronous executions.
  
  Args:
      circuits (list[.tape.QuantumTape]): circuits to execute on the device
      method (str): the device method to call to compute the Jacobian of a single circuit
      **kwargs: keyword argument to pass when calling ``method``
  
  Returns:
      list[array[float]]: List of Jacobians. Returned Jacobians should be of
      shape ``(output_shape, num_params)``.
docstr_tok: ["Return","the","gradients","of","a","batch","of","quantum","circuits","on","the","device",".","The","gradient","method","``","method","``","is","called","sequentially","for","each","circuit",",","and","the","corresponding","Jacobians","are","collected","in","a","list",".","For","plugin","developers",":","This","method","should","be","overwritten","if","the","device","can","efficiently","compute","the","gradient","of","multiple","circuits","on","a","backend",",","for","example","using","parallel","and\/or","asynchronous","executions",".","Args",":","circuits","(","list","[",".tape.QuantumTape","]",")",":","circuits","to","execute","on","the","device","method","(","str",")",":","the","device","method","to","call","to","compute","the","Jacobian","of","a","single","circuit","*","*","kwargs",":","keyword","argument","to","pass","when","calling","``","method","``","Returns",":","list","[","array","[","float","]","]",":","List","of","Jacobians",".","Returned","Jacobians","should","be","of","shape","``","(","output_shape",",","num_params",")","``","."]
code: def gradients(self, circuits, method="jacobian", **kwargs):
      """Return the gradients of a batch of quantum circuits on the device.
  
      The gradient method ``method`` is called sequentially for each
      circuit, and the corresponding Jacobians are collected in a list.
  
      For plugin developers: This method should be overwritten if the device
      can efficiently compute the gradient of multiple circuits on a
      backend, for example using parallel and/or asynchronous executions.
  
      Args:
          circuits (list[.tape.QuantumTape]): circuits to execute on the device
          method (str): the device method to call to compute the Jacobian of a single circuit
          **kwargs: keyword argument to pass when calling ``method``
  
      Returns:
          list[array[float]]: List of Jacobians. Returned Jacobians should be of
          shape ``(output_shape, num_params)``.
      """
      if self.tracker.active:
          self.tracker.update(derivatives=len(circuits))
          self.tracker.record()
      gradient_method = getattr(self, method)
      return [
          gradient_method(circuit, **kwargs) for circuit in circuits
      ]
  
imports: import abc
  import copy
  import types
  import warnings
  from collections import OrderedDict
  from collections.abc import Iterable, Sequence
  from functools import lru_cache
  import numpy
  import pennylane
  from pennylane.measurements import MeasurementProcess, CountsMP, Expectation, ExpectationMP, MidMeasureMP, Probability, ProbabilityMP, Sample, SampleMP, ShadowExpvalMP, State, Variance
  from pennylane.operation import Observable, Operation, Tensor, Operator, StatePrepBase
  from pennylane.ops import Hamiltonian, Sum
  from pennylane.tape import QuantumScript, QuantumTape, expand_tape_state_prep
  from pennylane.wires import WireError, Wires
  from pennylane.queuing import QueuingManager
label_desc: Use image node_id 26 for calling the Device obj's underlying member method code with example usage: obj.gradients(circuits, method) and returns: unknown