code: def fromstring(
      datastring,
      dtype=None,
      shape=None,
      offset=0,
      formats=None,
      names=None,
      titles=None,
      aligned=False,
      byteorder=None,
  ):
      r"""Create a record array from binary data
  
      Note that despite the name of this function it does not accept `str`
      instances.
  
      Parameters
      ----------
      datastring : bytes-like
          Buffer of binary data
      dtype : data-type, optional
          Valid dtype for all arrays
      shape : int or tuple of ints, optional
          Shape of each array.
      offset : int, optional
          Position in the buffer to start reading from.
      formats, names, titles, aligned, byteorder :
          If `dtype` is ``None``, these arguments are passed to
          `numpy.format_parser` to construct a dtype. See that function for
          detailed documentation.
  
  
      Returns
      -------
      np.recarray
          Record array view into the data in datastring. This will be readonly
          if `datastring` is readonly.
  
      See Also
      --------
      numpy.frombuffer
  
      Examples
      --------
      >>> a = b'\x01\x02\x03abc'
      >>> np.core.records.fromstring(a, dtype='u1,u1,u1,S3')
      rec.array([(1, 2, 3, b'abc')],
              dtype=[('f0', 'u1'), ('f1', 'u1'), ('f2', 'u1'), ('f3', 'S3')])
  
      >>> grades_dtype = [('Name', (np.str_, 10)), ('Marks', np.float64),
      ...                 ('GradeLevel', np.int32)]
      >>> grades_array = np.array([('Sam', 33.3, 3), ('Mike', 44.4, 5),
      ...                         ('Aadi', 66.6, 6)], dtype=grades_dtype)
      >>> np.core.records.fromstring(grades_array.tobytes(), dtype=grades_dtype)
      rec.array([('Sam', 33.3, 3), ('Mike', 44.4, 5), ('Aadi', 66.6, 6)],
              dtype=[('Name', '<U10'), ('Marks', '<f8'), ('GradeLevel', '<i4')])
  
      >>> s = '\x01\x02\x03abc'
      >>> np.core.records.fromstring(s, dtype='u1,u1,u1,S3')
      Traceback (most recent call last)
         ...
      TypeError: a bytes-like object is required, not 'str'
      """
  
      if dtype is None and formats is None:
          raise TypeError(
              "fromstring() needs a 'dtype' or 'formats' argument"
          )
  
      if dtype is not None:
          descr = sb.dtype(dtype)
      else:
          descr = format_parser(
              formats, names, titles, aligned, byteorder
          ).dtype
  
      itemsize = descr.itemsize
  
      # NumPy 1.19.0, 2020-01-01
      shape = _deprecate_shape_0_as_None(shape)
  
      if shape in (None, -1):
          shape = (len(datastring) - offset) // itemsize
  
      _array = recarray(shape, descr, buf=datastring, offset=offset)
      return _array
  
imports: import warnings
  from collections import Counter
  from contextlib import nullcontext
  from .._utils import set_module
  from .None import numeric
  from .None import numerictypes
  from numpy.compat import os_fspath
  from .arrayprint import _get_legacy_print_mode
label_desc: Use image node_id 5 for calling a global function with example usage: fromstring(datastring, dtype, shape, offset, formats, names, titles, aligned, byteorder) and returns: _array