code: def testArtifactGenericAnnotation(self):
      # Error: type hint whose parameter is not an Artifact subclass.
      with self.assertRaisesRegex(
          ValueError, "expects .* a concrete subclass of"
      ):
          _ = annotations._ArtifactGeneric[
              int
          ]  # pytype: disable=unsupported-operands
  
      # Error: type hint with abstract Artifact subclass.
      with self.assertRaisesRegex(
          ValueError, "expects .* a concrete subclass of"
      ):
          _ = annotations._ArtifactGeneric[artifact.Artifact]
  
      # Error: type hint with abstract Artifact subclass.
      with self.assertRaisesRegex(
          ValueError, "expects .* a concrete subclass of"
      ):
          _ = annotations._ArtifactGeneric[value_artifact.ValueArtifact]
  
      # OK.
      _ = annotations._ArtifactGeneric[standard_artifacts.Examples]
  
file_path: tfx/tfx/dsl/component/experimental/annotations_test.py
imports: from typing import Dict
  import apache_beam
  import tensorflow
  from tfx.dsl.component.experimental import annotations
  from tfx.types import artifact
  from tfx.types import standard_artifacts
  from tfx.types import value_artifact
label_desc: Use image node_id 1 for calling the AnnotationsTest obj's underlying member method code with example usage: obj.testArtifactGenericAnnotation() without return types