mirror of https://github.com/astral-sh/uv
This is not erroring
This commit is contained in:
parent
bbb49ef912
commit
5339c83998
|
|
@ -10,7 +10,7 @@ use tempfile::TempDir;
|
|||
use tokio::io::{AsyncRead, AsyncSeekExt, ReadBuf};
|
||||
use tokio::sync::Semaphore;
|
||||
use tokio_util::compat::FuturesAsyncReadCompatExt;
|
||||
use tracing::{Instrument, info_span, instrument, warn};
|
||||
use tracing::{Instrument, info_span, instrument, warn, debug};
|
||||
use url::Url;
|
||||
use uv_auth::PyxTokenStore;
|
||||
use uv_cache::{ArchiveId, CacheBucket, CacheEntry, WheelCache};
|
||||
|
|
@ -377,29 +377,24 @@ impl<'a, Context: BuildContext> DistributionDatabase<'a, Context> {
|
|||
hashes: HashPolicy<'_>,
|
||||
) -> Result<LocalWheel, Error> {
|
||||
// If this is a Git distribution, look for cached wheels.
|
||||
// TODO(charlie): What if this is unnamed? How can we infer the package name? Maybe we make
|
||||
// the whole thing content-addressed, and assume that the registry contains at most one
|
||||
// package?
|
||||
if let BuildableSource::Dist(SourceDist::Git(dist)) = dist {
|
||||
if let SourceDist::Git(dist) = dist {
|
||||
if dist.subdirectory.is_none() {
|
||||
if let Some(repo) = GitHubRepository::parse(dist.git.repository()) {
|
||||
if let Ok(store) = PyxTokenStore::from_settings() {
|
||||
let url = store.api().join(&format!("v1/git/astral-sh/{}/{}", repo.owner, repo.repo)).unwrap();
|
||||
// let url = store.api().join(&format!("v1/git/astral-sh/{}/{}", repo.owner, repo.repo)).unwrap();
|
||||
let url = VerbatimUrl::parse_url(&format!("http://localhost:8000/v1/git/astral-sh/{}/{}", repo.owner, repo.repo)).unwrap();
|
||||
let index = IndexMetadata {
|
||||
url: IndexUrl::from(VerbatimUrl::from(url)),
|
||||
// url: IndexUrl::from(VerbatimUrl::from(url)),
|
||||
url: IndexUrl::from(url.clone()),
|
||||
format: IndexFormat::Simple,
|
||||
};
|
||||
let archives = self.client
|
||||
.managed(|client| {
|
||||
.manual(|client, semaphore| {
|
||||
client.package_metadata(
|
||||
dist.name(), Some(index.as_ref()), self.build_context.capabilities(), self.build_context
|
||||
dist.name(), Some(index.as_ref()), self.build_context.capabilities(), semaphore,
|
||||
)
|
||||
})
|
||||
.await
|
||||
.map_err(|err| match err {
|
||||
CachedClientError::Callback { err, .. } => err,
|
||||
CachedClientError::Client { err, .. } => Error::Client(err),
|
||||
})?;
|
||||
.await?;
|
||||
|
||||
// TODO(charlie): This needs to prefer wheels to sdists (but allow sdists),
|
||||
// etc., filter by tags, filter by `requires-python`, etc.
|
||||
|
|
@ -412,6 +407,7 @@ impl<'a, Context: BuildContext> DistributionDatabase<'a, Context> {
|
|||
.expect("archived version files always deserializes");
|
||||
for (filename, file) in files.all() {
|
||||
if let DistFilename::WheelFilename(filename) = filename {
|
||||
debug!("Found cached wheel {filename} for Git distribution: {dist}");
|
||||
let dist = BuiltDist::Registry(RegistryBuiltDist {
|
||||
wheels: vec![
|
||||
RegistryBuiltWheel {
|
||||
|
|
@ -597,25 +593,26 @@ impl<'a, Context: BuildContext> DistributionDatabase<'a, Context> {
|
|||
// the whole thing content-addressed, and assume that the registry contains at most one
|
||||
// package?
|
||||
if let BuildableSource::Dist(SourceDist::Git(dist)) = source {
|
||||
// TODO(charlie): Make this more efficient.
|
||||
self.builder.resolve_revision(source, &self.client).await?;
|
||||
|
||||
if dist.subdirectory.is_none() {
|
||||
if let Some(repo) = GitHubRepository::parse(dist.git.repository()) {
|
||||
if let Ok(store) = PyxTokenStore::from_settings() {
|
||||
let url = store.api().join(&format!("v1/git/astral-sh/{}/{}", repo.owner, repo.repo)).unwrap();
|
||||
// let url = store.api().join(&format!("v1/git/astral-sh/{}/{}", repo.owner, repo.repo)).unwrap();
|
||||
let url = VerbatimUrl::parse_url(&format!("http://localhost:8000/v1/git/astral-sh/{}/{}", repo.owner, repo.repo)).unwrap();
|
||||
let index = IndexMetadata {
|
||||
url: IndexUrl::from(VerbatimUrl::from(url)),
|
||||
// url: IndexUrl::from(VerbatimUrl::from(url)),
|
||||
url: IndexUrl::from(url.clone()),
|
||||
format: IndexFormat::Simple,
|
||||
};
|
||||
let archives = self.client
|
||||
.managed(|client| {
|
||||
.manual(|client, semaphore| {
|
||||
client.package_metadata(
|
||||
dist.name(), Some(index.as_ref()), self.build_context.capabilities(), self.build_context
|
||||
dist.name(), Some(index.as_ref()), self.build_context.capabilities(),semaphore
|
||||
)
|
||||
})
|
||||
.await
|
||||
.map_err(|err| match err {
|
||||
CachedClientError::Callback { err, .. } => err,
|
||||
CachedClientError::Client { err, .. } => Error::Client(err),
|
||||
})?;
|
||||
.await?;
|
||||
|
||||
// TODO(charlie): This needs to prefer wheels to sdists (but allow sdists),
|
||||
// etc.
|
||||
|
|
@ -628,6 +625,7 @@ impl<'a, Context: BuildContext> DistributionDatabase<'a, Context> {
|
|||
.expect("archived version files always deserializes");
|
||||
for (filename, file) in files.all() {
|
||||
if let DistFilename::WheelFilename(filename) = filename {
|
||||
debug!("Found cached wheel {filename} for Git distribution: {dist}");
|
||||
let dist = BuiltDist::Registry(RegistryBuiltDist {
|
||||
wheels: vec![
|
||||
RegistryBuiltWheel {
|
||||
|
|
|
|||
|
|
@ -213,6 +213,7 @@ impl GitResolver {
|
|||
/// [`resolve_precise`], and will return `None` for URLs that have not been resolved _or_
|
||||
/// already have a precise reference.
|
||||
pub fn precise(&self, url: GitUrl) -> Option<GitUrl> {
|
||||
println!("Resolving precise Git URL for: {url}");
|
||||
let reference = RepositoryReference::from(&url);
|
||||
let precise = self.get(&reference)?;
|
||||
Some(url.with_precise(*precise))
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
3.14.0
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
def main():
|
||||
print("Hello from foo!")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
[project]
|
||||
name = "foo"
|
||||
version = "0.1.0"
|
||||
description = "Add your description here"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.14.0"
|
||||
dependencies = ["anyio"]
|
||||
|
||||
[tool.uv.sources]
|
||||
anyio = { git = "https://github.com/agronholm/anyio", rev = "64b753b19c9a49e3ae395cde457cf82d51f7e999" }
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
version = 1
|
||||
revision = 3
|
||||
requires-python = ">=3.14.0"
|
||||
|
||||
[[package]]
|
||||
name = "anyio"
|
||||
version = "4.11.0.post24"
|
||||
source = { git = "https://github.com/agronholm/anyio?rev=64b753b19c9a49e3ae395cde457cf82d51f7e999#64b753b19c9a49e3ae395cde457cf82d51f7e999" }
|
||||
dependencies = [
|
||||
{ name = "idna" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "foo"
|
||||
version = "0.1.0"
|
||||
source = { virtual = "." }
|
||||
dependencies = [
|
||||
{ name = "anyio" },
|
||||
]
|
||||
|
||||
[package.metadata]
|
||||
requires-dist = [{ name = "anyio", git = "https://github.com/agronholm/anyio?rev=64b753b19c9a49e3ae395cde457cf82d51f7e999" }]
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "3.11"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" },
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="pypi:repository-version" content="1.0">
|
||||
<title>Links for anyio</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Links for anyio</h1>
|
||||
<a href="anyio-4.11.0.post24-py3-none-any.whl">anyio-4.11.0.post24-py3-none-any.whl</a><br/>
|
||||
<a href="anyio-4.11.0.post24.tar.gz">anyio-4.11.0.post24.tar.gz</a><br/>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="pypi:repository-version" content="1.0">
|
||||
<title>Links for anyio</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Links for anyio</h1>
|
||||
<a href="anyio/">anyio</a><br/>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in New Issue