class_docstr: Adds subTest() context manager to the TestCase if supported.
  
  Note: To use this feature, make sure you call super() in setUpClass to
  initialize the sub stack.
code: def _subTest(self, test_str):
      self._sub_test_stack.append(test_str)
      sub_test_str = "/".join(self._sub_test_stack)
      with self.subTest(sub_test_str):
          yield
      self._sub_test_stack.pop()
  
imports: import contextlib
  import dataclasses
  import functools
  from typing import Any, Optional, Type
  import dill
  from etils import enp
  import numpy
  from tensorflow_datasets.core import dataset_utils
  from tensorflow_datasets.core import features
  from tensorflow_datasets.core import utils
  from tensorflow_datasets.core.data_sources import python
  from tensorflow_datasets.core.features import feature
  from tensorflow_datasets.core.utils import tree_utils
  from tensorflow_datasets.core.utils.lazy_imports_utils import tensorflow
  from tensorflow_datasets.testing import test_case
  from tensorflow_datasets.testing import test_utils
label_desc: Use image node_id 2 for calling the SubTestCase obj's underlying member method code with example usage: obj._subTest(test_str) without return types