code: def _info(obj, output=None):
      """Provide information about ndarray obj.
  
      Parameters
      ----------
      obj : ndarray
          Must be ndarray, not checked.
      output
          Where printed output goes.
  
      Notes
      -----
      Copied over from the numarray module prior to its removal.
      Adapted somewhat as only numpy is an option now.
  
      Called by info.
  
      """
      extra = ""
      tic = ""
      bp = lambda x: x
      cls = getattr(obj, "__class__", type(obj))
      nm = getattr(cls, "__name__", cls)
      strides = obj.strides
      endian = obj.dtype.byteorder
  
      if output is None:
          output = sys.stdout
  
      print("class: ", nm, file=output)
      print("shape: ", obj.shape, file=output)
      print("strides: ", strides, file=output)
      print("itemsize: ", obj.itemsize, file=output)
      print("aligned: ", bp(obj.flags.aligned), file=output)
      print("contiguous: ", bp(obj.flags.contiguous), file=output)
      print("fortran: ", obj.flags.fortran, file=output)
      print(
          "data pointer: %s%s"
          % (hex(obj.ctypes._as_parameter_.value), extra),
          file=output,
      )
      print("byteorder: ", end=" ", file=output)
      if endian in ["|", "="]:
          print("%s%s%s" % (tic, sys.byteorder, tic), file=output)
          byteswap = False
      elif endian == ">":
          print("%sbig%s" % (tic, tic), file=output)
          byteswap = sys.byteorder != "big"
      else:
          print("%slittle%s" % (tic, tic), file=output)
          byteswap = sys.byteorder != "little"
      print("byteswap: ", bp(byteswap), file=output)
      print("type: %s" % obj.dtype, file=output)
  
imports: import os
  import sys
  import textwrap
  import types
  import re
  import warnings
  import functools
  import platform
  from numpy._core import ndarray
  from numpy._utils import set_module
  import numpy
label_desc: Use image node_id 8 for calling a global function with example usage: _info(obj, output) without return types