code: def testBasicDeepCopy(self):
      with DeepCopyTest._MakeBeamPipeline() as p:
          grouped = (
              p
              | beam.Create([(1, "a"), (2, "b"), (3, "c")])
              | beam.Map(
                  lambda x: DeepCopyTest._CountingIdentityFn(
                      "PreGroup", x
                  )
              )
              | beam.GroupByKey()
          )
          modified = (
              grouped
              | "Add1"
              >> beam.Map(
                  DeepCopyTest._MakeAdd1CountingIdentityFn("Add1")
              )
              | "Add2"
              >> beam.Map(
                  DeepCopyTest._MakeAdd1CountingIdentityFn("Add2")
              )
          )
          copied = deep_copy.deep_copy(modified)
  
          # pylint: disable=expression-not-assigned
          modified | "Add3" >> beam.Map(
              DeepCopyTest._MakeAdd1CountingIdentityFn("Add3")
          )
          # pylint: enable=expression-not-assigned
  
          # Check labels.
          self.assertEqual(copied.producer.full_label, "Add2.Copy0")
          self.assertEqual(
              copied.producer.inputs[0].producer.full_label,
              "Add1.Copy0",
          )
  
          # Check that deep copy was performed.
          self.assertIsNot(
              copied.producer.inputs[0], modified.producer.inputs[0]
          )
  
          # Check that copy stops at materialization boundary.
          self.assertIs(
              copied.producer.inputs[0].producer.inputs[0],
              modified.producer.inputs[0].producer.inputs[0],
          )
  
      # Check counts of processed items.
      self.assertEqual(DeepCopyTest._counts["PreGroup"], 3)
      self.assertEqual(DeepCopyTest._counts["Add1"], 6)
      self.assertEqual(DeepCopyTest._counts["Add2"], 6)
      self.assertEqual(DeepCopyTest._counts["Add3"], 3)
  
imports: import collections
  import apache_beam
  from apache_beam import pvalue
  from apache_beam.transforms import resources
  from tensorflow_transform.beam import deep_copy
  from tensorflow_transform.beam import test_helpers
  import unittest
label_desc: Use image node_id 6 for calling the DeepCopyTest obj's underlying member method code with example usage: obj.testBasicDeepCopy() without return types