mirror of
https://github.com/astral-sh/uv.git
synced 2025-11-01 04:17:37 +00:00
Respect HTTP client options when reading remote requirements files (#2434)
Uses the base client introduced in #2431 to restore use of our fully configured client when reading remote requirements files. Closes https://github.com/astral-sh/uv/issues/2357 ## Test plan ``` npx http-server --username user --password password cargo run -- pip install -r http://user:password@127.0.0.1:8080/requirements.txt ``` Fails on main succeeds on branch.
This commit is contained in:
parent
9654da418e
commit
c6e181d233
14 changed files with 191 additions and 102 deletions
|
|
@ -9,7 +9,7 @@ use crate::{ExtrasSpecification, RequirementsSource};
|
|||
use distribution_types::{FlatIndexLocation, IndexUrl};
|
||||
use pep508_rs::{Requirement, RequirementsTxtRequirement};
|
||||
use requirements_txt::{EditableRequirement, FindLink, RequirementsTxt};
|
||||
use uv_client::Connectivity;
|
||||
use uv_client::BaseClientBuilder;
|
||||
use uv_fs::Simplified;
|
||||
use uv_normalize::{ExtraName, PackageName};
|
||||
use uv_warnings::warn_user;
|
||||
|
|
@ -44,7 +44,7 @@ impl RequirementsSpecification {
|
|||
pub async fn from_source(
|
||||
source: &RequirementsSource,
|
||||
extras: &ExtrasSpecification<'_>,
|
||||
connectivity: Connectivity,
|
||||
client_builder: &BaseClientBuilder<'_>,
|
||||
) -> Result<Self> {
|
||||
Ok(match source {
|
||||
RequirementsSource::Package(name) => {
|
||||
|
|
@ -81,7 +81,7 @@ impl RequirementsSpecification {
|
|||
}
|
||||
RequirementsSource::RequirementsTxt(path) => {
|
||||
let requirements_txt =
|
||||
RequirementsTxt::parse(path, std::env::current_dir()?, connectivity).await?;
|
||||
RequirementsTxt::parse(path, std::env::current_dir()?, client_builder).await?;
|
||||
Self {
|
||||
project: None,
|
||||
requirements: requirements_txt
|
||||
|
|
@ -185,7 +185,7 @@ impl RequirementsSpecification {
|
|||
constraints: &[RequirementsSource],
|
||||
overrides: &[RequirementsSource],
|
||||
extras: &ExtrasSpecification<'_>,
|
||||
connectivity: Connectivity,
|
||||
client_builder: &BaseClientBuilder<'_>,
|
||||
) -> Result<Self> {
|
||||
let mut spec = Self::default();
|
||||
|
||||
|
|
@ -193,7 +193,7 @@ impl RequirementsSpecification {
|
|||
// A `requirements.txt` can contain a `-c constraints.txt` directive within it, so reading
|
||||
// a requirements file can also add constraints.
|
||||
for source in requirements {
|
||||
let source = Self::from_source(source, extras, connectivity).await?;
|
||||
let source = Self::from_source(source, extras, client_builder).await?;
|
||||
spec.requirements.extend(source.requirements);
|
||||
spec.constraints.extend(source.constraints);
|
||||
spec.overrides.extend(source.overrides);
|
||||
|
|
@ -220,7 +220,7 @@ impl RequirementsSpecification {
|
|||
|
||||
// Read all constraints, treating _everything_ as a constraint.
|
||||
for source in constraints {
|
||||
let source = Self::from_source(source, extras, connectivity).await?;
|
||||
let source = Self::from_source(source, extras, client_builder).await?;
|
||||
for requirement in source.requirements {
|
||||
match requirement {
|
||||
RequirementsTxtRequirement::Pep508(requirement) => {
|
||||
|
|
@ -251,7 +251,7 @@ impl RequirementsSpecification {
|
|||
|
||||
// Read all overrides, treating both requirements _and_ constraints as overrides.
|
||||
for source in overrides {
|
||||
let source = Self::from_source(source, extras, connectivity).await?;
|
||||
let source = Self::from_source(source, extras, client_builder).await?;
|
||||
for requirement in source.requirements {
|
||||
match requirement {
|
||||
RequirementsTxtRequirement::Pep508(requirement) => {
|
||||
|
|
@ -286,14 +286,14 @@ impl RequirementsSpecification {
|
|||
/// Read the requirements from a set of sources.
|
||||
pub async fn from_simple_sources(
|
||||
requirements: &[RequirementsSource],
|
||||
connectivity: Connectivity,
|
||||
client_builder: &BaseClientBuilder<'_>,
|
||||
) -> Result<Self> {
|
||||
Self::from_sources(
|
||||
requirements,
|
||||
&[],
|
||||
&[],
|
||||
&ExtrasSpecification::None,
|
||||
connectivity,
|
||||
client_builder,
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ use anyhow::Result;
|
|||
use rustc_hash::FxHashSet;
|
||||
|
||||
use requirements_txt::RequirementsTxt;
|
||||
use uv_client::Connectivity;
|
||||
use uv_client::{BaseClientBuilder, Connectivity};
|
||||
use uv_normalize::PackageName;
|
||||
use uv_resolver::{Preference, PreferenceError};
|
||||
|
||||
|
|
@ -58,9 +58,12 @@ pub async fn read_lockfile(
|
|||
};
|
||||
|
||||
// Parse the requirements from the lockfile.
|
||||
let requirements_txt =
|
||||
RequirementsTxt::parse(output_file, std::env::current_dir()?, Connectivity::Offline)
|
||||
.await?;
|
||||
let requirements_txt = RequirementsTxt::parse(
|
||||
output_file,
|
||||
std::env::current_dir()?,
|
||||
&BaseClientBuilder::new().connectivity(Connectivity::Offline),
|
||||
)
|
||||
.await?;
|
||||
let preferences = requirements_txt
|
||||
.requirements
|
||||
.into_iter()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue