diff --git a/src/pip/_internal/network/session.py b/src/pip/_internal/network/session.py index 4af800f12fe..2e1d539d1a0 100644 --- a/src/pip/_internal/network/session.py +++ b/src/pip/_internal/network/session.py @@ -19,6 +19,8 @@ import mimetypes import os import platform +import shutil +import subprocess import sys import urllib.parse import warnings @@ -163,6 +165,18 @@ def user_agent(): if setuptools_dist is not None: data["setuptools_version"] = str(setuptools_dist.version) + if shutil.which("rustc") is not None: + # If for any reason `rustc --version` fails, silently ignore it + try: + rustc_output = subprocess.check_output(["rustc", "--version"]) + except Exception: + pass + else: + # The format of `rustc --version` is: + # `b'rustc 1.52.1 (9bc8c42bb 2021-05-09)\n'` + # We extract just the middle (1.52.1) part + data["rustc_version"] = rustc_output.split(b" ")[1].decode() + # Use None rather than False so as not to give the impression that # pip knows it is not being run under CI. Rather, it is a null or # inconclusive result. Also, we include some value rather than no