code: def test_array_to_and_from_dict(data_type):
      arr = Array(data_type)
      assert arr.to_dict() == {
          "type": "array",
          "items": {"type": data_type.name},
      }
      assert (
          Array.from_json_dict(**json.loads(json.dumps(arr.to_dict())))
          == arr
      )
  
      # test object
      arr = Array(Object([Property("p", data_type)]))
      assert arr.to_dict() == {
          "type": "array",
          "items": {
              "type": "object",
              "properties": {
                  "p": {"type": data_type.name, "required": True}
              },
          },
      }
      assert (
          Array.from_json_dict(**json.loads(json.dumps(arr.to_dict())))
          == arr
      )
  
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 39 for calling a global function with example usage: test_array_to_and_from_dict(data_type) without return types