From 2a4304a546958b0ebe6e8ac112be30116fd6b2c1 Mon Sep 17 00:00:00 2001 From: Shantanu <12621235+hauntsaninja@users.noreply.github.com> Date: Sun, 2 Apr 2023 15:47:31 -0700 Subject: [PATCH] gh-102038: Skip a sometimes unnecessary stat in site.py (#102039) --- Lib/site.py | 21 +++++++++++-------- ...-02-19-01-49-46.gh-issue-102038.n3if3D.rst | 1 + 2 files changed, 13 insertions(+), 9 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2023-02-19-01-49-46.gh-issue-102038.n3if3D.rst diff --git a/Lib/site.py b/Lib/site.py index 5c1ff31f4e0f9ee..672fa7b000ad02c 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -492,20 +492,23 @@ def venv(known_paths): executable = sys._base_executable = os.environ['__PYVENV_LAUNCHER__'] else: executable = sys.executable - exe_dir, _ = os.path.split(os.path.abspath(executable)) + exe_dir = os.path.dirname(os.path.abspath(executable)) site_prefix = os.path.dirname(exe_dir) sys._home = None conf_basename = 'pyvenv.cfg' - candidate_confs = [ - conffile for conffile in ( - os.path.join(exe_dir, conf_basename), - os.path.join(site_prefix, conf_basename) + candidate_conf = next( + ( + conffile for conffile in ( + os.path.join(exe_dir, conf_basename), + os.path.join(site_prefix, conf_basename) ) - if os.path.isfile(conffile) - ] + if os.path.isfile(conffile) + ), + None + ) - if candidate_confs: - virtual_conf = candidate_confs[0] + if candidate_conf: + virtual_conf = candidate_conf system_site = "true" # Issue 25185: Use UTF-8, as that's what the venv module uses when # writing the file. diff --git a/Misc/NEWS.d/next/Library/2023-02-19-01-49-46.gh-issue-102038.n3if3D.rst b/Misc/NEWS.d/next/Library/2023-02-19-01-49-46.gh-issue-102038.n3if3D.rst new file mode 100644 index 000000000000000..40df20cb596049f --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-02-19-01-49-46.gh-issue-102038.n3if3D.rst @@ -0,0 +1 @@ +Skip a ``stat`` in :mod:`site` if we have already found a ``pyvenv.cfg``