def _pep425tags():
tags = []<EOL>versions = []<EOL>version_info = _pep425_version()<EOL>major = version_info[:-<NUM_LIT:1>]<EOL>for minor in range(version_info[-<NUM_LIT:1>], -<NUM_LIT:1>, -<NUM_LIT:1>):<EOL><INDENT>versions.append('<STR_LIT>'.join(map(str, major + (minor,))))<EOL><DEDENT>impl = _pep425_implementation()<EOL>abis = []<EOL>abi = _pep425_get_abi()<EOL>if abi:<EOL><INDENT>abis.append(abi)<EOL><DEDENT>abi3 = _pep425_implementation() == '<STR_LIT>' and sys.version_info >= (<NUM_LIT:3>,)<EOL>if abi3:<EOL><INDENT>abis.append('<STR_LIT>')<EOL><DEDENT>abis.append('<STR_LIT:none>')<EOL>if sys.platform == '<STR_LIT>':<EOL><INDENT>plat_ver = platform.mac_ver()<EOL>ver_parts = plat_ver[<NUM_LIT:0>].split('<STR_LIT:.>')<EOL>minor = int(ver_parts[<NUM_LIT:1>])<EOL>arch = plat_ver[<NUM_LIT:2>]<EOL>if sys.maxsize == <NUM_LIT>:<EOL><INDENT>arch = '<STR_LIT>'<EOL><DEDENT>arches = []<EOL>while minor > <NUM_LIT:5>:<EOL><INDENT>arches.append('<STR_LIT>' % (minor, arch))<EOL>arches.append('<STR_LIT>' % (minor,))<EOL>arches.append('<STR_LIT>' % (minor,))<EOL>minor -= <NUM_LIT:1><EOL><DEDENT><DEDENT>else:<EOL><INDENT>if sys.platform == '<STR_LIT:win32>':<EOL><INDENT>if '<STR_LIT>' in sys.version.lower():<EOL><INDENT>arches = ['<STR_LIT>']<EOL><DEDENT>arches = [sys.platform]<EOL><DEDENT>elif hasattr(os, '<STR_LIT>'):<EOL><INDENT>(plat, _, _, _, machine) = os.uname()<EOL>plat = plat.lower().replace('<STR_LIT:/>', '<STR_LIT>')<EOL>machine.replace('<STR_LIT:U+0020>', '<STR_LIT:_>').replace('<STR_LIT:/>', '<STR_LIT:_>')<EOL>if plat == '<STR_LIT>' and sys.maxsize == <NUM_LIT>:<EOL><INDENT>machine = '<STR_LIT>'<EOL><DEDENT>arch = '<STR_LIT>' % (plat, machine)<EOL>if _pep425_supports_manylinux():<EOL><INDENT>arches = [arch.replace('<STR_LIT>', '<STR_LIT>'), arch]<EOL><DEDENT>else:<EOL><INDENT>arches = [arch]<EOL><DEDENT><DEDENT><DEDENT>for abi in abis:<EOL><INDENT>for arch in arches:<EOL><INDENT>tags.append(('<STR_LIT>' % (impl, versions[<NUM_LIT:0>]), abi, arch))<EOL><DEDENT><DEDENT>if abi3:<EOL><INDENT>for version in versions[<NUM_LIT:1>:]:<EOL><INDENT>for arch in arches:<EOL><INDENT>tags.append(('<STR_LIT>' % (impl, version), '<STR_LIT>', arch))<EOL><DEDENT><DEDENT><DEDENT>for arch in arches:<EOL><INDENT>tags.append(('<STR_LIT>' % (versions[<NUM_LIT:0>][<NUM_LIT:0>]), '<STR_LIT:none>', arch))<EOL><DEDENT>tags.append(('<STR_LIT>' % (impl, versions[<NUM_LIT:0>]), '<STR_LIT:none>', '<STR_LIT>'))<EOL>tags.append(('<STR_LIT>' % (impl, versions[<NUM_LIT:0>][<NUM_LIT:0>]), '<STR_LIT:none>', '<STR_LIT>'))<EOL>for i, version in enumerate(versions):<EOL><INDENT>tags.append(('<STR_LIT>' % (version,), '<STR_LIT:none>', '<STR_LIT>'))<EOL>if i == <NUM_LIT:0>:<EOL><INDENT>tags.append(('<STR_LIT>' % (version[<NUM_LIT:0>]), '<STR_LIT:none>', '<STR_LIT>'))<EOL><DEDENT><DEDENT>tags.append(('<STR_LIT>', '<STR_LIT:none>', '<STR_LIT>'))<EOL>return tags<EOL>
:return:
    A list of 3-element tuples with unicode strings or None:
     [0] implementation tag - cp33, pp27, cp26, py2, py2.py3
     [1] abi tag - cp26m, None
     [2] arch tag - linux_x86_64, macosx_10_10_x85_64, etc