🐛 fix(create): debug build venvlauncher lookup on Windows 3.13+#3151
Merged
Conversation
The test fixture JSON files lacked the debug_build field added in python-discovery 1.4.0, causing AttributeError when _debug_suffix() accessed interpreter.debug_build. Add debug_build to fixtures and use getattr() defensively for cached PythonInfo objects from older versions. Also fix docs table removing misleading Free-threaded column.
executables() compared ref.src.name against "python.exe" to find refs to replace with venvlauncher. For debug builds where the host exe is python_d.exe, this never matched. Use ref.base (the target name) and host_python() to locate the launcher correctly. Add debug build fixture and tests that exercise both the shim and venvlauncher paths.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Windows debug builds (
python_d.exe) on CPython 3.13+ never used thevenvlauncher_d.exeshim becauseexecutables()comparedref.src.nameagainst"python.exe". When the host interpreter is a debug build,srcispython_d.exe, so the comparison always failed and the venvlauncher replacement was silently skipped.🐛 The fix switches to comparing
ref.base(the target name, which is always"python.exe") and usescls.host_python()to locate the launcher in the correct directory. The docs table for supported Python versions is also cleaned up to avoid implying CPython support starts at 3.13+.The debug build fixture JSON files from #3150 were also missing the
debug_buildfield added inpython-discovery1.4.0, causingAttributeErroron all Windows test jobs. The field is now present, and_debug_suffix()usesgetattrdefensively for any stale cachedPythonInfoobjects.