code: def test_repr_of_objects():
      obj = Object(
          properties=[
              Property(name="a", dtype=DataType.string),
              Property(name="b", dtype=DataType.double, required=False),
              Property(name="c", dtype=Array(DataType.long)),
              Property(
                  name="d",
                  dtype=Object([Property("d1", DataType.string)]),
              ),
          ]
      )
      obj_repr = (
          "{a: string (required), b: double (optional), c: Array(long) "
          "(required), d: {d1: string (required)} (required)}"
      )
      assert repr(obj) == obj_repr
  
      arr = Array(obj)
      assert repr(arr) == f"Array({obj_repr})"
  
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 50 for calling a global function with example usage: test_repr_of_objects() without return types