code: def test_array2d_nonspecific_shape(self):
      with tempfile.TemporaryDirectory() as tmp_dir:
          my_features = DEFAULT_FEATURES.copy()
          with ArrowWriter(
              features=my_features,
              path=os.path.join(tmp_dir, "beta.arrow"),
          ) as writer:
              for key, record in generate_examples(
                  features=my_features,
                  num_examples=1,
              ):
                  example = my_features.encode_example(record)
                  writer.write(example)
              num_examples, num_bytes = writer.finalize()
          dataset = datasets.Dataset.from_file(
              os.path.join(tmp_dir, "beta.arrow")
          )
          dataset.set_format("numpy")
          row = dataset[0]
          first_shape = row["image"].shape
          second_shape = row["text"].shape
          self.assertTrue(
              first_shape is not None and second_shape is not None,
              "need atleast 2 different shapes",
          )
          self.assertEqual(
              len(first_shape),
              len(second_shape),
              "both shapes are supposed to be equal length",
          )
          self.assertNotEqual(
              first_shape, second_shape, "shapes must not be the same"
          )
          del dataset
  
imports: import os
  import random
  import tempfile
  import unittest
  import numpy
  import pandas
  import pyarrow
  import pytest
  from absl.testing import parameterized
  import datasets
  from datasets.arrow_writer import ArrowWriter
  from datasets.features import Array2D, Array3D, Array4D, Array5D, Value
  from datasets.features.features import Array3DExtensionType, PandasArrayExtensionDtype, _ArrayXD
  from datasets.formatting.formatting import NumpyArrowExtractor, SimpleArrowExtractor
label_desc: Use image node_id 1 for calling the ExtensionTypeCompatibilityTest obj's underlying member method code with example usage: obj.test_array2d_nonspecific_shape() without return types