# What changed in python-discovery

> 32 changes in python-discovery 1 from its official release notes, upgrade guides and advisories: 4 breaking, 11 security. Each one cited. Sources checked 2026-11-13. HTML: https://unstale.sh/pypi/python-discovery/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## python-discovery 1

### Breaking changes

- With no key, iter_interpreters no longer probes PATH directories or subdirectories named like Python executables as interpreters. (1.9.5) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.5)
- Checks version specifiers at the precision they were written with, preventing `3.11` from satisfying `>=3.13`. (1.9.5) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.5)
- Searches PATH without probing a matching file in the working directory; use ./name when the working directory contains the intended interpreter. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- When an explicit env mapping omits HOME or USERPROFILE, uv-managed interpreter discovery no longer searches the process home directory. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)

### Security

- Uses the profile default for empty or relative APPDATA and skips relative profile paths when finding uv-managed Pythons. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Skips untrusted disk cache directories and entries on POSIX, and replaces cache files without following links. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- 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.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Limits candidate stdout and stderr during interpreter queries so a noisy candidate cannot exhaust the caller's memory. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Rejects format widths in interpreter sysconfig paths before they can allocate oversized strings. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Skips relative PATH entries, including the working-directory entry in the Windows default search path, when discovering interpreters. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Skips entries with relative or non-string executable paths and continues interpreter discovery. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Places cache locks in a restricted directory and preserves group sharing under a group-permissive umask. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- 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.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Skips files over 4096 characters during shim resolution, limiting memory use and allowing a parent or global version to apply. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- No longer executes Tk startup profile files from the home or working directory. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)

### Fixes and other changes

- Skips mismatched releases and interrogates candidates whose prerelease status is unknown. (1.9.5) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.5)
- Uses the supplied environment for base-interpreter probes when resolving a virtual environment. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Preserves interpreter-provided values when answer keys match computed properties during cache serialization. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Handles interpreter paths containing non-UTF-8 filesystem bytes when using DiskCache. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Excludes prereleases of the final version named by an exclusive upper bound, such as rejecting 3.12.0rc1 for <3.12.0. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Writes cache entries as compact JSON so their size stays proportional to the interpreter response. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Skips candidates that return JSON without usable interpreter metadata and continues searching. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Retries interpreter discovery without the cache when cache access fails. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Checks the interpreter's reported implementation when a spec names a known implementation, regardless of its filename on PATH. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Returns after an interpreter query times out without leaving pipe readers blocked by a child process. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Matches literal interpreter names against the executable found on PATH, including symlink names. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- No longer reuses results across projects, preventing a version choice in one checkout from blocking discovery in another. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- No longer opens an X display, avoiding blocks from unresponsive displays and allowing Tk library detection on headless systems. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Preserves a virtual environment selected through try_first_with instead of returning its base interpreter. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Finds uv-managed patch releases when a version specifier names only their major and minor version. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Stops repeated interpreter queries when a virtual environment reports the same base prefix with different path spellings. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
- Prevents an earlier virtual-environment lookup from reporting an executable under the wrong Python version. (1.9.2) — [release notes](https://github.com/tox-dev/python-discovery/releases/tag/1.9.2)
