Skip to content

Commit 1764935

Browse files
authored
Merge branch 'main' into fix-managed-python-cache-tests
2 parents 0f7ced8 + f5ce5b4 commit 1764935

File tree

67 files changed

+1523
-334
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+1523
-334
lines changed

.github/renovate.json5

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"customManagers:githubActionsVersions",
99
],
1010
labels: ["internal"],
11-
schedule: ["before 4am on Monday"],
11+
schedule: ["* 0-3 * * 1"],
1212
semanticCommits: "disabled",
1313
separateMajorMinor: false,
1414
prHourlyLimit: 10,

CHANGELOG.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,42 @@
33
<!-- prettier-ignore-start -->
44

55

6+
## 0.9.9
7+
8+
Released on 2025-11-12.
9+
10+
### Deprecations
11+
12+
- Deprecate use of `--project` in `uv init` ([#16674](https://github.com/astral-sh/uv/pull/16674))
13+
14+
### Enhancements
15+
16+
- Add iOS support to Python interpreter discovery ([#16686](https://github.com/astral-sh/uv/pull/16686))
17+
- Reject ambiguously parsed URLs ([#16622](https://github.com/astral-sh/uv/pull/16622))
18+
- Allow explicit values in `uv version --bump` ([#16555](https://github.com/astral-sh/uv/pull/16555))
19+
- Warn on use of managed pre-release Python versions when a stable version is available ([#16619](https://github.com/astral-sh/uv/pull/16619))
20+
- Allow signing trampolines on Windows by using `.rcdata` to store metadata ([#15068](https://github.com/astral-sh/uv/pull/15068))
21+
- Add `--only-emit-workspace` and similar variants to `uv export` ([#16681](https://github.com/astral-sh/uv/pull/16681))
22+
23+
### Preview features
24+
25+
- Add `uv workspace dir` command ([#16678](https://github.com/astral-sh/uv/pull/16678))
26+
- Add `uv workspace metadata` command ([#16516](https://github.com/astral-sh/uv/pull/16516))
27+
28+
### Configuration
29+
30+
- Add `UV_NO_DEFAULT_GROUPS` environment variable ([#16645](https://github.com/astral-sh/uv/pull/16645))
31+
32+
### Bug fixes
33+
34+
- Remove `torch-model-archiver` and `torch-tb-profiler` from PyTorch backend ([#16655](https://github.com/astral-sh/uv/pull/16655))
35+
- Fix Pixi environment detection ([#16585](https://github.com/astral-sh/uv/pull/16585))
36+
37+
### Documentation
38+
39+
- Fix `CMD` path in FastAPI Dockerfile ([#16701](https://github.com/astral-sh/uv/pull/16701))
40+
41+
642
## 0.9.8
743

844
Released on 2025-11-07.

Cargo.lock

Lines changed: 5 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/uv-auth/src/middleware.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,7 @@ impl AuthMiddleware {
502502
// Nothing to insert into the cache if we don't have credentials
503503
return next.run(request, extensions).await;
504504
};
505-
let url = DisplaySafeUrl::from(request.url().clone());
505+
let url = DisplaySafeUrl::from_url(request.url().clone());
506506
if matches!(auth_policy, AuthPolicy::Always) && credentials.password().is_none() {
507507
return Err(Error::Middleware(format_err!("Missing password for {url}")));
508508
}
@@ -801,7 +801,7 @@ impl AuthMiddleware {
801801
}
802802

803803
fn tracing_url(request: &Request, credentials: Option<&Authentication>) -> DisplaySafeUrl {
804-
let mut url = DisplaySafeUrl::from(request.url().clone());
804+
let mut url = DisplaySafeUrl::from_url(request.url().clone());
805805
if let Some(Authentication::Credentials(creds)) = credentials {
806806
if let Some(username) = creds.username() {
807807
let _ = url.set_username(username);
@@ -1990,13 +1990,13 @@ mod tests {
19901990
let base_url_2 = base_url.join("prefix_2")?;
19911991
let indexes = Indexes::from_indexes(vec![
19921992
Index {
1993-
url: DisplaySafeUrl::from(base_url_1.clone()),
1994-
root_url: DisplaySafeUrl::from(base_url_1.clone()),
1993+
url: DisplaySafeUrl::from_url(base_url_1.clone()),
1994+
root_url: DisplaySafeUrl::from_url(base_url_1.clone()),
19951995
auth_policy: AuthPolicy::Auto,
19961996
},
19971997
Index {
1998-
url: DisplaySafeUrl::from(base_url_2.clone()),
1999-
root_url: DisplaySafeUrl::from(base_url_2.clone()),
1998+
url: DisplaySafeUrl::from_url(base_url_2.clone()),
1999+
root_url: DisplaySafeUrl::from_url(base_url_2.clone()),
20002000
auth_policy: AuthPolicy::Auto,
20012001
},
20022002
]);
@@ -2098,8 +2098,8 @@ mod tests {
20982098
let base_url = Url::parse(&server.uri())?;
20992099
let index_url = base_url.join("prefix_1")?;
21002100
let indexes = Indexes::from_indexes(vec![Index {
2101-
url: DisplaySafeUrl::from(index_url.clone()),
2102-
root_url: DisplaySafeUrl::from(index_url.clone()),
2101+
url: DisplaySafeUrl::from_url(index_url.clone()),
2102+
root_url: DisplaySafeUrl::from_url(index_url.clone()),
21032103
auth_policy: AuthPolicy::Auto,
21042104
}]);
21052105

@@ -2153,7 +2153,7 @@ mod tests {
21532153
}
21542154

21552155
fn indexes_for(url: &Url, policy: AuthPolicy) -> Indexes {
2156-
let mut url = DisplaySafeUrl::from(url.clone());
2156+
let mut url = DisplaySafeUrl::from_url(url.clone());
21572157
url.set_password(None).ok();
21582158
url.set_username("").ok();
21592159
Indexes::from_indexes(vec![Index {

crates/uv-auth/src/pyx.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use tracing::debug;
1010
use url::Url;
1111

1212
use uv_cache_key::CanonicalUrl;
13-
use uv_redacted::DisplaySafeUrl;
13+
use uv_redacted::{DisplaySafeUrl, DisplaySafeUrlError};
1414
use uv_small_str::SmallString;
1515
use uv_state::{StateBucket, StateStore};
1616
use uv_static::EnvVars;
@@ -473,7 +473,7 @@ impl PyxTokenStore {
473473
#[derive(thiserror::Error, Debug)]
474474
pub enum TokenStoreError {
475475
#[error(transparent)]
476-
Url(#[from] url::ParseError),
476+
Url(#[from] DisplaySafeUrlError),
477477
#[error(transparent)]
478478
Io(#[from] io::Error),
479479
#[error(transparent)]

crates/uv-auth/src/service.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ use serde::{Deserialize, Serialize};
22
use std::str::FromStr;
33
use thiserror::Error;
44
use url::Url;
5-
use uv_redacted::DisplaySafeUrl;
5+
use uv_redacted::{DisplaySafeUrl, DisplaySafeUrlError};
66

77
#[derive(Error, Debug)]
88
pub enum ServiceParseError {
99
#[error(transparent)]
10-
InvalidUrl(#[from] url::ParseError),
10+
InvalidUrl(#[from] DisplaySafeUrlError),
1111
#[error("Unsupported scheme: {0}")]
1212
UnsupportedScheme(String),
1313
#[error("HTTPS is required for non-local hosts")]
@@ -51,7 +51,7 @@ impl FromStr for Service {
5151
// First try parsing as-is
5252
let url = match DisplaySafeUrl::parse(s) {
5353
Ok(url) => url,
54-
Err(url::ParseError::RelativeUrlWithoutBase) => {
54+
Err(DisplaySafeUrlError::Url(url::ParseError::RelativeUrlWithoutBase)) => {
5555
// If it's a relative URL, try prepending https://
5656
let with_https = format!("https://{s}");
5757
DisplaySafeUrl::parse(&with_https)?

crates/uv-bin-install/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ uv-distribution-filename = { workspace = true }
2323
uv-extract = { workspace = true }
2424
uv-pep440 = { workspace = true }
2525
uv-platform = { workspace = true }
26+
uv-redacted = { workspace = true }
2627
fs-err = { workspace = true, features = ["tokio"] }
2728
futures = { workspace = true }
2829
reqwest = { workspace = true }
@@ -34,4 +35,3 @@ tokio = { workspace = true }
3435
tokio-util = { workspace = true }
3536
tracing = { workspace = true }
3637
url = { workspace = true }
37-

crates/uv-bin-install/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ use uv_client::{BaseClient, is_transient_network_error};
2424
use uv_extract::{Error as ExtractError, stream};
2525
use uv_pep440::Version;
2626
use uv_platform::Platform;
27+
use uv_redacted::DisplaySafeUrl;
2728

2829
/// Binary tools that can be installed.
2930
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
@@ -311,7 +312,7 @@ async fn download_and_unpack(
311312
let temp_dir = tempfile::tempdir_in(cache.bucket(CacheBucket::Binaries))?;
312313

313314
let response = client
314-
.for_host(&download_url.clone().into())
315+
.for_host(&DisplaySafeUrl::from_url(download_url.clone()))
315316
.get(download_url.clone())
316317
.send()
317318
.await

0 commit comments

Comments
 (0)