code: def _makenames_list(adict, align):
      allfields = []
      fnames = list(adict.keys())
      for fname in fnames:
          obj = adict[fname]
          n = len(obj)
          if not isinstance(obj, tuple) or n not in [2, 3]:
              raise ValueError("entry not a 2- or 3- tuple")
          if (n > 2) and (obj[2] == fname):
              continue
          num = int(obj[1])
          if num < 0:
              raise ValueError("invalid offset.")
          format = dtype(obj[0], align=align)
          if n > 2:
              title = obj[2]
          else:
              title = None
          allfields.append((fname, format, num, title))
      # sort by offsets
      allfields.sort(key=lambda x: x[2])
      names = [x[0] for x in allfields]
      formats = [x[1] for x in allfields]
      offsets = [x[2] for x in allfields]
      titles = [x[3] for x in allfields]
  
      return names, formats, offsets, titles
  
imports: from __future__ import division, absolute_import, print_function
  import re
  import sys
  import platform
  from numpy.compat import unicode
  from numpy.core.overrides import set_module
  from .multiarray import dtype, array, ndarray
label_desc: Use image node_id 1 for calling a global function with example usage: _makenames_list(adict, align) and returns: names,  formats,  offsets,  titles