code: def test_discover_array_like():
      class MyArray:
          def __init__(self, shape, dtype):
              self.shape = shape
              self.dtype = dtype
  
      with catch_warnings(record=True) as wl:
          simplefilter("always")
          assert discover(MyArray((4, 3), "f4")) == dshape(
              "4 * 3 * float32"
          )
      assert len(wl) == 1
      assert issubclass(wl[0].category, DeprecationWarning)
      assert "MyArray" in str(wl[0].message)
  
imports: from collections import OrderedDict
  from itertools import starmap
  from types import MappingProxyType
  from warnings import catch_warnings, simplefilter
  import numpy
  import pytest
  from datashader.datashape.discovery import discover, null, unite_identical, unite_base, unite_merge_dimensions, do_one, lowest_common_dshape
  from datashader.datashape.coretypes import int64, float64, complex128, string, bool_, Tuple, Record, date_, datetime_, time_, timedelta_, int32, var, Option, real, Null, TimeDelta, String, float32, R
  from datashader.datashape.util.testing import assert_dshape_equal
  from datashader.datashape import dshape
  from datetime import date, time, datetime, timedelta
label_desc: Use image node_id 39 for calling a global function with example usage: test_discover_array_like() without return types