Skip to content

Commit

Permalink
Show all PyPy versions in uv python list --all-versions (#6917)
Browse files Browse the repository at this point in the history
## Summary

Closes #6905.
  • Loading branch information
charliermarsh committed Sep 3, 2024
1 parent b779502 commit becdd4b
Showing 1 changed file with 22 additions and 8 deletions.
30 changes: 22 additions & 8 deletions crates/uv/src/commands/python/list.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use std::collections::{BTreeSet, HashSet};
use std::collections::BTreeSet;
use std::fmt::Write;

use anyhow::Result;
use owo_colors::OwoColorize;

use rustc_hash::FxHashSet;
use uv_cache::Cache;
use uv_fs::Simplified;
use uv_python::downloads::PythonDownloadRequest;
Expand Down Expand Up @@ -102,9 +102,9 @@ pub(crate) async fn list(
));
}

let mut seen_minor = HashSet::new();
let mut seen_patch = HashSet::new();
let mut seen_paths = HashSet::new();
let mut seen_minor = FxHashSet::default();
let mut seen_patch = FxHashSet::default();
let mut seen_paths = FxHashSet::default();
let mut include = Vec::new();
for (version, os, key, kind, path) in output.iter().rev() {
// Do not show the same path more than once
Expand All @@ -117,15 +117,29 @@ pub(crate) async fn list(
// Only show the latest patch version for each download unless all were requested
if !matches!(kind, Kind::System) {
if let [major, minor, ..] = version.release() {
if !seen_minor.insert((os.clone(), *major, *minor, *key.arch(), *key.libc())) {
if !seen_minor.insert((
os.clone(),
*major,
*minor,
key.implementation(),
*key.arch(),
*key.libc(),
)) {
if matches!(kind, Kind::Download) && !all_versions {
continue;
}
}
}
if let [major, minor, patch] = version.release() {
if !seen_patch.insert((os.clone(), *major, *minor, *patch, *key.arch(), key.libc()))
{
if !seen_patch.insert((
os.clone(),
*major,
*minor,
*patch,
key.implementation(),
*key.arch(),
key.libc(),
)) {
if matches!(kind, Kind::Download) {
continue;
}
Expand Down

0 comments on commit becdd4b

Please sign in to comment.