code: def get_version(name, members):
      """
      Sort list of members and return highest numbered version - if it exists.
      This function is called when an unversioned libFOO.a(libFOO.so) has
      not been found.
  
      Versioning for the member name is expected to follow
      GNU LIBTOOL conventions: the highest version (x, then X.y, then X.Y.z)
       * find [libFoo.so.X]
       * find [libFoo.so.X.Y]
       * find [libFoo.so.X.Y.Z]
  
      Before the GNU convention became the standard scheme regardless of
      binary size AIX packagers used GNU convention "as-is" for 32-bit
      archive members but used an "distinguishing" name for 64-bit members.
      This scheme inserted either 64 or _64 between libFOO and .so
      - generally libFOO_64.so, but occasionally libFOO64.so
      """
      # the expression ending for versions must start as
      # '.so.[0-9]', i.e., *.so.[at least one digit]
      # while multiple, more specific expressions could be specified
      # to search for .so.X, .so.X.Y and .so.X.Y.Z
      # after the first required 'dot' digit
      # any combination of additional 'dot' digits pairs are accepted
      # anything more than libFOO.so.digits.digits.digits
      # should be seen as a member name outside normal expectations
      exprs = [
          rf"lib{name}\.so\.[0-9]+[0-9.]*",
          rf"lib{name}_?64\.so\.[0-9]+[0-9.]*",
      ]
      for expr in exprs:
          versions = []
          for line in members:
              m = re.search(expr, line)
              if m:
                  versions.append(m.group(0))
          if versions:
              return _last_version(versions, ".")
      return None
  
file_path: cpython/Lib/ctypes/_aix.py
imports: import re
  from os import environ, path
  from sys import executable
  from ctypes import c_void_p, sizeof
  from subprocess import Popen, PIPE, DEVNULL
  from sys import maxsize
label_desc: Use image node_id 8 for calling a global function with example usage: get_version(name, members) and returns: None, _last_version