Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-uv for openSUSE:Factory 
checked in at 2025-08-12 17:05:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-uv (Old)
 and      /work/SRC/openSUSE:Factory/.python-uv.new.1085 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-uv"

Tue Aug 12 17:05:16 2025 rev:41 rq:1298991 version:0.8.9

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-uv/python-uv.changes      2025-08-09 
20:06:48.195733968 +0200
+++ /work/SRC/openSUSE:Factory/.python-uv.new.1085/python-uv.changes    
2025-08-12 17:06:59.905335770 +0200
@@ -1,0 +2,13 @@
+Tue Aug 12 09:30:49 UTC 2025 - Ondřej Súkup <mimi...@gmail.com>
+
+- update to 0.8.9
+ * Enhancements
+  * Add --reinstall flag to uv python upgrade 
+ * Bug fixes
+  * Include build settings in cache key for registry source distribution 
lookups 
+  * Avoid creating bin links on uv python upgrade if they don't already exist 
+  * Respect system proxies on macOS and Windows 
+ * Documentation
+  * Add the 3.14 classifier 
+
+-------------------------------------------------------------------

Old:
----
  python-uv-0.8.8.tar.gz

New:
----
  python-uv-0.8.9.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-uv.spec ++++++
--- /var/tmp/diff_new_pack.OWHQ0p/_old  2025-08-12 17:07:01.601406619 +0200
+++ /var/tmp/diff_new_pack.OWHQ0p/_new  2025-08-12 17:07:01.605406786 +0200
@@ -33,7 +33,7 @@
 %bcond_without libalternatives
 %{?sle15_python_module_pythons}
 Name:           python-uv
-Version:        0.8.8
+Version:        0.8.9
 Release:        0
 Summary:        A Python package installer and resolver, written in Rust
 License:        Apache-2.0 OR MIT

++++++ python-uv-0.8.8.tar.gz -> python-uv-0.8.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/.github/workflows/ci.yml 
new/uv-0.8.9/.github/workflows/ci.yml
--- old/uv-0.8.8/.github/workflows/ci.yml       2025-08-09 02:03:07.000000000 
+0200
+++ new/uv-0.8.9/.github/workflows/ci.yml       2025-08-12 04:07:59.000000000 
+0200
@@ -221,7 +221,7 @@
         with:
           persist-credentials: false
 
-      - uses: rui314/setup-mold@702b1908b5edf30d71a8d1666b724e0f0c6fa035 # v1
+      - uses: rui314/setup-mold@7344740a9418dcdcb481c7df83d9fbd1d5072d7d # v1
 
       - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # 
v2.8.0
 
@@ -259,7 +259,7 @@
         with:
           persist-credentials: false
 
-      - uses: rui314/setup-mold@702b1908b5edf30d71a8d1666b724e0f0c6fa035 # v1
+      - uses: rui314/setup-mold@7344740a9418dcdcb481c7df83d9fbd1d5072d7d # v1
 
       - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # 
v2.8.0
 
@@ -493,7 +493,7 @@
         with:
           persist-credentials: false
 
-      - uses: rui314/setup-mold@702b1908b5edf30d71a8d1666b724e0f0c6fa035 # v1
+      - uses: rui314/setup-mold@7344740a9418dcdcb481c7df83d9fbd1d5072d7d # v1
 
       - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # 
v2.8.0
 
@@ -520,7 +520,7 @@
         with:
           persist-credentials: false
 
-      - uses: rui314/setup-mold@702b1908b5edf30d71a8d1666b724e0f0c6fa035 # v1
+      - uses: rui314/setup-mold@7344740a9418dcdcb481c7df83d9fbd1d5072d7d # v1
 
       - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # 
v2.8.0
 
@@ -547,7 +547,7 @@
         with:
           persist-credentials: false
 
-      - uses: rui314/setup-mold@702b1908b5edf30d71a8d1666b724e0f0c6fa035 # v1
+      - uses: rui314/setup-mold@7344740a9418dcdcb481c7df83d9fbd1d5072d7d # v1
 
       - name: "Setup musl"
         run: |
@@ -579,7 +579,7 @@
         with:
           persist-credentials: false
 
-      - uses: rui314/setup-mold@702b1908b5edf30d71a8d1666b724e0f0c6fa035 # v1
+      - uses: rui314/setup-mold@7344740a9418dcdcb481c7df83d9fbd1d5072d7d # v1
 
       - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # 
v2.8.0
       - name: "Build"
@@ -605,7 +605,7 @@
         with:
           persist-credentials: false
 
-      - uses: rui314/setup-mold@702b1908b5edf30d71a8d1666b724e0f0c6fa035 # v1
+      - uses: rui314/setup-mold@7344740a9418dcdcb481c7df83d9fbd1d5072d7d # v1
 
       - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # 
v2.8.0
       - name: "Build"
@@ -716,7 +716,7 @@
         env:
           MSRV: ${{ steps.msrv.outputs.value }}
       - name: "Install mold"
-        uses: rui314/setup-mold@702b1908b5edf30d71a8d1666b724e0f0c6fa035 # v1
+        uses: rui314/setup-mold@7344740a9418dcdcb481c7df83d9fbd1d5072d7d # v1
       - uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 # 
v2.8.0
       - run: cargo +${MSRV} build
         env:
@@ -1695,7 +1695,7 @@
           credentials_json: "${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}"
 
       - name: "Set up GCP SDK"
-        uses: 
"google-github-actions/setup-gcloud@6a7c903a70c8625ed6700fa299f5ddb4ca6022e9"
+        uses: 
"google-github-actions/setup-gcloud@cb1e50a9932213ecece00a606661ae9ca44f3397"
 
       - name: "Get GCP Artifact Registry token"
         id: get_token
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/.pre-commit-config.yaml 
new/uv-0.8.9/.pre-commit-config.yaml
--- old/uv-0.8.8/.pre-commit-config.yaml        2025-08-09 02:03:07.000000000 
+0200
+++ new/uv-0.8.9/.pre-commit-config.yaml        2025-08-12 04:07:59.000000000 
+0200
@@ -12,7 +12,7 @@
       - id: validate-pyproject
 
   - repo: https://github.com/crate-ci/typos
-    rev: v1.34.0
+    rev: v1.35.3
     hooks:
       - id: typos
 
