unstale

pypi / python-discovery

python-discovery

What changed in python-discovery 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-13.

4 breaking11 security17 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.3.0 on npm

python-discovery 132 changes

Breaking changes 4

  • With no key, iter_interpreters no longer probes PATH directories or subdirectories named like Python executables as interpreters.

    1.9.5release notes

  • Checks version specifiers at the precision they were written with, preventing 3.11 from satisfying >=3.13.

    1.9.5release notes

  • Searches PATH without probing a matching file in the working directory; use ./name when the working directory contains the intended interpreter.

    1.9.2release notes

  • When an explicit env mapping omits HOME or USERPROFILE, uv-managed interpreter discovery no longer searches the process home directory.

    1.9.2release notes

Security 11

  • Uses the profile default for empty or relative APPDATA and skips relative profile paths when finding uv-managed Pythons.

    1.9.2release notes

  • Skips untrusted disk cache directories and entries on POSIX, and replaces cache files without following links.

    1.9.2release notes

  • When imported from an archive, extracts the probe into a private temporary directory to prevent it from importing modules supplied in the shared temp directory.

    1.9.2release notes

  • Limits candidate stdout and stderr during interpreter queries so a noisy candidate cannot exhaust the caller's memory.

    1.9.2release notes

  • Rejects format widths in interpreter sysconfig paths before they can allocate oversized strings.

    1.9.2release notes

  • Skips relative PATH entries, including the working-directory entry in the Windows default search path, when discovering interpreters.

    1.9.2release notes

  • Skips entries with relative or non-string executable paths and continues interpreter discovery.

    1.9.2release notes

  • Places cache locks in a restricted directory and preserves group sharing under a group-permissive umask.

    1.9.2release notes

  • Validates version names before using them as directory names, preventing version files from directing the resolver to binaries outside a version manager's installation directory.

    1.9.2release notes

  • Skips files over 4096 characters during shim resolution, limiting memory use and allowing a parent or global version to apply.

    1.9.2release notes

  • No longer executes Tk startup profile files from the home or working directory.

    1.9.2release notes

Fixes and other changes 17

  • Skips mismatched releases and interrogates candidates whose prerelease status is unknown.

    1.9.5release notes

  • Uses the supplied environment for base-interpreter probes when resolving a virtual environment.

    1.9.2release notes

  • Preserves interpreter-provided values when answer keys match computed properties during cache serialization.

    1.9.2release notes

  • Handles interpreter paths containing non-UTF-8 filesystem bytes when using DiskCache.

    1.9.2release notes

  • Excludes prereleases of the final version named by an exclusive upper bound, such as rejecting 3.12.0rc1 for <3.12.0.

    1.9.2release notes

  • Writes cache entries as compact JSON so their size stays proportional to the interpreter response.

    1.9.2release notes

  • Skips candidates that return JSON without usable interpreter metadata and continues searching.

    1.9.2release notes

  • Retries interpreter discovery without the cache when cache access fails.

    1.9.2release notes

  • Checks the interpreter's reported implementation when a spec names a known implementation, regardless of its filename on PATH.

    1.9.2release notes

  • Returns after an interpreter query times out without leaving pipe readers blocked by a child process.

    1.9.2release notes

  • Matches literal interpreter names against the executable found on PATH, including symlink names.

    1.9.2release notes

  • No longer reuses results across projects, preventing a version choice in one checkout from blocking discovery in another.

    1.9.2release notes

  • No longer opens an X display, avoiding blocks from unresponsive displays and allowing Tk library detection on headless systems.

    1.9.2release notes

  • Preserves a virtual environment selected through try_first_with instead of returning its base interpreter.

    1.9.2release notes

  • Finds uv-managed patch releases when a version specifier names only their major and minor version.

    1.9.2release notes

  • Stops repeated interpreter queries when a virtual environment reports the same base prefix with different path spellings.

    1.9.2release notes

  • Prevents an earlier virtual-environment lookup from reporting an executable under the wrong Python version.

    1.9.2release notes