Skip to content

Releases: tox-dev/python-discovery

v1.9.4

Choose a tag to compare

@github-actions github-actions released this 04 Nov 05:26
Immutable release. Only release title and notes can be modified.

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

v1.9.1

Choose a tag to compare

@github-actions github-actions released this 02 Nov 15:58
Immutable release. Only release title and notes can be modified.

Bug fixes

  • List free-threaded and debug builds on PATH, such as python3.13t, python3.13d and python3.13-dbg, when iter_interpreters() runs with no spec, as it already did for uv's +freethreaded and +debug installs (#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_include reporting 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

PyPI release

Full Changelog

v1.9.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 23:25
Immutable release. Only release title and notes can be modified.

Features

  • Expose the 11 marker keys through MarkerEnvironment for callers that type-check PythonInfo.marker_environment (#179) by @gaborbernat.

PyPI release

Full Changelog

v1.8.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 22:56
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.

PyPI release

Full Changelog

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 19:26
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.13t or cpython>=3.11,<3.14-64, and raise ValueError for 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-version file 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)

PyPI release

Full Changelog

v1.6.7

Choose a tag to compare

@github-actions github-actions released this 28 Oct 06:24
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 executable of earlier results, PythonInfo.current() and PythonInfo.current_system() when they share its base interpreter (#171) by @darrenhuai and @gaborbernat.

PyPI release

Full Changelog

v1.6.6

Choose a tag to compare

@github-actions github-actions released this 27 Oct 19:43
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 <4 or >=3.12,foo, as literal executable paths instead of raising a bare AssertionError or 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.Y compatible-release specifiers against later minor versions, as PEP 440 defines, instead of only the same minor; ~=3.10 now accepts 3.11 and newer 3.x (#159) by @darrenhuai and @gaborbernat.

🐍 PyPI release

πŸ“œ Full Changelog

v1.6.5

Choose a tag to compare

@github-actions github-actions released this 27 Oct 07:12
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.

🐍 PyPI release

πŸ“œ Full Changelog

v1.6.4

Choose a tag to compare

@github-actions github-actions released this 19 Oct 01:45
Immutable release. Only release title and notes can be modified.

Documentation

  • Clarify the executable paths accepted by try_first_with in the standalone usage example. (#150) by @travisfortney.

New Contributors

🐍 PyPI release

πŸ“œ Full Changelog