code: def array_dtypes(
      subtype_strategy=scalar_dtypes(),  # type: st.SearchStrategy[np.dtype]
      min_size=1,  # type: int
      max_size=5,  # type: int
      allow_subarrays=False,  # type: bool
  ):
      # type: (...) -> st.SearchStrategy[np.dtype]
      """Return a strategy for generating array (compound) dtypes, with members
      drawn from the given subtype strategy."""
      order_check("size", 0, min_size, max_size)
      # Field names must be native strings and the empty string is weird; see #1963.
      if PY2:
          field_names = st.binary(min_size=1)
      else:
          field_names = st.text(min_size=1)
      elements = st.tuples(field_names, subtype_strategy)
      if allow_subarrays:
          elements |= st.tuples(
              field_names,
              subtype_strategy,
              array_shapes(max_dims=2, max_side=2),
          )
      return st.lists(
          elements=elements,
          min_size=min_size,
          max_size=max_size,
          unique_by=lambda d: d[0],
      )
  
imports: from __future__ import absolute_import, division, print_function
  import math
  import re
  from collections import namedtuple
  import numpy
  import hypothesis.internal.conjecture.utils
  import hypothesis.strategies._internal.core
  from hypothesis import Verbosity, assume
  from hypothesis._settings import note_deprecation
  from hypothesis.errors import InvalidArgument
  from hypothesis.internal.compat import PY2, hrange, integer_types, quiet_raise, string_types
  from hypothesis.internal.coverage import check_function
  from hypothesis.internal.reflection import proxies, reserved_means_kwonly_star
  from hypothesis.internal.validation import check_type, check_valid_interval
  from hypothesis.reporting import current_verbosity
  from hypothesis.strategies._internal import SearchStrategy
  from hypothesis.utils.conventions import UniqueIdentifier, not_set
label_desc: Use image node_id 20 for calling a global function with example usage: array_dtypes(subtype_strategy, min_size, max_size, allow_subarrays) and returns: st