Repository navigation
Releases: tox-dev/python-discovery
Releases Β· tox-dev/python-discovery
Release list
v1.9.4
Immutable
release. Only release title and notes can be modified.
v1.9.2
Immutable
release. Only release title and notes can be modified.
Bug fixes
- Match literal interpreter names against the executable found on
PATH, including symlink names (#220) by @gaborbernat. (#188) - Preserve a virtual environment selected through
try_first_withinstead of returning its base interpreter (#218) by @gaborbernat. (#191) - Skip interpreter candidates that return JSON without usable interpreter metadata and continue searching (#231) by @gaborbernat. (#197)
- Reject format widths in interpreter sysconfig paths before they allocate oversized strings (#229) by @gaborbernat. (#199)
- Check the interpreter's reported implementation when a spec names a known implementation, regardless of its filename on
PATH(#233) by @gaborbernat. (#201) - Write interpreter cache entries as compact JSON to keep their size proportional to the interpreter response (#237) by @gaborbernat. (#204)
- Prevent an earlier virtual-environment lookup from reporting an executable under the wrong Python version (#215) by @gaborbernat.
- Retry interpreter discovery without the cache when cache access fails (#216) by @gaborbernat.
- Exclude prereleases of the final version named by an exclusive upper bound, such as
<3.12.0rejecting3.12.0rc1(#217) by @gaborbernat. - Stop repeated interpreter queries when a virtual environment reports the same base prefix with different path spellings (#219) by @gaborbernat.
- Limit candidate stdout and stderr during interpreter queries so a noisy candidate cannot exhaust the caller's memory (#223) by @gaborbernat.
- Find uv-managed patch releases when a version specifier names only their major and minor version (#227) by @gaborbernat.
- Handle interpreter paths containing non-UTF-8 filesystem bytes when using DiskCache (#230) by @gaborbernat.
- Preserve interpreter-provided values when answer keys match computed properties during cache serialization (#234) by @gaborbernat.
- Return after an interpreter query times out without leaving pipe readers blocked by a child process (#228) by @gaborbernat.
- Use the supplied environment for base-interpreter probes when resolving a virtual environment (#225) by @gaborbernat.
Security
- When an explicit
envmapping omitsHOMEorUSERPROFILE, uv-managed interpreter discovery no longer searches the process home directory (#236) by @gaborbernat. (#200) - Skip relative
PATHentries, including the working-directory entry in the Windows default search path, when discovering interpreters (#235) by @gaborbernat. (#202) - Validate pyenv, mise and asdf version names before using them as directory names. A version file can no longer direct python-discovery's resolver to a binary outside the version manager's installation directory (#205) by @gaborbernat.
- When imported from an archive, python-discovery now extracts its interpreter probe into a private temporary directory. This prevents the probe from importing modules supplied in the shared temp directory (#206) by @gaborbernat.
- Bare interpreter names now search
PATHwithout probing a matching file in the working directory. Use./namewhen the working directory contains the intended interpreter (#207) by @gaborbernat. - Tcl/Tk library detection no longer executes Tk startup profile files from the home or working directory (#208) by @gaborbernat.
- Discovery skips
.python-versionfiles over 4096 characters during shim resolution, limiting memory use and allowing a parent or global version to apply (#209) by @gaborbernat. - Discovery uses the profile default for empty or relative
APPDATAand skips relative profile paths when finding uv-managed Pythons (#210) by @gaborbernat. - Tcl/Tk library detection no longer opens an X display, so an unresponsive display cannot block interpreter discovery. It can also find the Tk library on headless systems (#211) by @gaborbernat.
- Skip PEP 514 registry entries with relative or non-string executable paths and continue interpreter discovery (#212) by @gaborbernat.
- Skip untrusted disk cache directories and entries on POSIX, and replace cache files without following links (#213) by @gaborbernat.
- Place POSIX cache locks in a restricted directory and preserve group sharing under a group-permissive umask (#214) by @gaborbernat.
- Interpreter discovery no longer reuses pyenv shim results across projects. A version choice in one checkout cannot leave an unsupported-version verdict that blocks discovery in another project (#232) by @gaborbernat.
v1.9.1
Immutable
release. Only release title and notes can be modified.
Bug fixes
- List free-threaded and debug builds on
PATH, such aspython3.13t,python3.13dandpython3.13-dbg, wheniter_interpreters()runs with no spec, as it already did for uv's+freethreadedand+debuginstalls (#181) by @darrenhuai and @gaborbernat. - Reuse preferred interpreter paths supplied as an iterator when trying multiple interpreter specifications (#180) by @subotac and @gaborbernat.
- Stop
PythonInfo.system_includereporting the interpreter's prefix as the include directory when the C headers are not installed, which happened on Python 3.11 and later and on Debian's 3.10; the missing sysconfig include path is returned instead (#182) by @darrenhuai and @gaborbernat.
New Contributors
v1.9.0
Immutable
release. Only release title and notes can be modified.
Features
- Expose the 11 marker keys through
MarkerEnvironmentfor callers that type-checkPythonInfo.marker_environment(#179) by @gaborbernat.
v1.8.0
Immutable
release. Only release title and notes can be modified.
Features
- Expose the selected interpreter's dependency marker values as
PythonInfo.marker_environment(#178) by @gaborbernat.
v1.7.0
Immutable
release. Only release title and notes can be modified.
Features
- Accept the free-threaded, debug, architecture and machine suffixes after a version specifier, as in
>=3.13torcpython>=3.11,<3.14-64, and raiseValueErrorfor a spec that starts with a comparison operator but does not parse, such as>=3.13., instead of looking it up as an executable name (#176) by @gaborbernat. (#175)
Bug fixes
- Stop a
.python-versionfile that is not valid UTF-8, or that cannot be read, from aborting discovery through a pyenv, mise or asdf shim; a stray byte no longer hides the versions it names, and an unreadable file is skipped like a missing one (#173) by @darrenhuai and @gaborbernat.
Documentation
- Link every documentation page to its source and edit view on GitHub, and add a GitHub icon to the footer (#177) by @gaborbernat. (#174)
v1.6.7
Immutable
release. Only release title and notes can be modified.
Bug fixes
- Rank uv's minor version links behind the concrete install on Windows too, where uv creates them as directory junctions that
Path.is_symlink()does not report (#170) by @darrenhuai and @gaborbernat. - Stop a venv lookup from rewriting the
executableof earlier results,PythonInfo.current()andPythonInfo.current_system()when they share its base interpreter (#171) by @darrenhuai and @gaborbernat.
v1.6.6
Immutable
release. Only release title and notes can be modified.
Bug fixes
- Treat version specifiers with an item that cannot be parsed, such as
>=3.x,>=3.12 <4or>=3.12,foo, as literal executable paths instead of raising a bareAssertionErroror ignoring the item during discovery (#157) by @darrenhuai and @gaborbernat. - Accept relative interpreter paths that step up a directory, such as
../venv/bin/python, which were found and queried but never matched the spec (#158) by @darrenhuai and @gaborbernat. - Match
~=X.Ycompatible-release specifiers against later minor versions, as PEP 440 defines, instead of only the same minor;~=3.10now accepts 3.11 and newer 3.x (#159) by @darrenhuai and @gaborbernat.
v1.6.5
Immutable
release. Only release title and notes can be modified.
Packaging
- Releases now run on the shared tox-dev/github-workflows pipeline, with a locked release toolchain and generated GitHub Release notes (#164) by @gaborbernat.
v1.6.4
Immutable
release. Only release title and notes can be modified.
Documentation
- Clarify the executable paths accepted by
try_first_within the standalone usage example. (#150) by @travisfortney.
New Contributors
- @travisfortney made their first contribution in #150