Skip to content

v1.9.2

Choose a tag to compare

@github-actions github-actions released this 03 Nov 05:04
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_with instead 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.0 rejecting 3.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 env mapping omits HOME or USERPROFILE, uv-managed interpreter discovery no longer searches the process home directory (#236) by @gaborbernat. (#200)
  • Skip relative PATH entries, 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 PATH without probing a matching file in the working directory. Use ./name when 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-version files 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 APPDATA and 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.

🐍 PyPI release

📜 Full Changelog