code: def test_get_tensor_shape(dict_of_ndarrays):
      assert all(
          -1 == _get_tensor_shape(tensor)[0]
          for tensor in dict_of_ndarrays.values()
      )
  
      data = dict_of_ndarrays["4D"]
      # Specify variable dimension
      for i in range(-4, 4):
          assert _get_tensor_shape(data, i)[i] == -1
  
      # Specify None
      assert all([_get_tensor_shape(data, None) != -1])
  
      # Out of bounds
      with pytest.raises(
          MlflowException,
          match="The specified variable_dimension 10 is out of bounds",
      ):
          _get_tensor_shape(data, 10)
      with pytest.raises(
          MlflowException,
          match="The specified variable_dimension -10 is out of bounds",
      ):
          _get_tensor_shape(data, -10)
  
imports: import datetime
  import json
  import math
  import re
  import numpy
  import pandas
  import pyspark
  import pyspark.sql.types
  import pytest
  from scipy.sparse import csc_matrix, csr_matrix
  from mlflow.exceptions import MlflowException
  from mlflow.models.utils import _enforce_tensor_spec
  from mlflow.pyfunc import _parse_spark_datatype
  from mlflow.types import DataType
  from mlflow.types.schema import Array, ColSpec, Object, ParamSchema, ParamSpec, Property, Schema, TensorSpec
  from mlflow.types.utils import _get_tensor_shape, _infer_colspec_type, _infer_param_schema, _infer_schema, _validate_input_dictionary_contains_only_strings_and_lists_of_strings
label_desc: Use image node_id 11 for calling a global function with example usage: test_get_tensor_shape(dict_of_ndarrays) without return types