code: def get_supported(
      versions=None, noarch=False, platform=None, impl=None, abi=None
  ):
      """Return a list of supported tags for each version specified in
      `versions`.
  
      :param versions: a list of string versions, of the form ["33", "32"],
          or None. The first version will be assumed to support our ABI.
      :param platform: specify the exact platform you want valid
          tags for, or None. If None, use the local system platform.
      :param impl: specify the exact implementation you want valid
          tags for, or None. If None, use the local interpreter impl.
      :param abi: specify the exact abi you want valid
          tags for, or None. If None, use the local interpreter abi.
      """
      supported = []
  
      # Versions must be given with respect to the preference
      if versions is None:
          versions = []
          version_info = get_impl_version_info()
          major = version_info[:-1]
          # Support all previous minor Python versions.
          for minor in range(version_info[-1], -1, -1):
              versions.append("".join(map(str, major + (minor,))))
  
      impl = impl or get_abbr_impl()
  
      abis = []
  
      abi = abi or get_abi_tag()
      if abi:
          abis[0:0] = [abi]
  
      abi3s = set()
      import imp
  
      for suffix in imp.get_suffixes():
          if suffix[0].startswith(".abi"):
              abi3s.add(suffix[0].split(".", 2)[1])
  
      abis.extend(sorted(list(abi3s)))
  
      abis.append("none")
  
      if not noarch:
          arch = platform or get_platform()
          if arch.startswith("macosx"):
              # support macosx-10.6-intel on macosx-10.9-x86_64
              match = _osx_arch_pat.match(arch)
              if match:
                  name, major, minor, actual_arch = match.groups()
                  tpl = "{}_{}_%i_%s".format(name, major)
                  arches = []
                  for m in reversed(range(int(minor) + 1)):
                      for a in get_darwin_arches(
                          int(major), m, actual_arch
                      ):
                          arches.append(tpl % (m, a))
              else:
                  # arch pattern didn't match (?!)
                  arches = [arch]
          elif platform is None and is_manylinux1_compatible():
              arches = [arch.replace("linux", "manylinux1"), arch]
          else:
              arches = [arch]
  
          # Current version, current API (built specifically for our Python):
          for abi in abis:
              for arch in arches:
                  supported.append(
                      ("%s%s" % (impl, versions[0]), abi, arch)
                  )
  
          # abi3 modules compatible with older version of Python
          for version in versions[1:]:
              # abi3 was introduced in Python 3.2
              if version in {"31", "30"}:
                  break
              for abi in abi3s:  # empty set if not Python 3
                  for arch in arches:
                      supported.append(
                          ("%s%s" % (impl, version), abi, arch)
                      )
  
          # Has binaries, does not use the Python API:
          for arch in arches:
              supported.append(
                  ("py%s" % (versions[0][0]), "none", arch)
              )
  
      # No abi / arch, but requires our implementation:
      supported.append(("%s%s" % (impl, versions[0]), "none", "any"))
      # Tagged specifically as being cross-version compatible
      # (with just the major version specified)
      supported.append(("%s%s" % (impl, versions[0][0]), "none", "any"))
  
      # No abi / arch, generic Python
      for i, version in enumerate(versions):
          supported.append(("py%s" % (version,), "none", "any"))
          if i == 0:
              supported.append(("py%s" % (version[0]), "none", "any"))
  
      return supported
  
imports: from __future__ import absolute_import
  import distutils.util
  from distutils import log
  import platform
  import re
  import sys
  import sysconfig
  import warnings
  from collections import OrderedDict
  import glibc
label_desc: Use image node_id 12 for calling a global function with example usage: get_supported(versions, noarch, platform, impl, abi) and returns: supported