@@ -42,7 +42,7 @@
         types_or: [yaml, json5]
 
   - repo: https://github.com/astral-sh/ruff-pre-commit
-    rev: v0.12.7
+    rev: v0.12.8
     hooks:
       - id: ruff-format
       - id: ruff
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/CHANGELOG.md new/uv-0.8.9/CHANGELOG.md
--- old/uv-0.8.8/CHANGELOG.md   2025-08-09 02:03:07.000000000 +0200
+++ new/uv-0.8.9/CHANGELOG.md   2025-08-12 04:07:59.000000000 +0200
@@ -3,6 +3,22 @@
 <!-- prettier-ignore-start -->
 
 
+## 0.8.9
+
+### Enhancements
+
+- Add `--reinstall` flag to `uv python upgrade` 
([#15194](https://github.com/astral-sh/uv/pull/15194))
+
+### Bug fixes
+
+- Include build settings in cache key for registry source distribution lookups 
([#15225](https://github.com/astral-sh/uv/pull/15225))
+- Avoid creating bin links on `uv python upgrade` if they don't already exist 
([#15192](https://github.com/astral-sh/uv/pull/15192))
+- Respect system proxies on macOS and Windows 
([#15221](https://github.com/astral-sh/uv/pull/15221))
+
+### Documentation
+
+- Add the 3.14 classifier 
([#15187](https://github.com/astral-sh/uv/pull/15187))
+
 ## 0.8.8
 
 ### Bug fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/Cargo.lock new/uv-0.8.9/Cargo.lock
--- old/uv-0.8.8/Cargo.lock     2025-08-09 02:03:07.000000000 +0200
+++ new/uv-0.8.9/Cargo.lock     2025-08-12 04:07:59.000000000 +0200
@@ -40,9 +40,9 @@
 
 [[package]]
 name = "anstream"
-version = "0.6.19"
+version = "0.6.20"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933"
+checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192"
 dependencies = [
  "anstyle",
  "anstyle-parse",
@@ -523,7 +523,7 @@
 checksum = "c95ec8b2485b20aed818bd7460f8eecc6c87c35c84191b353a3aba9aa1736c36"
 dependencies = [
  "anyhow",
- "core-foundation",
+ "core-foundation 0.10.1",
  "filetime",
  "hex",
  "ignore",
@@ -607,9 +607,9 @@
 
 [[package]]
 name = "clap"
-version = "4.5.42"
+version = "4.5.43"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "ed87a9d530bb41a67537289bafcac159cb3ee28460e0a4571123d2a778a6a882"
+checksum = "50fd97c9dc2399518aa331917ac6f274280ec5eb34e555dd291899745c48ec6f"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -617,9 +617,9 @@
 
 [[package]]
 name = "clap_builder"
-version = "4.5.42"
+version = "4.5.43"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "64f4f3f3c77c94aff3c7e9aac9a2ca1974a5adf392a8bb751e827d6d127ab966"
+checksum = "c35b5830294e1fa0462034af85cc95225a4cb07092c088c55bda3147cfcd8f65"
 dependencies = [
  "anstream",
  "anstyle",
@@ -794,6 +794,16 @@
 
 [[package]]
 name = "core-foundation"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation"
 version = "0.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
@@ -1148,7 +1158,7 @@
 checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
 dependencies = [
  "libc",
- "windows-sys 0.60.2",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -1549,9 +1559,9 @@
 
 [[package]]
 name = "hashbrown"
-version = "0.15.4"
+version = "0.15.5"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5"
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
 dependencies = [
  "allocator-api2",
  "equivalent",
@@ -1716,9 +1726,11 @@
  "percent-encoding",
  "pin-project-lite",
  "socket2 0.5.10",
+ "system-configuration",
  "tokio",
  "tower-service",
  "tracing",
+ "windows-registry",
 ]
 
 [[package]]
@@ -1868,7 +1880,7 @@
 checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
 dependencies = [
  "equivalent",
- "hashbrown 0.15.4",
+ "hashbrown 0.15.5",
  "serde",
 ]
 
@@ -2594,7 +2606,7 @@
 checksum = "54acf3a685220b533e437e264e4d932cfbdc4cc7ec0cd232ed73c08d03b8a7ca"
 dependencies = [
  "fixedbitset",
- "hashbrown 0.15.4",
+ "hashbrown 0.15.5",
  "indexmap",
  "serde",
 ]
@@ -3234,7 +3246,7 @@
 dependencies = [
  "bytecheck",
  "bytes",
- "hashbrown 0.15.4",
+ "hashbrown 0.15.5",
  "indexmap",
  "munge",
  "ptr_meta",
@@ -3352,7 +3364,7 @@
  "errno",
  "libc",
  "linux-raw-sys 0.9.4",
- "windows-sys 0.60.2",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -3513,7 +3525,7 @@
 checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316"
 dependencies = [
  "bitflags 2.9.1",
- "core-foundation",
+ "core-foundation 0.10.1",
  "core-foundation-sys",
  "libc",
  "security-framework-sys",
@@ -3902,6 +3914,27 @@
 ]
 
 [[package]]
+name = "system-configuration"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
+dependencies = [
+ "bitflags 2.9.1",
+ "core-foundation 0.9.4",
+ "system-configuration-sys",
+]
+
+[[package]]
+name = "system-configuration-sys"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index";
+checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
 name = "tagu"
 version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index";
@@ -4655,7 +4688,7 @@
 
 [[package]]
 name = "uv"
-version = "0.8.8"
+version = "0.8.9"
 dependencies = [
  "anstream",
  "anyhow",
@@ -4824,7 +4857,7 @@
 
 [[package]]
 name = "uv-build"
-version = "0.8.8"
+version = "0.8.9"
 dependencies = [
  "anyhow",
  "uv-build-backend",
@@ -5637,7 +5670,7 @@
 version = "0.0.1"
 dependencies = [
  "anyhow",
- "hashbrown 0.15.4",
+ "hashbrown 0.15.5",
  "indexmap",
  "insta",
  "itertools 0.14.0",
@@ -5814,7 +5847,7 @@
  "dashmap",
  "either",
  "futures",
- "hashbrown 0.15.4",
+ "hashbrown 0.15.5",
  "indexmap",
  "insta",
  "itertools 0.14.0",
@@ -6046,7 +6079,7 @@
 
 [[package]]
 name = "uv-version"
-version = "0.8.8"
+version = "0.8.9"
 
 [[package]]
 name = "uv-virtualenv"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/Cargo.toml new/uv-0.8.9/Cargo.toml
--- old/uv-0.8.8/Cargo.toml     2025-08-09 02:03:07.000000000 +0200
+++ new/uv-0.8.9/Cargo.toml     2025-08-12 04:07:59.000000000 +0200
@@ -145,7 +145,7 @@
 reflink-copy = { version = "0.1.19" }
 regex = { version = "1.10.6" }
 regex-automata = { version = "0.4.8", default-features = false, features = 
["dfa-build", "dfa-search", "perf", "std", "syntax"] }
-reqwest = { version = "0.12.22", default-features = false, features = ["json", 
"gzip", "deflate", "zstd", "stream", "rustls-tls", "rustls-tls-native-roots", 
"socks", "multipart", "http2", "blocking"] }
+reqwest = { version = "0.12.22", default-features = false, features = ["json", 
"gzip", "deflate", "zstd", "stream", "system-proxy", "rustls-tls", 
"rustls-tls-native-roots", "socks", "multipart", "http2", "blocking"] }
 reqwest-middleware = { git = 
"https://github.com/astral-sh/reqwest-middleware";, rev = 
"ad8b9d332d1773fde8b4cd008486de5973e0a3f8", features = ["multipart"] }
 reqwest-retry = { git = "https://github.com/astral-sh/reqwest-middleware";, rev 
= "ad8b9d332d1773fde8b4cd008486de5973e0a3f8" }
 rkyv = { version = "0.8.8", features = ["bytecheck"] }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/crates/uv/Cargo.toml 
new/uv-0.8.9/crates/uv/Cargo.toml
--- old/uv-0.8.8/crates/uv/Cargo.toml   2025-08-09 02:03:07.000000000 +0200
+++ new/uv-0.8.9/crates/uv/Cargo.toml   2025-08-12 04:07:59.000000000 +0200
@@ -1,6 +1,6 @@
 [package]
 name = "uv"
-version = "0.8.8"
+version = "0.8.9"
 edition = { workspace = true }
 rust-version = { workspace = true }
 homepage = { workspace = true }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/crates/uv/src/commands/python/install.rs 
new/uv-0.8.9/crates/uv/src/commands/python/install.rs
--- old/uv-0.8.8/crates/uv/src/commands/python/install.rs       2025-08-09 
02:03:07.000000000 +0200
+++ new/uv-0.8.9/crates/uv/src/commands/python/install.rs       2025-08-12 
04:07:59.000000000 +0200
@@ -764,6 +764,9 @@
 
     for target in targets {
         let target = bin.join(target);
+        if upgrade && !target.try_exists().unwrap_or_default() {
+            continue;
+        }
         let executable = if upgradeable {
             if let Some(minor_version_link) =
                 PythonMinorVersionLink::from_installation(installation, 
preview)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/crates/uv/src/lib.rs 
new/uv-0.8.9/crates/uv/src/lib.rs
--- old/uv-0.8.8/crates/uv/src/lib.rs   2025-08-09 02:03:07.000000000 +0200
+++ new/uv-0.8.9/crates/uv/src/lib.rs   2025-08-12 04:07:59.000000000 +0200
@@ -1437,14 +1437,13 @@
             // Resolve the settings from the command-line arguments and 
workspace configuration.
             let args = settings::PythonUpgradeSettings::resolve(args, 
filesystem);
             show_settings!(args);
-            let reinstall = false;
             let upgrade = true;
 
             commands::python_install(
                 &project_dir,
                 args.install_dir,
                 args.targets,
-                reinstall,
+                args.reinstall,
                 upgrade,
                 args.bin,
                 args.registry,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/crates/uv/src/settings.rs 
new/uv-0.8.9/crates/uv/src/settings.rs
--- old/uv-0.8.8/crates/uv/src/settings.rs      2025-08-09 02:03:07.000000000 
+0200
+++ new/uv-0.8.9/crates/uv/src/settings.rs      2025-08-12 04:07:59.000000000 
+0200
@@ -1019,6 +1019,7 @@
     pub(crate) registry: Option<bool>,
     pub(crate) python_install_mirror: Option<String>,
     pub(crate) pypy_install_mirror: Option<String>,
+    pub(crate) reinstall: bool,
     pub(crate) python_downloads_json_url: Option<String>,
     pub(crate) default: bool,
     pub(crate) bin: Option<bool>,
@@ -1051,6 +1052,7 @@
             targets,
             mirror: _,
             pypy_mirror: _,
+            reinstall,
             python_downloads_json_url: _,
         } = args;
 
@@ -1061,6 +1063,7 @@
             registry,
             python_install_mirror: python_mirror,
             pypy_install_mirror: pypy_mirror,
+            reinstall,
             python_downloads_json_url,
             default,
             bin,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/crates/uv/tests/it/pip_install.rs 
new/uv-0.8.9/crates/uv/tests/it/pip_install.rs
--- old/uv-0.8.8/crates/uv/tests/it/pip_install.rs      2025-08-09 
02:03:07.000000000 +0200
+++ new/uv-0.8.9/crates/uv/tests/it/pip_install.rs      2025-08-12 
04:07:59.000000000 +0200
@@ -3927,7 +3927,6 @@
 
     ----- stderr -----
     Resolved 1 package in [TIME]
-    Prepared 1 package in [TIME]
     Installed 1 package in [TIME]
      + iniconfig==2.0.0
     "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/crates/uv/tests/it/python_install.rs 
new/uv-0.8.9/crates/uv/tests/it/python_install.rs
--- old/uv-0.8.8/crates/uv/tests/it/python_install.rs   2025-08-09 
02:03:07.000000000 +0200
+++ new/uv-0.8.9/crates/uv/tests/it/python_install.rs   2025-08-12 
04:07:59.000000000 +0200
@@ -2340,6 +2340,7 @@
         "cpython-3.12.*.tar.gz",
         "cpython-3.12.[PATCH]-[DATE]-[PLATFORM].tar.gz",
     ));
+    filters.push((r"releases/download/\d{8}/", "releases/download/[DATE]/"));
     uv_snapshot!(filters, context
         .python_install()
         .arg("3.12")
@@ -2350,8 +2351,8 @@
 
     ----- stderr -----
     error: Failed to install cpython-3.12.11-[PLATFORM]
-      Caused by: Failed to download 
https://github.com/astral-sh/python-build-standalone/releases/download/20250808/cpython-3.12.[PATCH]-[DATE]-[PLATFORM].tar.gz
-      Caused by: Network connectivity is disabled, but the requested data 
wasn't found in the cache for: 
`https://github.com/astral-sh/python-build-standalone/releases/download/20250808/cpython-3.12.[PATCH]-[DATE]-[PLATFORM].tar.gz`
+      Caused by: Failed to download 
https://github.com/astral-sh/python-build-standalone/releases/download/[DATE]/cpython-3.12.[PATCH]-[DATE]-[PLATFORM].tar.gz
+      Caused by: Network connectivity is disabled, but the requested data 
wasn't found in the cache for: 
`https://github.com/astral-sh/python-build-standalone/releases/download/[DATE]/cpython-3.12.[PATCH]-[DATE]-[PLATFORM].tar.gz`
     ");
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/crates/uv/tests/it/python_module.rs 
new/uv-0.8.9/crates/uv/tests/it/python_module.rs
--- old/uv-0.8.8/crates/uv/tests/it/python_module.rs    2025-08-09 
02:03:07.000000000 +0200
+++ new/uv-0.8.9/crates/uv/tests/it/python_module.rs    2025-08-12 
04:07:59.000000000 +0200
@@ -384,6 +384,61 @@
 }
 
 #[test]
+fn find_uv_bin_error_message() {
+    let context = TestContext::new("3.12")
+        .with_filtered_python_names()
+        .with_filtered_virtualenv_bin()
+        .with_filtered_exe_suffix()
+        .with_filter(user_scheme_bin_filter())
+        // Target installs always use "bin" on all platforms. On Windows,
+        // `with_filtered_virtualenv_bin` only filters "Scripts", not "bin"
+        .with_filter((r"[\\/]bin".to_string(), "/[BIN]".to_string()));
+
+    // Install in a virtual environment
+    uv_snapshot!(context.filters(), context.pip_install()
+        .arg(context.workspace_root.join("scripts/packages/fake-uv")), @r"
+    success: true
+    exit_code: 0
+    ----- stdout -----
+
+    ----- stderr -----
+    Resolved 1 package in [TIME]
+    Prepared 1 package in [TIME]
+    Installed 1 package in [TIME]
+     + uv==0.1.0 (from file://[WORKSPACE]/scripts/packages/fake-uv)
+    "
+    );
+
+    // Remove the virtual environment executable for some reason
+    fs_err::remove_file(if cfg!(unix) {
+        context.venv.child("bin").child("uv")
+    } else {
+        context.venv.child("Scripts").child("uv.exe")
+    })
+    .unwrap();
+
+    uv_snapshot!(context.filters(), context.python_command()
+        .arg("-c")
+        .arg("import uv; print(uv.find_uv_bin())"), @r#"
+    success: false
+    exit_code: 1
+    ----- stdout -----
+
+    ----- stderr -----
+    Traceback (most recent call last):
+      File "<string>", line 1, in <module>
+      File "[SITE_PACKAGES]/uv/_find_uv.py", line 50, in find_uv_bin
+        raise UvNotFound(
+    uv._find_uv.UvNotFound: Could not find the uv binary in any of the 
following locations:
+     - [VENV]/[BIN]
+     - [PYTHON-BIN-3.12]
+     - [SITE_PACKAGES]/[BIN]
+     - [USER_SCHEME]/[BIN]
+    "#
+    );
+}
+
+#[test]
 fn find_uv_bin_py38() {
     let context = TestContext::new("3.8")
         .with_filtered_python_names()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/crates/uv/tests/it/python_upgrade.rs 
new/uv-0.8.9/crates/uv/tests/it/python_upgrade.rs
--- old/uv-0.8.8/crates/uv/tests/it/python_upgrade.rs   2025-08-09 
02:03:07.000000000 +0200
+++ new/uv-0.8.9/crates/uv/tests/it/python_upgrade.rs   2025-08-12 
04:07:59.000000000 +0200
@@ -52,6 +52,17 @@
 
     ----- stderr -----
     ");
+
+    // Should reinstall on `--reinstall`
+    uv_snapshot!(context.filters(), 
context.python_upgrade().arg("--preview").arg("3.10").arg("--reinstall"), @r"
+    success: true
+    exit_code: 0
+    ----- stdout -----
+
+    ----- stderr -----
+    Installed Python 3.10.18 in [TIME]
+     ~ cpython-3.10.18-[PLATFORM] (python3.10)
+    ");
 }
 
 #[test]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/crates/uv-build/Cargo.toml 
new/uv-0.8.9/crates/uv-build/Cargo.toml
--- old/uv-0.8.8/crates/uv-build/Cargo.toml     2025-08-09 02:03:07.000000000 
+0200
+++ new/uv-0.8.9/crates/uv-build/Cargo.toml     2025-08-12 04:07:59.000000000 
+0200
@@ -1,6 +1,6 @@
 [package]
 name = "uv-build"
-version = "0.8.8"
+version = "0.8.9"
 edition = { workspace = true }
 rust-version = { workspace = true }
 homepage = { workspace = true }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/crates/uv-build/pyproject.toml 
new/uv-0.8.9/crates/uv-build/pyproject.toml
--- old/uv-0.8.8/crates/uv-build/pyproject.toml 2025-08-09 02:03:07.000000000 
+0200
+++ new/uv-0.8.9/crates/uv-build/pyproject.toml 2025-08-12 04:07:59.000000000 
+0200
@@ -1,6 +1,6 @@
 [project]
 name = "uv-build"
-version = "0.8.8"
+version = "0.8.9"
 description = "The uv build backend"
 authors = [{ name = "Astral Software Inc.", email = "h...@astral.sh" }]
 requires-python = ">=3.8"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/crates/uv-cli/src/lib.rs 
new/uv-0.8.9/crates/uv-cli/src/lib.rs
--- old/uv-0.8.8/crates/uv-cli/src/lib.rs       2025-08-09 02:03:07.000000000 
+0200
+++ new/uv-0.8.9/crates/uv-cli/src/lib.rs       2025-08-12 04:07:59.000000000 
+0200
@@ -5196,6 +5196,13 @@
     #[arg(long, env = EnvVars::UV_PYPY_INSTALL_MIRROR)]
     pub pypy_mirror: Option<String>,
 
+    /// Reinstall the latest Python patch, if it's already installed.
+    ///
+    /// By default, uv will exit successfully if the latest patch is already
+    /// installed.
+    #[arg(long, short)]
+    pub reinstall: bool,
+
     /// URL pointing to JSON of custom Python installations.
     ///
     /// Note that currently, only local paths are supported.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/uv-0.8.8/crates/uv-dev/src/generate_sysconfig_mappings.rs 
new/uv-0.8.9/crates/uv-dev/src/generate_sysconfig_mappings.rs
--- old/uv-0.8.8/crates/uv-dev/src/generate_sysconfig_mappings.rs       
2025-08-09 02:03:07.000000000 +0200
+++ new/uv-0.8.9/crates/uv-dev/src/generate_sysconfig_mappings.rs       
2025-08-12 04:07:59.000000000 +0200
@@ -11,7 +11,7 @@
 use crate::generate_all::Mode;
 
 /// Contains current supported targets
-const TARGETS_YML_URL: &str = 
"https://raw.githubusercontent.com/astral-sh/python-build-standalone/refs/tags/20250807/cpython-unix/targets.yml";;
+const TARGETS_YML_URL: &str = 
"https://raw.githubusercontent.com/astral-sh/python-build-standalone/refs/tags/20250808/cpython-unix/targets.yml";;
 
 #[derive(clap::Args)]
 pub(crate) struct Args {
@@ -130,7 +130,7 @@
     output.push_str("//! DO NOT EDIT\n");
     output.push_str("//!\n");
     output.push_str("//! Generated with `cargo run dev 
generate-sysconfig-metadata`\n");
-    output.push_str("//! Targets from 
<https://github.com/astral-sh/python-build-standalone/blob/20250807/cpython-unix/targets.yml>\n");
+    output.push_str("//! Targets from 
<https://github.com/astral-sh/python-build-standalone/blob/20250808/cpython-unix/targets.yml>\n");
     output.push_str("//!\n");
 
     // Disable clippy/fmt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/uv-0.8.8/crates/uv-distribution/src/index/registry_wheel_index.rs 
new/uv-0.8.9/crates/uv-distribution/src/index/registry_wheel_index.rs
--- old/uv-0.8.8/crates/uv-distribution/src/index/registry_wheel_index.rs       
2025-08-09 02:03:07.000000000 +0200
+++ new/uv-0.8.9/crates/uv-distribution/src/index/registry_wheel_index.rs       
2025-08-12 04:07:59.000000000 +0200
@@ -1,11 +1,15 @@
+use std::borrow::Cow;
 use std::collections::hash_map::Entry;
 
 use rustc_hash::{FxHashMap, FxHashSet};
 
 use uv_cache::{Cache, CacheBucket, WheelCache};
 use uv_cache_key::cache_digest;
-use uv_configuration::ConfigSettings;
-use uv_distribution_types::{CachedRegistryDist, Hashed, Index, IndexLocations, 
IndexUrl};
+use uv_configuration::{ConfigSettings, PackageConfigSettings};
+use uv_distribution_types::{
+    BuildVariables, CachedRegistryDist, ExtraBuildRequirement, 
ExtraBuildRequires,
+    ExtraBuildVariables, Hashed, Index, IndexLocations, IndexUrl,
+};
 use uv_fs::{directories, files};
 use uv_normalize::PackageName;
 use uv_platform_tags::Tags;
@@ -33,7 +37,10 @@
     index_locations: &'a IndexLocations,
     hasher: &'a HashStrategy,
     index: FxHashMap<&'a PackageName, Vec<IndexEntry<'a>>>,
-    build_configuration: &'a ConfigSettings,
+    config_settings: &'a ConfigSettings,
+    config_settings_package: &'a PackageConfigSettings,
+    extra_build_requires: &'a ExtraBuildRequires,
+    extra_build_variables: &'a ExtraBuildVariables,
 }
 
 impl<'a> RegistryWheelIndex<'a> {
@@ -43,14 +50,20 @@
         tags: &'a Tags,
         index_locations: &'a IndexLocations,
         hasher: &'a HashStrategy,
-        build_configuration: &'a ConfigSettings,
+        config_settings: &'a ConfigSettings,
+        config_settings_package: &'a PackageConfigSettings,
+        extra_build_requires: &'a ExtraBuildRequires,
+        extra_build_variables: &'a ExtraBuildVariables,
     ) -> Self {
         Self {
             cache,
             tags,
             index_locations,
             hasher,
-            build_configuration,
+            config_settings,
+            config_settings_package,
+            extra_build_requires,
+            extra_build_variables,
             index: FxHashMap::default(),
         }
     }
@@ -72,7 +85,10 @@
                 self.tags,
                 self.index_locations,
                 self.hasher,
-                self.build_configuration,
+                self.config_settings,
+                self.config_settings_package,
+                self.extra_build_requires,
+                self.extra_build_variables,
             )),
         }) as _
     }
@@ -84,7 +100,10 @@
         tags: &Tags,
         index_locations: &'index IndexLocations,
         hasher: &HashStrategy,
-        build_configuration: &ConfigSettings,
+        config_settings: &ConfigSettings,
+        config_settings_package: &PackageConfigSettings,
+        extra_build_requires: &ExtraBuildRequires,
+        extra_build_variables: &ExtraBuildVariables,
     ) -> Vec<IndexEntry<'index>> {
         let mut entries = vec![];
 
@@ -198,10 +217,26 @@
                     let cache_shard = cache_shard.shard(revision.id());
 
                     // If there are build settings, we need to scope to a 
cache shard.
-                    let cache_shard = if build_configuration.is_empty() {
+                    let extra_build_deps =
+                        Self::extra_build_requires_for(package, 
extra_build_requires);
+                    let extra_build_vars =
+                        Self::extra_build_variables_for(package, 
extra_build_variables);
+                    let config_settings = Self::config_settings_for(
+                        package,
+                        config_settings,
+                        config_settings_package,
+                    );
+                    let cache_shard = if config_settings.is_empty()
+                        && extra_build_deps.is_empty()
+                        && extra_build_vars.is_none()
+                    {
                         cache_shard
                     } else {
-                        cache_shard.shard(cache_digest(build_configuration))
+                        cache_shard.shard(cache_digest(&(
+                            &config_settings,
+                            extra_build_deps,
+                            extra_build_vars,
+                        )))
                     };
 
                     for wheel_dir in 
uv_fs::entries(cache_shard).ok().into_iter().flatten() {
@@ -252,4 +287,36 @@
 
         entries
     }
+
+    /// Determine the [`ConfigSettings`] for the given package name.
+    fn config_settings_for<'settings>(
+        name: &PackageName,
+        config_settings: &'settings ConfigSettings,
+        config_settings_package: &PackageConfigSettings,
+    ) -> Cow<'settings, ConfigSettings> {
+        if let Some(package_settings) = config_settings_package.get(name) {
+            Cow::Owned(package_settings.clone().merge(config_settings.clone()))
+        } else {
+            Cow::Borrowed(config_settings)
+        }
+    }
+
+    /// Determine the extra build requirements for the given package name.
+    fn extra_build_requires_for<'settings>(
+        name: &PackageName,
+        extra_build_requires: &'settings ExtraBuildRequires,
+    ) -> &'settings [ExtraBuildRequirement] {
+        extra_build_requires
+            .get(name)
+            .map(Vec::as_slice)
+            .unwrap_or(&[])
+    }
+
+    /// Determine the extra build variables for the given package name.
+    fn extra_build_variables_for<'settings>(
+        name: &PackageName,
+        extra_build_variables: &'settings ExtraBuildVariables,
+    ) -> Option<&'settings BuildVariables> {
+        extra_build_variables.get(name)
+    }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/crates/uv-installer/src/plan.rs 
new/uv-0.8.9/crates/uv-installer/src/plan.rs
--- old/uv-0.8.8/crates/uv-installer/src/plan.rs        2025-08-09 
02:03:07.000000000 +0200
+++ new/uv-0.8.9/crates/uv-installer/src/plan.rs        2025-08-12 
04:07:59.000000000 +0200
@@ -64,8 +64,16 @@
         tags: &Tags,
     ) -> Result<Plan> {
         // Index all the already-downloaded wheels in the cache.
-        let mut registry_index =
-            RegistryWheelIndex::new(cache, tags, index_locations, hasher, 
config_settings);
+        let mut registry_index = RegistryWheelIndex::new(
+            cache,
+            tags,
+            index_locations,
+            hasher,
+            config_settings,
+            config_settings_package,
+            extra_build_requires,
+            extra_build_variables,
+        );
         let built_index = BuiltWheelIndex::new(
             cache,
             tags,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/uv-0.8.8/crates/uv-python/src/sysconfig/generated_mappings.rs 
new/uv-0.8.9/crates/uv-python/src/sysconfig/generated_mappings.rs
--- old/uv-0.8.8/crates/uv-python/src/sysconfig/generated_mappings.rs   
2025-08-09 02:03:07.000000000 +0200
+++ new/uv-0.8.9/crates/uv-python/src/sysconfig/generated_mappings.rs   
2025-08-12 04:07:59.000000000 +0200
@@ -1,7 +1,7 @@
 //! DO NOT EDIT
 //!
 //! Generated with `cargo run dev generate-sysconfig-metadata`
-//! Targets from 
<https://github.com/astral-sh/python-build-standalone/blob/20250807/cpython-unix/targets.yml>
+//! Targets from 
<https://github.com/astral-sh/python-build-standalone/blob/20250808/cpython-unix/targets.yml>
 //!
 #![allow(clippy::all)]
 #![cfg_attr(any(), rustfmt::skip)]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/crates/uv-version/Cargo.toml 
new/uv-0.8.9/crates/uv-version/Cargo.toml
--- old/uv-0.8.8/crates/uv-version/Cargo.toml   2025-08-09 02:03:07.000000000 
+0200
+++ new/uv-0.8.9/crates/uv-version/Cargo.toml   2025-08-12 04:07:59.000000000 
+0200
@@ -1,6 +1,6 @@
 [package]
 name = "uv-version"
-version = "0.8.8"
+version = "0.8.9"
 edition = { workspace = true }
 rust-version = { workspace = true }
 homepage = { workspace = true }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/docs/concepts/build-backend.md 
new/uv-0.8.9/docs/concepts/build-backend.md
--- old/uv-0.8.8/docs/concepts/build-backend.md 2025-08-09 02:03:07.000000000 
+0200
+++ new/uv-0.8.9/docs/concepts/build-backend.md 2025-08-12 04:07:59.000000000 
+0200
@@ -31,7 +31,7 @@
 
 ```toml title="pyproject.toml"
 [build-system]
-requires = ["uv_build>=0.8.8,<0.9.0"]
+requires = ["uv_build>=0.8.9,<0.9.0"]
 build-backend = "uv_build"
 ```
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/docs/concepts/projects/init.md 
new/uv-0.8.9/docs/concepts/projects/init.md
--- old/uv-0.8.8/docs/concepts/projects/init.md 2025-08-09 02:03:07.000000000 
+0200
+++ new/uv-0.8.9/docs/concepts/projects/init.md 2025-08-12 04:07:59.000000000 
+0200
@@ -111,7 +111,7 @@
 example-pkg = "example_pkg:main"
 
 [build-system]
-requires = ["uv_build>=0.8.8,<0.9.0"]
+requires = ["uv_build>=0.8.9,<0.9.0"]
 build-backend = "uv_build"
 ```
 
@@ -134,7 +134,7 @@
 example-pkg = "example_pkg:main"
 
 [build-system]
-requires = ["uv_build>=0.8.8,<0.9.0"]
+requires = ["uv_build>=0.8.9,<0.9.0"]
 build-backend = "uv_build"
 ```
 
@@ -195,7 +195,7 @@
 dependencies = []
 
 [build-system]
-requires = ["uv_build>=0.8.8,<0.9.0"]
+requires = ["uv_build>=0.8.9,<0.9.0"]
 build-backend = "uv_build"
 ```
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/docs/concepts/projects/workspaces.md 
new/uv-0.8.9/docs/concepts/projects/workspaces.md
--- old/uv-0.8.8/docs/concepts/projects/workspaces.md   2025-08-09 
02:03:07.000000000 +0200
+++ new/uv-0.8.9/docs/concepts/projects/workspaces.md   2025-08-12 
04:07:59.000000000 +0200
@@ -75,7 +75,7 @@
 members = ["packages/*"]
 
 [build-system]
-requires = ["uv_build>=0.8.8,<0.9.0"]
+requires = ["uv_build>=0.8.9,<0.9.0"]
 build-backend = "uv_build"
 ```
 
@@ -106,7 +106,7 @@
 members = ["packages/*"]
 
 [build-system]
-requires = ["uv_build>=0.8.8,<0.9.0"]
+requires = ["uv_build>=0.8.9,<0.9.0"]
 build-backend = "uv_build"
 ```
 
@@ -188,7 +188,7 @@
 bird-feeder = { path = "packages/bird-feeder" }
 
 [build-system]
-requires = ["uv_build>=0.8.8,<0.9.0"]
+requires = ["uv_build>=0.8.9,<0.9.0"]
 build-backend = "uv_build"
 ```
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/docs/getting-started/installation.md 
new/uv-0.8.9/docs/getting-started/installation.md
--- old/uv-0.8.8/docs/getting-started/installation.md   2025-08-09 
02:03:07.000000000 +0200
+++ new/uv-0.8.9/docs/getting-started/installation.md   2025-08-12 
04:07:59.000000000 +0200
@@ -25,7 +25,7 @@
     Request a specific version by including it in the URL:
 
     ```console
-    $ curl -LsSf https://astral.sh/uv/0.8.8/install.sh | sh
+    $ curl -LsSf https://astral.sh/uv/0.8.9/install.sh | sh
     ```
 
 === "Windows"
@@ -41,7 +41,7 @@
     Request a specific version by including it in the URL:
 
     ```pwsh-session
-    PS> powershell -ExecutionPolicy ByPass -c "irm 
https://astral.sh/uv/0.8.8/install.ps1 | iex"
+    PS> powershell -ExecutionPolicy ByPass -c "irm 
https://astral.sh/uv/0.8.9/install.ps1 | iex"
     ```
 
 !!! tip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/docs/guides/integration/aws-lambda.md 
new/uv-0.8.9/docs/guides/integration/aws-lambda.md
--- old/uv-0.8.8/docs/guides/integration/aws-lambda.md  2025-08-09 
02:03:07.000000000 +0200
+++ new/uv-0.8.9/docs/guides/integration/aws-lambda.md  2025-08-12 
04:07:59.000000000 +0200
@@ -92,7 +92,7 @@
 other unnecessary files.
 
 ```dockerfile title="Dockerfile"
-FROM ghcr.io/astral-sh/uv:0.8.8 AS uv
+FROM ghcr.io/astral-sh/uv:0.8.9 AS uv
 
 # First, bundle the dependencies into the task root.
 FROM public.ecr.aws/lambda/python:3.13 AS builder
@@ -334,7 +334,7 @@
 Finally, we'll update the Dockerfile to include the local library in the 
deployment package:
 
 ```dockerfile title="Dockerfile"
-FROM ghcr.io/astral-sh/uv:0.8.8 AS uv
+FROM ghcr.io/astral-sh/uv:0.8.9 AS uv
 
 # First, bundle the dependencies into the task root.
 FROM public.ecr.aws/lambda/python:3.13 AS builder
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/docs/guides/integration/docker.md 
new/uv-0.8.9/docs/guides/integration/docker.md
--- old/uv-0.8.8/docs/guides/integration/docker.md      2025-08-09 
02:03:07.000000000 +0200
+++ new/uv-0.8.9/docs/guides/integration/docker.md      2025-08-12 
04:07:59.000000000 +0200
@@ -31,7 +31,7 @@
 The following distroless images are available:
 
 - `ghcr.io/astral-sh/uv:latest`
-- `ghcr.io/astral-sh/uv:{major}.{minor}.{patch}`, e.g., 
`ghcr.io/astral-sh/uv:0.8.8`
+- `ghcr.io/astral-sh/uv:{major}.{minor}.{patch}`, e.g., 
`ghcr.io/astral-sh/uv:0.8.9`
 - `ghcr.io/astral-sh/uv:{major}.{minor}`, e.g., `ghcr.io/astral-sh/uv:0.8` 
(the latest patch
   version)
 
@@ -75,7 +75,7 @@
 
 As with the distroless image, each derived image is published with uv version 
tags as
 `ghcr.io/astral-sh/uv:{major}.{minor}.{patch}-{base}` and
-`ghcr.io/astral-sh/uv:{major}.{minor}-{base}`, e.g., 
`ghcr.io/astral-sh/uv:0.8.8-alpine`.
+`ghcr.io/astral-sh/uv:{major}.{minor}-{base}`, e.g., 
`ghcr.io/astral-sh/uv:0.8.9-alpine`.
 
 In addition, starting with `0.8` each derived image also sets 
`UV_TOOL_BIN_DIR` to `/usr/local/bin`
 to allow `uv tool install` to work as expected with the default user.
@@ -116,7 +116,7 @@
 In either case, it is best practice to pin to a specific uv version, e.g., 
with:
 
 ```dockerfile
-COPY --from=ghcr.io/astral-sh/uv:0.8.8 /uv /uvx /bin/
+COPY --from=ghcr.io/astral-sh/uv:0.8.9 /uv /uvx /bin/
 ```
 
 !!! tip
@@ -134,7 +134,7 @@
 Or, with the installer:
 
 ```dockerfile
-ADD https://astral.sh/uv/0.8.8/install.sh /uv-installer.sh
+ADD https://astral.sh/uv/0.8.9/install.sh /uv-installer.sh
 ```
 
 ### Installing a project
@@ -560,5 +560,5 @@
 !!! tip
 
     These examples use `latest`, but best practice is to verify the 
attestation for a specific
-    version tag, e.g., `ghcr.io/astral-sh/uv:0.8.8`, or (even better) the 
specific image digest,
+    version tag, e.g., `ghcr.io/astral-sh/uv:0.8.9`, or (even better) the 
specific image digest,
     such as 
`ghcr.io/astral-sh/uv:0.5.27@sha256:5adf09a5a526f380237408032a9308000d14d5947eafa687ad6c6a2476787b4f`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/docs/guides/integration/github.md 
new/uv-0.8.9/docs/guides/integration/github.md
--- old/uv-0.8.8/docs/guides/integration/github.md      2025-08-09 
02:03:07.000000000 +0200
+++ new/uv-0.8.9/docs/guides/integration/github.md      2025-08-12 
04:07:59.000000000 +0200
@@ -47,7 +47,7 @@
         uses: astral-sh/setup-uv@v6
         with:
           # Install a specific version of uv.
-          version: "0.8.8"
+          version: "0.8.9"
 ```
 
 ## Setting up Python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/docs/guides/integration/pre-commit.md 
new/uv-0.8.9/docs/guides/integration/pre-commit.md
--- old/uv-0.8.8/docs/guides/integration/pre-commit.md  2025-08-09 
02:03:07.000000000 +0200
+++ new/uv-0.8.9/docs/guides/integration/pre-commit.md  2025-08-12 
04:07:59.000000000 +0200
@@ -19,7 +19,7 @@
 repos:
   - repo: https://github.com/astral-sh/uv-pre-commit
     # uv version.
-    rev: 0.8.8
+    rev: 0.8.9
     hooks:
       - id: uv-lock
 ```
@@ -30,7 +30,7 @@
 repos:
   - repo: https://github.com/astral-sh/uv-pre-commit
     # uv version.
-    rev: 0.8.8
+    rev: 0.8.9
     hooks:
       - id: uv-export
 ```
@@ -41,7 +41,7 @@
 repos:
   - repo: https://github.com/astral-sh/uv-pre-commit
     # uv version.
-    rev: 0.8.8
+    rev: 0.8.9
     hooks:
       # Compile requirements
       - id: pip-compile
@@ -54,7 +54,7 @@
 repos:
   - repo: https://github.com/astral-sh/uv-pre-commit
     # uv version.
-    rev: 0.8.8
+    rev: 0.8.9
     hooks:
       # Compile requirements
       - id: pip-compile
@@ -68,7 +68,7 @@
 repos:
   - repo: https://github.com/astral-sh/uv-pre-commit
     # uv version.
-    rev: 0.8.8
+    rev: 0.8.9
     hooks:
       # Compile requirements
       - id: pip-compile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/docs/reference/cli.md 
new/uv-0.8.9/docs/reference/cli.md
--- old/uv-0.8.8/docs/reference/cli.md  2025-08-09 02:03:07.000000000 +0200
+++ new/uv-0.8.9/docs/reference/cli.md  2025-08-12 04:07:59.000000000 +0200
@@ -2970,6 +2970,8 @@
 <p>Note that currently, only local paths are supported.</p>
 <p>May also be set with the <code>UV_PYTHON_DOWNLOADS_JSON_URL</code> 
environment variable.</p></dd><dt id="uv-python-upgrade--quiet"><a 
href="#uv-python-upgrade--quiet"><code>--quiet</code></a>, 
<code>-q</code></dt><dd><p>Use quiet output.</p>
 <p>Repeating this option, e.g., <code>-qq</code>, will enable a silent mode in 
which uv will write no output to stdout.</p>
+</dd><dt id="uv-python-upgrade--reinstall"><a 
href="#uv-python-upgrade--reinstall"><code>--reinstall</code></a>, 
<code>-r</code></dt><dd><p>Reinstall the latest Python patch, if it's already 
installed.</p>
+<p>By default, uv will exit successfully if the latest patch is already 
installed.</p>
 </dd><dt id="uv-python-upgrade--verbose"><a 
href="#uv-python-upgrade--verbose"><code>--verbose</code></a>, 
<code>-v</code></dt><dd><p>Use verbose output.</p>
 <p>You can configure fine-grained logging using the <code>RUST_LOG</code> 
environment variable. (<a 
href="https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives";>https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives</a>)</p>
 </dd></dl>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/pyproject.toml new/uv-0.8.9/pyproject.toml
--- old/uv-0.8.8/pyproject.toml 2025-08-09 02:03:07.000000000 +0200
+++ new/uv-0.8.9/pyproject.toml 2025-08-12 04:07:59.000000000 +0200
@@ -4,7 +4,7 @@
 
 [project]
 name = "uv"
-version = "0.8.8"
+version = "0.8.9"
 description = "An extremely fast Python package and project manager, written 
in Rust."
 authors = [{ name = "Astral Software Inc.", email = "h...@astral.sh" }]
 requires-python = ">=3.8"
@@ -25,6 +25,7 @@
   "Programming Language :: Python :: 3.11",
   "Programming Language :: Python :: 3.12",
   "Programming Language :: Python :: 3.13",
+  "Programming Language :: Python :: 3.14",
   "Programming Language :: Python :: 3 :: Only",
   "Topic :: Software Development :: Quality Assurance",
   "Topic :: Software Development :: Testing",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/python/ruff.toml 
new/uv-0.8.9/python/ruff.toml
--- old/uv-0.8.8/python/ruff.toml       1970-01-01 01:00:00.000000000 +0100
+++ new/uv-0.8.9/python/ruff.toml       2025-08-12 04:07:59.000000000 +0200
@@ -0,0 +1,2 @@
+# It is important to retain compatibility here.
+target-version = "py37"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/uv-0.8.8/python/uv/_find_uv.py 
new/uv-0.8.9/python/uv/_find_uv.py
--- old/uv-0.8.8/python/uv/_find_uv.py  2025-08-09 02:03:07.000000000 +0200
+++ new/uv-0.8.9/python/uv/_find_uv.py  2025-08-12 04:07:59.000000000 +0200
@@ -76,11 +76,7 @@
 
     if not all(
         fnmatch(part, match_part)
-        for part, match_part in (
-            zip(reversed(parts), reversed(match_parts), strict=False)
-            if sys.version_info >= (3, 10)
-            else zip(reversed(parts), reversed(match_parts))  # noqa: B905
-        )
+        for part, match_part in zip(reversed(parts), reversed(match_parts))
     ):
         return None
 

++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/python-uv/vendor.tar.zst 
/work/SRC/openSUSE:Factory/.python-uv.new.1085/vendor.tar.zst differ: char 7, 
line 1

Reply via email to