setuptools 3.3–18.4 with parser setuptools 3.3–18.4 without parser2 setuptools 18.5–20.1.1 with parser setuptools 19.1–20.1.1 without parser2,3 packaging 16.1–16.5 (& setuptools 20.2–20.6.5) packaging 16.6 (& setuptools 20.6.6–20.9.0) packaging 16.7 (& setuptools 20.10.0–22.0.5 & pip 8.1.2) distlib 0.1.8–0.2.3 (& pip 6.0–8.1.1)
python_version
✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
python_full_version
✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
os_name
✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
os.name1




✓ ✓
sys_platform
✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
sys.platform




✓ ✓
platform_release




✓ ✓ ✓ ✓
platform_system




✓ ✓ ✓
platform_version ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
platform.version1




✓ ✓
platform_machine ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
platform.machine1




✓ ✓
platform_python_implementation
✓ ✓ ✓ ✓ ✓ ✓ ✓
platform.python_implementation1




✓ ✓
python_implementation1 ✓
✓


✓
implementation_name



✓ ✓ ✓
implementation_version



✓ ✓ ✓
extra
✓
✓ ✓4 ✓4 ✓4
  1. These do not appear in PEP 508 as of writing. These are legacy markers supported by packaging for compatibility with old software.
  2. The "without parser" variants are essentially just used on Jython and IronPython.
  3. setuptools versions 18.5 through 19.0 do not work without parser.
  4. The extra marker is meant to be defined by what uses the markers; setuptools' APIs fails to parse it, though packaging can parse it but cannot evaluate whether the markers match.