fix(backend): filter PEP 440 .dev versions in fuzzy version matching#8849
fix(backend): filter PEP 440 .dev versions in fuzzy version matching#8849
Conversation
There was a problem hiding this comment.
Code Review
This pull request addresses an issue where PEP 440 '.dev' versions were not correctly filtered as pre-releases by updating the VERSION_REGEX to include dot-separated dev suffixes. The changes include a new E2E regression test and unit tests to verify the regex behavior. Feedback suggests simplifying the regex by removing unnecessary backslash escapes within character classes and eliminating redundant case-insensitive keywords like 'SNAPSHOT'.
Greptile SummaryThis PR fixes a one-character bug in Confidence Score: 5/5Safe to merge — minimal, targeted regex fix with consistent pattern, good test coverage, and no regressions. The change is a single-character fix that mirrors two already-correct patterns in the same regex. All assertion helpers used in the new E2E test exist in the harness. No P1 or P0 findings. No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["Version list from plugin\n(e.g. 2026.3.3, 2026.3.3.dev0, 2026.3.3.162408.dev0)"] --> B{VERSION_REGEX.is_match?}
B -- "matches: -dev / .dev / .rc / .pre / -alpha / etc." --> C["Filtered out (pre-release)"]
B -- "no match" --> D["Kept as stable candidate"]
D --> E["Fuzzy version resolution\n(mise latest / mise install)"]
E --> F["Returns highest stable version\ne.g. 2026.3.3"]
style C fill:#f99,stroke:#c33
style F fill:#9f9,stroke:#3c3
Reviews (5): Last reviewed commit: "Merge branch 'main' into fix/dev-version..." | Re-trigger Greptile |
VERSION_REGEX only caught "-dev" (hyphen-separated) but not ".dev" (dot-separated), so PEP 440 dev versions like "2026.3.3.162408.dev0" slipped through the pre-release filter and incorrectly satisfied requests for stable version "2026.3.3". Change "-dev" to "[-\.]dev" in VERSION_REGEX, matching the existing pattern used for "rc" and "pre". Fixes jdx#8784 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3de0dea to
9171961
Compare
### 🚀 Features - **(ci)** auto-convert external PRs to draft mode by @jdx in [#8896](#8896) - **(deps)** add `depends` field for user-specified tool dependencies by @cprecioso in [#8776](#8776) - **(dotnet)** support runtime-only installs by @fragon10 in [#8524](#8524) - **(npm)** apply install_before to transitive dependencies by @risu729 in [#8851](#8851) - **(task)** allow passing arguments to task dependencies via {{usage.*}} templates by @jdx in [#8893](#8893) - add options field to BackendListVersionsCtx by @esteve in [#8875](#8875) ### 🐛 Bug Fixes - **(backend)** filter PEP 440 .dev versions in fuzzy version matching by @richardthe3rd in [#8849](#8849) - **(ci)** update COPR BuildRequires rust version to match MSRV 1.88 by @jdx in [#8911](#8911) - **(ci)** add Ruby build dependencies to e2e Docker image by @jdx in [#8910](#8910) - **(ci)** add missing build dependencies to e2e Docker image by @jdx in [#8912](#8912) - **(ci)** add missing build dependencies to e2e Docker image by @jdx in [#8914](#8914) - **(ci)** use Node 24 LTS for corepack e2e test by @jdx in [#8915](#8915) - **(ci)** add libxml2 and pkg-config to e2e Docker image by @jdx in [#8917](#8917) - **(ci)** add libxml2-dev to e2e image and disable Swift SPM tests by @jdx in [#8918](#8918) - **(docs)** use sans-serif font for badges by @jdx in [#8887](#8887) - **(env)** parse --env=VALUE and -E=VALUE flag forms correctly by @jdx in [#8889](#8889) - **(exec)** use i64::from() for seccomp syscall numbers to survive autofix by @jdx in [#8882](#8882) - **(github)** preserve tool options like filter_bins when version specified via CLI by @jdx in [#8888](#8888) - **(github)** use alias-specific options when tool_alias has its own config by @jdx in [#8892](#8892) - **(install)** add locked_verify_provenance setting and detect github attestations at lock time by @jdx in [#8901](#8901) - **(lock)** prune stale version entries during filtered `mise lock <tool>` runs by @altendky in [#8599](#8599) - **(python)** use lockfile URL for precompiled installs by @hehaoqian in [#8750](#8750) - **(release)** verify all build targets succeed before releasing by @jdx in [#8886](#8886) - **(ruby)** support build revisions for precompiled binaries in mise.lock by @jdx in [#8900](#8900) - **(swift)** fall back to Ubuntu 24.04 for unsupported Ubuntu versions by @jdx in [#8916](#8916) - **(zsh)** avoid duplicate trust warning after cd by @timothysparg in [#8898](#8898) - update flake.lock and add fix for rust-bindgen to default.nix by @esteve in [#8874](#8874) - when direnv diff is empty, do not try to parse it by @yaleman in [#8857](#8857) - skip trust check for plain .tool-versions in task list by @dportalesr in [#8876](#8876) ### 🚜 Refactor - **(go)** rename go_* settings to go.* namespace by @jdbruijn in [#8598](#8598) ### 📚 Documentation - **(tasks)** clarify task_config.includes behavior by @risu729 in [#8905](#8905) ### 🧪 Testing - **(ci)** run e2e tests inside Docker containers by @jdx in [#8899](#8899) ### 📦️ Dependency Updates - bump ubi from 0.8 to 0.9 by @jdx in [#8906](#8906) - bump zip from 3 to 8 by @jdx in [#8908](#8908) - update lockfile deps (hold back rattler) by @jdx in [#8909](#8909) - update bun.lock by @jdx in [#8913](#8913) ### 📦 Registry - add turso ([github:tursodatabase/turso-cli](https://github.com/tursodatabase/turso-cli)) by @kenn in [#8884](#8884) - remove carp test by @jdx in [#8894](#8894) ### Chore - **(ci)** add workflow to warn PRs modifying vendored aqua-registry by @jdx in [#8897](#8897) - **(ci)** use github.token for draft conversion in auto-draft workflow by @jdx in [#8903](#8903) - remove deprecated settings older than 12 months by @jdx in [#8904](#8904) ### New Contributors - @dportalesr made their first contribution in [#8876](#8876) - @timothysparg made their first contribution in [#8898](#8898) - @hehaoqian made their first contribution in [#8750](#8750) - @jdbruijn made their first contribution in [#8598](#8598) - @cprecioso made their first contribution in [#8776](#8776) - @yaleman made their first contribution in [#8857](#8857) - @kenn made their first contribution in [#8884](#8884) - @fragon10 made their first contribution in [#8524](#8524) ## 📦 Aqua Registry Updates #### New Packages (6) - [`ahkohd/oyo`](https://github.com/ahkohd/oyo) - [`bellicose100xp/jiq`](https://github.com/bellicose100xp/jiq) - [`kurama/dealve-tui`](https://github.com/kurama/dealve-tui) - [`micahkepe/jsongrep`](https://github.com/micahkepe/jsongrep) - [`textfuel/lazyjira`](https://github.com/textfuel/lazyjira) - [`ubugeeei/vize`](https://github.com/ubugeeei/vize) #### Updated Packages (1) - [`sigstore/cosign`](https://github.com/sigstore/cosign)
Summary
VERSION_REGEXto filter PEP 440.devversions (e.g.2026.3.3.162408.dev0) during fuzzy version matching-dev(hyphen) but not.dev(dot), so dev versions incorrectly satisfied stable version requests-dev→[-\.]dev, matching the existing pattern forrcandpreTest plan
VERSION_REGEXmatching.devversionsmise latest,mise install, andmise execcorrectly distinguish stable from.devversionstest_latest,test_ls_remote) pass — no regressionsFixes #8784