From e72f208100cf0690be5a5509d2130eed8b7a9e7a Mon Sep 17 00:00:00 2001 From: Brad Heller Date: Thu, 29 Jan 2026 17:20:19 +0100 Subject: [PATCH 1/2] Bug introduced when addressing PR feedback. Whoops. (#187) --- crates/tower-uv/src/lib.rs | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/crates/tower-uv/src/lib.rs b/crates/tower-uv/src/lib.rs index 526cfb23..559ddf53 100644 --- a/crates/tower-uv/src/lib.rs +++ b/crates/tower-uv/src/lib.rs @@ -147,7 +147,7 @@ pub fn cleanup_stale_uv_lock_files() { // Only process files matching the uv-*.lock pattern if let Some(file_name) = path.file_name() { - if is_uv_lock_file_name(&file_name) { + if !is_uv_lock_file_name(&file_name) { continue; } } else { @@ -541,4 +541,38 @@ mod tests { drop(file); let _ = fs::remove_file(&lock_path); } + + #[test] + fn test_cleanup_stale_uv_lock_files_only_removes_uv_lock_files() { + let temp_dir = std::env::temp_dir(); + + // Create a valid UV lock file (matches uv-<16 hex chars>.lock pattern) + let uv_lock_file = temp_dir.join("uv-0123456789abcdef.lock"); + { + let mut file = fs::File::create(&uv_lock_file).unwrap(); + file.write_all(b"test uv lock").unwrap(); + } + + // Create a non-UV file that should NOT be touched + let non_uv_file = temp_dir.join("not-a-uv-lock-file.txt"); + { + let mut file = fs::File::create(&non_uv_file).unwrap(); + file.write_all(b"other file").unwrap(); + } + + assert!(uv_lock_file.exists()); + assert!(non_uv_file.exists()); + + // Run the cleanup + cleanup_stale_uv_lock_files(); + + // UV lock file should be removed (it wasn't locked) + assert!(!uv_lock_file.exists(), "UV lock file should have been cleaned up"); + + // Non-UV file should still exist + assert!(non_uv_file.exists(), "Non-UV file should not have been touched"); + + // Clean up the non-UV file + let _ = fs::remove_file(&non_uv_file); + } } From 320973841c46265c95c4cc0cbe3731339acc2141 Mon Sep 17 00:00:00 2001 From: Brad Heller Date: Thu, 29 Jan 2026 17:21:56 +0100 Subject: [PATCH 2/2] Bump version to v0.3.45 --- Cargo.lock | 22 +++++++++++----------- Cargo.toml | 2 +- pyproject.toml | 2 +- uv.lock | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b261146a..cb826907 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -491,7 +491,7 @@ dependencies = [ [[package]] name = "config" -version = "0.3.44" +version = "0.3.45" dependencies = [ "base64", "chrono", @@ -598,7 +598,7 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto" -version = "0.3.44" +version = "0.3.45" dependencies = [ "aes-gcm", "base64", @@ -3252,7 +3252,7 @@ dependencies = [ [[package]] name = "testutils" -version = "0.3.44" +version = "0.3.45" dependencies = [ "pem", "rsa", @@ -3522,7 +3522,7 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tower" -version = "0.3.44" +version = "0.3.45" dependencies = [ "tokio", "tower-api", @@ -3547,7 +3547,7 @@ dependencies = [ [[package]] name = "tower-api" -version = "0.3.44" +version = "0.3.45" dependencies = [ "reqwest", "serde", @@ -3559,7 +3559,7 @@ dependencies = [ [[package]] name = "tower-cmd" -version = "0.3.44" +version = "0.3.45" dependencies = [ "axum", "bytes", @@ -3629,7 +3629,7 @@ checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-package" -version = "0.3.44" +version = "0.3.45" dependencies = [ "async-compression", "config", @@ -3647,7 +3647,7 @@ dependencies = [ [[package]] name = "tower-runtime" -version = "0.3.44" +version = "0.3.45" dependencies = [ "async-trait", "chrono", @@ -3670,7 +3670,7 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tower-telemetry" -version = "0.3.44" +version = "0.3.45" dependencies = [ "tracing", "tracing-appender", @@ -3679,7 +3679,7 @@ dependencies = [ [[package]] name = "tower-uv" -version = "0.3.44" +version = "0.3.45" dependencies = [ "async-compression", "async_zip", @@ -3697,7 +3697,7 @@ dependencies = [ [[package]] name = "tower-version" -version = "0.3.44" +version = "0.3.45" dependencies = [ "anyhow", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 0dddbc2a..03e0fe35 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ resolver = "2" [workspace.package] edition = "2021" -version = "0.3.44" +version = "0.3.45" description = "Tower is the best way to host Python data apps in production" rust-version = "1.81" authors = ["Brad Heller "] diff --git a/pyproject.toml b/pyproject.toml index a257d228..77229ded 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "tower" -version = "0.3.44" +version = "0.3.45" description = "Tower CLI and runtime environment for Tower." authors = [{ name = "Tower Computing Inc.", email = "brad@tower.dev" }] readme = "README.md" diff --git a/uv.lock b/uv.lock index 85b478a2..312a2e16 100644 --- a/uv.lock +++ b/uv.lock @@ -2744,7 +2744,7 @@ wheels = [ [[package]] name = "tower" -version = "0.3.44" +version = "0.3.45" source = { editable = "." } dependencies = [ { name = "attrs" },