class_docstr: The Snapshot operation saves the internal simulator state at specific
  execution steps of a quantum function. As such, it is a pseudo operation
  with no effect on the quantum state. Arbitrary measurements are supported
  in snapshots via the keyword argument ``measurement``.
  
  **Details:**
  
  * Number of wires: AllWires
  * Number of parameters: 0
  
  Args:
      tag (str or None): An optional custom tag for the snapshot, used to index it
          in the snapshots dictionary.
  
      measurement (StateMeasurement or None): An optional argument to record arbitrary
          measurements of a state.
  
  **Example**
  
  .. code-block:: python3
  
      dev = qml.device("default.qubit", wires=2)
  
      @qml.qnode(dev, interface=None)
      def circuit():
          qml.Snapshot(measurement=qml.expval(qml.PauliZ(0))
          qml.Hadamard(wires=0)
          qml.Snapshot("very_important_state")
          qml.CNOT(wires=[0, 1])
          qml.Snapshot()
          return qml.expval(qml.PauliX(0))
  
  >>> qml.snapshots(circuit)()
  {0: 1.0,
   'very_important_state': array([0.70710678, 0.        , 0.70710678, 0.        ]),
   2: array([0.70710678, 0.        , 0.        , 0.70710678]),
   'execution_results': 0.0}
  
  .. seealso:: :func:`~.snapshots`
code: def __init__(self, tag=None, measurement=None):
      self.tag = tag
      if measurement:
          if isinstance(measurement, qml.measurements.StateMeasurement):
              qml.queuing.QueuingManager.remove(measurement)
          else:
              raise ValueError(
                  f"The measurement {measurement.__class__.__name__} is not supported as it is not "
                  f"an instance of {qml.measurements.StateMeasurement}"
              )
      self.hyperparameters["measurement"] = measurement
      super().__init__(wires=[])
  
imports: from copy import copy
  import pennylane
  from pennylane.operation import AnyWires, Operation
  from pennylane.wires import Wires
label_desc: Use image node_id 1 to create a new Snapshot object from inherited base classes: Operation with example: obj = Snapshot(tag, measurement)