class_docstr: Tests for the transform specs using the QNode
class_docstr_tok: ["Tests","for","the","transform","specs","using","the","QNode"]
docstr: Test that a custom gradient transform is properly labelled
docstr_tok: ["Test","that","a","custom","gradient","transform","is","properly","labelled"]
code: def test_custom_gradient_transform(self):
      """Test that a custom gradient transform is properly labelled"""
      dev = qml.device("default.qubit", wires=2)
  
      @qml.transforms.core.transform
      def my_transform(
          tape: qml.tape.QuantumTape,
      ) -> (Sequence[qml.tape.QuantumTape], Callable):
          return tape, None
  
      @qml.qnode(dev, diff_method=my_transform)
      def circuit():
          return qml.probs(wires=0)
  
      info = qml.specs(circuit)()
      assert info["diff_method"] == "test_specs.my_transform"
      assert info["gradient_fn"] == "test_specs.my_transform"
  
file_path: pennylane/tests/resource/test_specs.py
imports: from typing import Sequence, Callable
  from collections import defaultdict
  from contextlib import nullcontext
  import pytest
  import pennylane
  from pennylane import numpy
label_desc: Use image node_id 8 for calling the TestSpecsTransform obj's underlying member method code with example usage: obj.test_custom_gradient_transform() and returns: tape,  None, qml