mirror of
https://github.com/astral-sh/uv.git
synced 2025-08-04 10:58:28 +00:00
uv-resolver: use Requires-Python to filter dependencies during universal resolution
In the time before universal resolving, we would always pass a `MarkerEnvironment`, and this environment would capture any relevant `Requires-Python` specifier (including if `-p/--python` was provided on the CLI). But in universal resolution, we very specifically do not use a `MarkerEnvironment` because we want to produce a resolution that is compatible across potentially multiple environments. This in turn meant that we lost `Requires-Python` filtering. This PR adds it back. We do this by converting our `PythonRequirement` into a `MarkerTree` that encodes the version specifiers in a `Requires-Python` specifier. We then ask whether that `MarkerTree` is disjoint with a dependency specification's `MarkerTree`. If it is, then we know it's impossible for that dependency specification to every be true, and we can completely ignore it.
This commit is contained in:
parent
c32667caec
commit
75b323232d
8 changed files with 147 additions and 422 deletions
|
@ -8,7 +8,7 @@ use tracing::warn;
|
||||||
|
|
||||||
use distribution_types::Verbatim;
|
use distribution_types::Verbatim;
|
||||||
use pep440_rs::Version;
|
use pep440_rs::Version;
|
||||||
use pep508_rs::MarkerEnvironment;
|
use pep508_rs::{MarkerEnvironment, MarkerTree};
|
||||||
use pypi_types::{
|
use pypi_types::{
|
||||||
ParsedArchiveUrl, ParsedGitUrl, ParsedPathUrl, ParsedUrl, Requirement, RequirementSource,
|
ParsedArchiveUrl, ParsedGitUrl, ParsedPathUrl, ParsedUrl, Requirement, RequirementSource,
|
||||||
};
|
};
|
||||||
|
@ -39,6 +39,7 @@ impl PubGrubDependencies {
|
||||||
locals: &Locals,
|
locals: &Locals,
|
||||||
git: &GitResolver,
|
git: &GitResolver,
|
||||||
env: Option<&MarkerEnvironment>,
|
env: Option<&MarkerEnvironment>,
|
||||||
|
requires_python: Option<&MarkerTree>,
|
||||||
) -> Result<Self, ResolveError> {
|
) -> Result<Self, ResolveError> {
|
||||||
let mut dependencies = Vec::default();
|
let mut dependencies = Vec::default();
|
||||||
let mut seen = FxHashSet::default();
|
let mut seen = FxHashSet::default();
|
||||||
|
@ -55,6 +56,7 @@ impl PubGrubDependencies {
|
||||||
locals,
|
locals,
|
||||||
git,
|
git,
|
||||||
env,
|
env,
|
||||||
|
requires_python,
|
||||||
&mut dependencies,
|
&mut dependencies,
|
||||||
&mut seen,
|
&mut seen,
|
||||||
)?;
|
)?;
|
||||||
|
@ -87,6 +89,7 @@ fn add_requirements(
|
||||||
locals: &Locals,
|
locals: &Locals,
|
||||||
git: &GitResolver,
|
git: &GitResolver,
|
||||||
env: Option<&MarkerEnvironment>,
|
env: Option<&MarkerEnvironment>,
|
||||||
|
requires_python: Option<&MarkerTree>,
|
||||||
dependencies: &mut Vec<(PubGrubPackage, Range<Version>)>,
|
dependencies: &mut Vec<(PubGrubPackage, Range<Version>)>,
|
||||||
seen: &mut FxHashSet<ExtraName>,
|
seen: &mut FxHashSet<ExtraName>,
|
||||||
) -> Result<(), ResolveError> {
|
) -> Result<(), ResolveError> {
|
||||||
|
@ -96,6 +99,11 @@ fn add_requirements(
|
||||||
} else {
|
} else {
|
||||||
Either::Right(requirements.iter())
|
Either::Right(requirements.iter())
|
||||||
}) {
|
}) {
|
||||||
|
// If the requirement would not be selected with any Python version
|
||||||
|
// supported by the root, skip it.
|
||||||
|
if !satisfies_requires_python(requires_python, requirement) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// If the requirement isn't relevant for the current platform, skip it.
|
// If the requirement isn't relevant for the current platform, skip it.
|
||||||
match source_extra {
|
match source_extra {
|
||||||
Some(source_extra) => {
|
Some(source_extra) => {
|
||||||
|
@ -157,6 +165,7 @@ fn add_requirements(
|
||||||
locals,
|
locals,
|
||||||
git,
|
git,
|
||||||
env,
|
env,
|
||||||
|
requires_python,
|
||||||
dependencies,
|
dependencies,
|
||||||
seen,
|
seen,
|
||||||
)?;
|
)?;
|
||||||
|
@ -170,6 +179,11 @@ fn add_requirements(
|
||||||
|
|
||||||
// If the requirement was constrained, add those constraints.
|
// If the requirement was constrained, add those constraints.
|
||||||
for constraint in constraints.get(&requirement.name).into_iter().flatten() {
|
for constraint in constraints.get(&requirement.name).into_iter().flatten() {
|
||||||
|
// If the requirement would not be selected with any Python
|
||||||
|
// version supported by the root, skip it.
|
||||||
|
if !satisfies_requires_python(requires_python, constraint) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// If the requirement isn't relevant for the current platform, skip it.
|
// If the requirement isn't relevant for the current platform, skip it.
|
||||||
match source_extra {
|
match source_extra {
|
||||||
Some(source_extra) => {
|
Some(source_extra) => {
|
||||||
|
@ -381,3 +395,22 @@ impl PubGrubRequirement {
|
||||||
Self::from_requirement(constraint, None, urls, locals, git)
|
Self::from_requirement(constraint, None, urls, locals, git)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns true if and only if the given requirement's marker expression has a
|
||||||
|
/// possible true value given the `requires_python` specifier given.
|
||||||
|
///
|
||||||
|
/// While this is always called, a `requires_python` is only non-None when in
|
||||||
|
/// universal resolution mode. In non-universal mode, `requires_python` is
|
||||||
|
/// `None` and this always returns `true`.
|
||||||
|
fn satisfies_requires_python(
|
||||||
|
requires_python: Option<&MarkerTree>,
|
||||||
|
requirement: &Requirement,
|
||||||
|
) -> bool {
|
||||||
|
let Some(requires_python) = requires_python else {
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
let Some(marker) = requirement.marker.as_ref() else {
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
!crate::marker::is_disjoint(requires_python, marker)
|
||||||
|
}
|
||||||
|
|
|
@ -58,6 +58,12 @@ impl PythonRequirement {
|
||||||
pub fn target(&self) -> Option<&PythonTarget> {
|
pub fn target(&self) -> Option<&PythonTarget> {
|
||||||
self.target.as_ref()
|
self.target.as_ref()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Return the target version of Python as a "requires python" type,
|
||||||
|
/// if available.
|
||||||
|
pub(crate) fn requires_python(&self) -> Option<&RequiresPython> {
|
||||||
|
self.target().and_then(|target| target.as_requires_python())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Eq, PartialEq)]
|
#[derive(Debug, Clone, Eq, PartialEq)]
|
||||||
|
|
|
@ -3,7 +3,8 @@ use std::collections::Bound;
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use pubgrub::range::Range;
|
use pubgrub::range::Range;
|
||||||
|
|
||||||
use pep440_rs::{Version, VersionSpecifier, VersionSpecifiers};
|
use pep440_rs::{Operator, Version, VersionSpecifier, VersionSpecifiers};
|
||||||
|
use pep508_rs::{MarkerExpression, MarkerTree, MarkerValueVersion};
|
||||||
|
|
||||||
#[derive(thiserror::Error, Debug)]
|
#[derive(thiserror::Error, Debug)]
|
||||||
pub enum RequiresPythonError {
|
pub enum RequiresPythonError {
|
||||||
|
@ -169,6 +170,66 @@ impl RequiresPython {
|
||||||
pub fn bound(&self) -> &Bound<Version> {
|
pub fn bound(&self) -> &Bound<Version> {
|
||||||
&self.bound
|
&self.bound
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns this `Requires-Python` specifier as an equivalent marker
|
||||||
|
/// expression utilizing the `python_version` marker field.
|
||||||
|
///
|
||||||
|
/// This is useful for comparing a `Requires-Python` specifier with
|
||||||
|
/// arbitrary marker expressions. For example, one can ask whether the
|
||||||
|
/// returned marker expression is disjoint with another marker expression.
|
||||||
|
/// If it is, then one can conclude that the `Requires-Python` specifier
|
||||||
|
/// excludes the dependency with that other marker expression.
|
||||||
|
///
|
||||||
|
/// If this `Requires-Python` specifier has no constraints, then this
|
||||||
|
/// returns a marker tree that evaluates to `true` for all possible marker
|
||||||
|
/// environments.
|
||||||
|
pub fn to_marker_tree(&self) -> MarkerTree {
|
||||||
|
let (op, version) = match self.bound {
|
||||||
|
// If we see this anywhere, then it implies the marker
|
||||||
|
// tree we would generate would always evaluate to
|
||||||
|
// `true` because every possible Python version would
|
||||||
|
// satisfy it.
|
||||||
|
Bound::Unbounded => return MarkerTree::And(vec![]),
|
||||||
|
Bound::Excluded(ref version) => {
|
||||||
|
(Operator::GreaterThan, version.clone().without_local())
|
||||||
|
}
|
||||||
|
Bound::Included(ref version) => {
|
||||||
|
(Operator::GreaterThanEqual, version.clone().without_local())
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// For the `python_version` marker expression, it specifically only
|
||||||
|
// supports truncate major/minor versions of Python. This means that
|
||||||
|
// a `Requires-Python: 3.10.1` is satisfied by `python_version ==
|
||||||
|
// '3.10'`. So for disjointness checking, we need to ensure that the
|
||||||
|
// marker expression we generate for `Requires-Python` doesn't try to
|
||||||
|
// be overly selective about the patch version. We do this by keeping
|
||||||
|
// this part of our marker limited to the major and minor version
|
||||||
|
// components only.
|
||||||
|
let version_major_minor_only = Version::new(version.release().iter().take(2));
|
||||||
|
let expr_python_version = MarkerExpression::Version {
|
||||||
|
key: MarkerValueVersion::PythonVersion,
|
||||||
|
// OK because a version specifier is only invalid when the
|
||||||
|
// version is local (which is impossible here because we
|
||||||
|
// strip it above) or if the operator is ~= (which is also
|
||||||
|
// impossible here).
|
||||||
|
specifier: VersionSpecifier::from_version(op, version_major_minor_only).unwrap(),
|
||||||
|
};
|
||||||
|
let expr_python_full_version = MarkerExpression::Version {
|
||||||
|
key: MarkerValueVersion::PythonFullVersion,
|
||||||
|
// For `python_full_version`, we can use the entire
|
||||||
|
// version as-is.
|
||||||
|
//
|
||||||
|
// OK because a version specifier is only invalid when the
|
||||||
|
// version is local (which is impossible here because we
|
||||||
|
// strip it above) or if the operator is ~= (which is also
|
||||||
|
// impossible here).
|
||||||
|
specifier: VersionSpecifier::from_version(op, version).unwrap(),
|
||||||
|
};
|
||||||
|
MarkerTree::And(vec![
|
||||||
|
MarkerTree::Expression(expr_python_version),
|
||||||
|
MarkerTree::Expression(expr_python_full_version),
|
||||||
|
])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::fmt::Display for RequiresPython {
|
impl std::fmt::Display for RequiresPython {
|
||||||
|
|
|
@ -47,6 +47,7 @@ use crate::pubgrub::{
|
||||||
PubGrubPriorities, PubGrubPython, PubGrubSpecifier,
|
PubGrubPriorities, PubGrubPython, PubGrubSpecifier,
|
||||||
};
|
};
|
||||||
use crate::python_requirement::PythonRequirement;
|
use crate::python_requirement::PythonRequirement;
|
||||||
|
use crate::requires_python::RequiresPython;
|
||||||
use crate::resolution::ResolutionGraph;
|
use crate::resolution::ResolutionGraph;
|
||||||
pub(crate) use crate::resolver::availability::{
|
pub(crate) use crate::resolver::availability::{
|
||||||
IncompletePackage, ResolverVersion, UnavailablePackage, UnavailableReason, UnavailableVersion,
|
IncompletePackage, ResolverVersion, UnavailablePackage, UnavailableReason, UnavailableVersion,
|
||||||
|
@ -94,6 +95,14 @@ struct ResolverState<InstalledPackages: InstalledPackagesProvider> {
|
||||||
/// When not set, the resolver is in "universal" mode.
|
/// When not set, the resolver is in "universal" mode.
|
||||||
markers: Option<MarkerEnvironment>,
|
markers: Option<MarkerEnvironment>,
|
||||||
python_requirement: PythonRequirement,
|
python_requirement: PythonRequirement,
|
||||||
|
/// This is derived from `PythonRequirement` once at initialization
|
||||||
|
/// time. It's used in universal mode to filter our dependencies with
|
||||||
|
/// a `python_version` marker expression that has no overlap with the
|
||||||
|
/// `Requires-Python` specifier.
|
||||||
|
///
|
||||||
|
/// This is non-None if and only if the resolver is operating in
|
||||||
|
/// universal mode. (i.e., when `markers` is `None`.)
|
||||||
|
requires_python: Option<MarkerTree>,
|
||||||
selector: CandidateSelector,
|
selector: CandidateSelector,
|
||||||
index: InMemoryIndex,
|
index: InMemoryIndex,
|
||||||
installed_packages: InstalledPackages,
|
installed_packages: InstalledPackages,
|
||||||
|
@ -181,6 +190,16 @@ impl<Provider: ResolverProvider, InstalledPackages: InstalledPackagesProvider>
|
||||||
provider: Provider,
|
provider: Provider,
|
||||||
installed_packages: InstalledPackages,
|
installed_packages: InstalledPackages,
|
||||||
) -> Result<Self, ResolveError> {
|
) -> Result<Self, ResolveError> {
|
||||||
|
let requires_python = if markers.is_some() {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
Some(
|
||||||
|
python_requirement
|
||||||
|
.requires_python()
|
||||||
|
.map(RequiresPython::to_marker_tree)
|
||||||
|
.unwrap_or_else(|| MarkerTree::And(vec![])),
|
||||||
|
)
|
||||||
|
};
|
||||||
let state = ResolverState {
|
let state = ResolverState {
|
||||||
index: index.clone(),
|
index: index.clone(),
|
||||||
git: git.clone(),
|
git: git.clone(),
|
||||||
|
@ -200,6 +219,7 @@ impl<Provider: ResolverProvider, InstalledPackages: InstalledPackagesProvider>
|
||||||
hasher: hasher.clone(),
|
hasher: hasher.clone(),
|
||||||
markers: markers.cloned(),
|
markers: markers.cloned(),
|
||||||
python_requirement: python_requirement.clone(),
|
python_requirement: python_requirement.clone(),
|
||||||
|
requires_python,
|
||||||
reporter: None,
|
reporter: None,
|
||||||
installed_packages,
|
installed_packages,
|
||||||
};
|
};
|
||||||
|
@ -959,6 +979,7 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
|
||||||
&self.locals,
|
&self.locals,
|
||||||
&self.git,
|
&self.git,
|
||||||
self.markers.as_ref(),
|
self.markers.as_ref(),
|
||||||
|
self.requires_python.as_ref(),
|
||||||
);
|
);
|
||||||
|
|
||||||
let dependencies = match dependencies {
|
let dependencies = match dependencies {
|
||||||
|
@ -1109,6 +1130,7 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
|
||||||
&self.locals,
|
&self.locals,
|
||||||
&self.git,
|
&self.git,
|
||||||
self.markers.as_ref(),
|
self.markers.as_ref(),
|
||||||
|
self.requires_python.as_ref(),
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
for (dep_package, dep_version) in dependencies.iter() {
|
for (dep_package, dep_version) in dependencies.iter() {
|
||||||
|
|
|
@ -31,7 +31,7 @@ fn add_registry() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv add` is experimental and may change without warning.
|
warning: `uv add` is experimental and may change without warning.
|
||||||
Resolved 6 packages in [TIME]
|
Resolved 4 packages in [TIME]
|
||||||
Downloaded 4 packages in [TIME]
|
Downloaded 4 packages in [TIME]
|
||||||
Installed 4 packages in [TIME]
|
Installed 4 packages in [TIME]
|
||||||
+ anyio==3.7.0
|
+ anyio==3.7.0
|
||||||
|
@ -76,12 +76,6 @@ fn add_registry() -> Result<()> {
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/c6/b3/fefbf7e78ab3b805dec67d698dc18dd505af7a18a8dd08868c9b4fa736b5/anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce", size = 142737 }
|
sdist = { url = "https://files.pythonhosted.org/packages/c6/b3/fefbf7e78ab3b805dec67d698dc18dd505af7a18a8dd08868c9b4fa736b5/anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce", size = 142737 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/68/fe/7ce1926952c8a403b35029e194555558514b365ad77d75125f521a2bec62/anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0", size = 80873 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/68/fe/7ce1926952c8a403b35029e194555558514b365ad77d75125f521a2bec62/anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0", size = 80873 }]
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.1"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
[[distribution.dependencies]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.7"
|
version = "3.7"
|
||||||
|
@ -92,19 +86,6 @@ fn add_registry() -> Result<()> {
|
||||||
version = "1.3.1"
|
version = "1.3.1"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.12.2"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.8'"
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.1"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a0/65/d66b7fbaef021b3c954b3bbb196d21d8a4b97918ea524f82cfae474215af/exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16", size = 28717 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/01/90/79fe92dd413a9cab314ef5c591b5aa9b9ba787ae4cadab75055b0ae00b33/exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad", size = 16458 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.7"
|
version = "3.7"
|
||||||
|
@ -129,13 +110,6 @@ fn add_registry() -> Result<()> {
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }]
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.12.2"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }]
|
|
||||||
"###
|
"###
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -175,7 +149,7 @@ fn add_git() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv lock` is experimental and may change without warning.
|
warning: `uv lock` is experimental and may change without warning.
|
||||||
Resolved 6 packages in [TIME]
|
Resolved 4 packages in [TIME]
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
uv_snapshot!(context.filters(), context.sync(), @r###"
|
uv_snapshot!(context.filters(), context.sync(), @r###"
|
||||||
|
@ -200,7 +174,7 @@ fn add_git() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv add` is experimental and may change without warning.
|
warning: `uv add` is experimental and may change without warning.
|
||||||
Resolved 7 packages in [TIME]
|
Resolved 5 packages in [TIME]
|
||||||
Downloaded 2 packages in [TIME]
|
Downloaded 2 packages in [TIME]
|
||||||
Uninstalled 1 package in [TIME]
|
Uninstalled 1 package in [TIME]
|
||||||
Installed 2 packages in [TIME]
|
Installed 2 packages in [TIME]
|
||||||
|
@ -245,12 +219,6 @@ fn add_git() -> Result<()> {
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/c6/b3/fefbf7e78ab3b805dec67d698dc18dd505af7a18a8dd08868c9b4fa736b5/anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce", size = 142737 }
|
sdist = { url = "https://files.pythonhosted.org/packages/c6/b3/fefbf7e78ab3b805dec67d698dc18dd505af7a18a8dd08868c9b4fa736b5/anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce", size = 142737 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/68/fe/7ce1926952c8a403b35029e194555558514b365ad77d75125f521a2bec62/anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0", size = 80873 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/68/fe/7ce1926952c8a403b35029e194555558514b365ad77d75125f521a2bec62/anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0", size = 80873 }]
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
[[distribution.dependencies]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.6"
|
version = "3.6"
|
||||||
|
@ -261,19 +229,6 @@ fn add_git() -> Result<()> {
|
||||||
version = "1.3.1"
|
version = "1.3.1"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.8'"
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/8e/1c/beef724eaf5b01bb44b6338c8c3494eff7cab376fab4904cfbbc3585dc79/exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68", size = 26264 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/b8/9a/5028fd52db10e600f1c4674441b968cf2ea4959085bfb5b99fb1250e5f68/exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", size = 16210 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.6"
|
version = "3.6"
|
||||||
|
@ -304,13 +259,6 @@ fn add_git() -> Result<()> {
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }]
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/16/3a/0d26ce356c7465a19c9ea8814b960f8a36c3b0d07c323176620b7b483e44/typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb", size = 77558 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/f9/de/dc04a3ea60b22624b51c703a84bbe0184abcd1d0b9bc8074b5d6b7ab90bb/typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475", size = 33926 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "uv-public-pypackage"
|
name = "uv-public-pypackage"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
@ -358,7 +306,7 @@ fn update_registry() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv lock` is experimental and may change without warning.
|
warning: `uv lock` is experimental and may change without warning.
|
||||||
Resolved 10 packages in [TIME]
|
Resolved 4 packages in [TIME]
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
uv_snapshot!(context.filters(), context.sync(), @r###"
|
uv_snapshot!(context.filters(), context.sync(), @r###"
|
||||||
|
@ -383,7 +331,7 @@ fn update_registry() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv add` is experimental and may change without warning.
|
warning: `uv add` is experimental and may change without warning.
|
||||||
Resolved 6 packages in [TIME]
|
Resolved 4 packages in [TIME]
|
||||||
Downloaded 2 packages in [TIME]
|
Downloaded 2 packages in [TIME]
|
||||||
Uninstalled 2 packages in [TIME]
|
Uninstalled 2 packages in [TIME]
|
||||||
Installed 2 packages in [TIME]
|
Installed 2 packages in [TIME]
|
||||||
|
@ -428,12 +376,6 @@ fn update_registry() -> Result<()> {
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/db/4d/3970183622f0330d3c23d9b8a5f52e365e50381fd484d08e3285104333d3/anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6", size = 159642 }
|
sdist = { url = "https://files.pythonhosted.org/packages/db/4d/3970183622f0330d3c23d9b8a5f52e365e50381fd484d08e3285104333d3/anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6", size = 159642 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/14/fd/2f20c40b45e4fb4324834aea24bd4afdf1143390242c0b33774da0e2e34f/anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8", size = 85584 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/14/fd/2f20c40b45e4fb4324834aea24bd4afdf1143390242c0b33774da0e2e34f/anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8", size = 85584 }]
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
[[distribution.dependencies]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.6"
|
version = "3.6"
|
||||||
|
@ -444,19 +386,6 @@ fn update_registry() -> Result<()> {
|
||||||
version = "1.3.1"
|
version = "1.3.1"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/8e/1c/beef724eaf5b01bb44b6338c8c3494eff7cab376fab4904cfbbc3585dc79/exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68", size = 26264 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/b8/9a/5028fd52db10e600f1c4674441b968cf2ea4959085bfb5b99fb1250e5f68/exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", size = 16210 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.6"
|
version = "3.6"
|
||||||
|
@ -481,13 +410,6 @@ fn update_registry() -> Result<()> {
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }]
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/16/3a/0d26ce356c7465a19c9ea8814b960f8a36c3b0d07c323176620b7b483e44/typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb", size = 77558 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/f9/de/dc04a3ea60b22624b51c703a84bbe0184abcd1d0b9bc8074b5d6b7ab90bb/typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475", size = 33926 }]
|
|
||||||
"###
|
"###
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -527,7 +449,7 @@ fn remove_registry() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv lock` is experimental and may change without warning.
|
warning: `uv lock` is experimental and may change without warning.
|
||||||
Resolved 6 packages in [TIME]
|
Resolved 4 packages in [TIME]
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
uv_snapshot!(context.filters(), context.sync(), @r###"
|
uv_snapshot!(context.filters(), context.sync(), @r###"
|
||||||
|
@ -633,7 +555,7 @@ fn remove_all_registry() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv lock` is experimental and may change without warning.
|
warning: `uv lock` is experimental and may change without warning.
|
||||||
Resolved 10 packages in [TIME]
|
Resolved 4 packages in [TIME]
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
uv_snapshot!(context.filters(), context.sync(), @r###"
|
uv_snapshot!(context.filters(), context.sync(), @r###"
|
||||||
|
|
|
@ -31,7 +31,7 @@ fn lock_wheel_registry() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv lock` is experimental and may change without warning.
|
warning: `uv lock` is experimental and may change without warning.
|
||||||
Resolved 6 packages in [TIME]
|
Resolved 4 packages in [TIME]
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
let lock = fs_err::read_to_string(context.temp_dir.join("uv.lock"))?;
|
let lock = fs_err::read_to_string(context.temp_dir.join("uv.lock"))?;
|
||||||
|
@ -51,12 +51,6 @@ fn lock_wheel_registry() -> Result<()> {
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/c6/b3/fefbf7e78ab3b805dec67d698dc18dd505af7a18a8dd08868c9b4fa736b5/anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce", size = 142737 }
|
sdist = { url = "https://files.pythonhosted.org/packages/c6/b3/fefbf7e78ab3b805dec67d698dc18dd505af7a18a8dd08868c9b4fa736b5/anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce", size = 142737 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/68/fe/7ce1926952c8a403b35029e194555558514b365ad77d75125f521a2bec62/anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0", size = 80873 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/68/fe/7ce1926952c8a403b35029e194555558514b365ad77d75125f521a2bec62/anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0", size = 80873 }]
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
[[distribution.dependencies]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.6"
|
version = "3.6"
|
||||||
|
@ -67,19 +61,6 @@ fn lock_wheel_registry() -> Result<()> {
|
||||||
version = "1.3.1"
|
version = "1.3.1"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.8'"
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/8e/1c/beef724eaf5b01bb44b6338c8c3494eff7cab376fab4904cfbbc3585dc79/exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68", size = 26264 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/b8/9a/5028fd52db10e600f1c4674441b968cf2ea4959085bfb5b99fb1250e5f68/exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", size = 16210 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.6"
|
version = "3.6"
|
||||||
|
@ -104,13 +85,6 @@ fn lock_wheel_registry() -> Result<()> {
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }]
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/16/3a/0d26ce356c7465a19c9ea8814b960f8a36c3b0d07c323176620b7b483e44/typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb", size = 77558 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/f9/de/dc04a3ea60b22624b51c703a84bbe0184abcd1d0b9bc8074b5d6b7ab90bb/typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475", size = 33926 }]
|
|
||||||
"###
|
"###
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -303,7 +277,7 @@ fn lock_wheel_url() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv lock` is experimental and may change without warning.
|
warning: `uv lock` is experimental and may change without warning.
|
||||||
Resolved 6 packages in [TIME]
|
Resolved 4 packages in [TIME]
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
let lock = fs_err::read_to_string(context.temp_dir.join("uv.lock"))?;
|
let lock = fs_err::read_to_string(context.temp_dir.join("uv.lock"))?;
|
||||||
|
@ -322,12 +296,6 @@ fn lock_wheel_url() -> Result<()> {
|
||||||
source = "direct+https://files.pythonhosted.org/packages/14/fd/2f20c40b45e4fb4324834aea24bd4afdf1143390242c0b33774da0e2e34f/anyio-4.3.0-py3-none-any.whl"
|
source = "direct+https://files.pythonhosted.org/packages/14/fd/2f20c40b45e4fb4324834aea24bd4afdf1143390242c0b33774da0e2e34f/anyio-4.3.0-py3-none-any.whl"
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/14/fd/2f20c40b45e4fb4324834aea24bd4afdf1143390242c0b33774da0e2e34f/anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8" }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/14/fd/2f20c40b45e4fb4324834aea24bd4afdf1143390242c0b33774da0e2e34f/anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8" }]
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
[[distribution.dependencies]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.6"
|
version = "3.6"
|
||||||
|
@ -338,19 +306,6 @@ fn lock_wheel_url() -> Result<()> {
|
||||||
version = "1.3.1"
|
version = "1.3.1"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/8e/1c/beef724eaf5b01bb44b6338c8c3494eff7cab376fab4904cfbbc3585dc79/exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68", size = 26264 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/b8/9a/5028fd52db10e600f1c4674441b968cf2ea4959085bfb5b99fb1250e5f68/exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", size = 16210 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.6"
|
version = "3.6"
|
||||||
|
@ -375,13 +330,6 @@ fn lock_wheel_url() -> Result<()> {
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }]
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/16/3a/0d26ce356c7465a19c9ea8814b960f8a36c3b0d07c323176620b7b483e44/typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb", size = 77558 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/f9/de/dc04a3ea60b22624b51c703a84bbe0184abcd1d0b9bc8074b5d6b7ab90bb/typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475", size = 33926 }]
|
|
||||||
"###
|
"###
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -428,7 +376,7 @@ fn lock_sdist_url() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv lock` is experimental and may change without warning.
|
warning: `uv lock` is experimental and may change without warning.
|
||||||
Resolved 6 packages in [TIME]
|
Resolved 4 packages in [TIME]
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
let lock = fs_err::read_to_string(context.temp_dir.join("uv.lock"))?;
|
let lock = fs_err::read_to_string(context.temp_dir.join("uv.lock"))?;
|
||||||
|
@ -447,12 +395,6 @@ fn lock_sdist_url() -> Result<()> {
|
||||||
source = "direct+https://files.pythonhosted.org/packages/db/4d/3970183622f0330d3c23d9b8a5f52e365e50381fd484d08e3285104333d3/anyio-4.3.0.tar.gz"
|
source = "direct+https://files.pythonhosted.org/packages/db/4d/3970183622f0330d3c23d9b8a5f52e365e50381fd484d08e3285104333d3/anyio-4.3.0.tar.gz"
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/db/4d/3970183622f0330d3c23d9b8a5f52e365e50381fd484d08e3285104333d3/anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6" }
|
sdist = { url = "https://files.pythonhosted.org/packages/db/4d/3970183622f0330d3c23d9b8a5f52e365e50381fd484d08e3285104333d3/anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6" }
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
[[distribution.dependencies]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.6"
|
version = "3.6"
|
||||||
|
@ -463,19 +405,6 @@ fn lock_sdist_url() -> Result<()> {
|
||||||
version = "1.3.1"
|
version = "1.3.1"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/8e/1c/beef724eaf5b01bb44b6338c8c3494eff7cab376fab4904cfbbc3585dc79/exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68", size = 26264 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/b8/9a/5028fd52db10e600f1c4674441b968cf2ea4959085bfb5b99fb1250e5f68/exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", size = 16210 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.6"
|
version = "3.6"
|
||||||
|
@ -500,13 +429,6 @@ fn lock_sdist_url() -> Result<()> {
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }]
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/16/3a/0d26ce356c7465a19c9ea8814b960f8a36c3b0d07c323176620b7b483e44/typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb", size = 77558 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/f9/de/dc04a3ea60b22624b51c703a84bbe0184abcd1d0b9bc8074b5d6b7ab90bb/typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475", size = 33926 }]
|
|
||||||
"###
|
"###
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -556,7 +478,7 @@ fn lock_project_extra() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv lock` is experimental and may change without warning.
|
warning: `uv lock` is experimental and may change without warning.
|
||||||
Resolved 7 packages in [TIME]
|
Resolved 5 packages in [TIME]
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
let lock = fs_err::read_to_string(context.temp_dir.join("uv.lock"))?;
|
let lock = fs_err::read_to_string(context.temp_dir.join("uv.lock"))?;
|
||||||
|
@ -576,12 +498,6 @@ fn lock_project_extra() -> Result<()> {
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/c6/b3/fefbf7e78ab3b805dec67d698dc18dd505af7a18a8dd08868c9b4fa736b5/anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce", size = 142737 }
|
sdist = { url = "https://files.pythonhosted.org/packages/c6/b3/fefbf7e78ab3b805dec67d698dc18dd505af7a18a8dd08868c9b4fa736b5/anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce", size = 142737 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/68/fe/7ce1926952c8a403b35029e194555558514b365ad77d75125f521a2bec62/anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0", size = 80873 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/68/fe/7ce1926952c8a403b35029e194555558514b365ad77d75125f521a2bec62/anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0", size = 80873 }]
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
[[distribution.dependencies]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.6"
|
version = "3.6"
|
||||||
|
@ -592,19 +508,6 @@ fn lock_project_extra() -> Result<()> {
|
||||||
version = "1.3.1"
|
version = "1.3.1"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.8'"
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/8e/1c/beef724eaf5b01bb44b6338c8c3494eff7cab376fab4904cfbbc3585dc79/exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68", size = 26264 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/b8/9a/5028fd52db10e600f1c4674441b968cf2ea4959085bfb5b99fb1250e5f68/exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", size = 16210 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "3.6"
|
version = "3.6"
|
||||||
|
@ -643,13 +546,6 @@ fn lock_project_extra() -> Result<()> {
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }]
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/16/3a/0d26ce356c7465a19c9ea8814b960f8a36c3b0d07c323176620b7b483e44/typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb", size = 77558 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/f9/de/dc04a3ea60b22624b51c703a84bbe0184abcd1d0b9bc8074b5d6b7ab90bb/typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475", size = 33926 }]
|
|
||||||
"###
|
"###
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -709,7 +605,7 @@ fn lock_dependency_extra() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv lock` is experimental and may change without warning.
|
warning: `uv lock` is experimental and may change without warning.
|
||||||
Resolved 13 packages in [TIME]
|
Resolved 10 packages in [TIME]
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
let lock = fs_err::read_to_string(context.temp_dir.join("uv.lock"))?;
|
let lock = fs_err::read_to_string(context.temp_dir.join("uv.lock"))?;
|
||||||
|
@ -742,12 +638,6 @@ fn lock_dependency_extra() -> Result<()> {
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
marker = "platform_system == 'Windows'"
|
marker = "platform_system == 'Windows'"
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "importlib-metadata"
|
|
||||||
version = "7.1.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.8'"
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "colorama"
|
name = "colorama"
|
||||||
version = "0.4.6"
|
version = "0.4.6"
|
||||||
|
@ -772,12 +662,6 @@ fn lock_dependency_extra() -> Result<()> {
|
||||||
version = "8.1.7"
|
version = "8.1.7"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "importlib-metadata"
|
|
||||||
version = "7.1.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.10'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
[[distribution.dependencies]]
|
||||||
name = "itsdangerous"
|
name = "itsdangerous"
|
||||||
version = "2.1.2"
|
version = "2.1.2"
|
||||||
|
@ -800,24 +684,6 @@ fn lock_dependency_extra() -> Result<()> {
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "importlib-metadata"
|
|
||||||
version = "7.1.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a0/fc/c4e6078d21fc4fa56300a241b87eae76766aa380a23fc450fc85bb7bf547/importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2", size = 52120 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/2d/0a/679461c511447ffaf176567d5c496d1de27cbe34a87df6677d7171b2fbd4/importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570", size = 24409 }]
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.8'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "zipp"
|
|
||||||
version = "3.18.1"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "itsdangerous"
|
name = "itsdangerous"
|
||||||
version = "2.1.2"
|
version = "2.1.2"
|
||||||
|
@ -928,13 +794,6 @@ fn lock_dependency_extra() -> Result<()> {
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/bc/57/e84d88dfe0aec03b7a2d4327012c1627ab5f03652216c63d49846d7a6c58/python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca", size = 39115 }
|
sdist = { url = "https://files.pythonhosted.org/packages/bc/57/e84d88dfe0aec03b7a2d4327012c1627ab5f03652216c63d49846d7a6c58/python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca", size = 39115 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a", size = 19863 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a", size = 19863 }]
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/16/3a/0d26ce356c7465a19c9ea8814b960f8a36c3b0d07c323176620b7b483e44/typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb", size = 77558 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/f9/de/dc04a3ea60b22624b51c703a84bbe0184abcd1d0b9bc8074b5d6b7ab90bb/typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475", size = 33926 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "werkzeug"
|
name = "werkzeug"
|
||||||
version = "3.0.1"
|
version = "3.0.1"
|
||||||
|
@ -946,13 +805,6 @@ fn lock_dependency_extra() -> Result<()> {
|
||||||
name = "markupsafe"
|
name = "markupsafe"
|
||||||
version = "2.1.5"
|
version = "2.1.5"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "zipp"
|
|
||||||
version = "3.18.1"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/3e/ef/65da662da6f9991e87f058bc90b91a935ae655a16ae5514660d6460d1298/zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715", size = 21220 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/c2/0a/ba9d0ee9536d3ef73a3448e931776e658b36f128d344e175bc32b092a8bf/zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b", size = 8247 }]
|
|
||||||
"###
|
"###
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -1941,7 +1793,7 @@ fn lock_requires_python() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv lock` is experimental and may change without warning.
|
warning: `uv lock` is experimental and may change without warning.
|
||||||
Resolved 9 packages in [TIME]
|
Resolved 5 packages in [TIME]
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
let lock = fs_err::read_to_string(&lockfile)?;
|
let lock = fs_err::read_to_string(&lockfile)?;
|
||||||
|
@ -1961,12 +1813,6 @@ fn lock_requires_python() -> Result<()> {
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/e3/fc/f800d51204003fa8ae392c4e8278f256206e7a919b708eef054f5f4b650d/attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30", size = 780820 }
|
sdist = { url = "https://files.pythonhosted.org/packages/e3/fc/f800d51204003fa8ae392c4e8278f256206e7a919b708eef054f5f4b650d/attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30", size = 780820 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/e0/44/827b2a91a5816512fcaf3cc4ebc465ccd5d598c45cefa6703fcf4a79018f/attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1", size = 60752 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/e0/44/827b2a91a5816512fcaf3cc4ebc465ccd5d598c45cefa6703fcf4a79018f/attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1", size = 60752 }]
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "importlib-metadata"
|
|
||||||
version = "7.1.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.8'"
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "cattrs"
|
name = "cattrs"
|
||||||
version = "23.2.3"
|
version = "23.2.3"
|
||||||
|
@ -1979,43 +1825,6 @@ fn lock_requires_python() -> Result<()> {
|
||||||
version = "23.2.0"
|
version = "23.2.0"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/8e/1c/beef724eaf5b01bb44b6338c8c3494eff7cab376fab4904cfbbc3585dc79/exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68", size = 26264 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/b8/9a/5028fd52db10e600f1c4674441b968cf2ea4959085bfb5b99fb1250e5f68/exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", size = 16210 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "importlib-metadata"
|
|
||||||
version = "7.1.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a0/fc/c4e6078d21fc4fa56300a241b87eae76766aa380a23fc450fc85bb7bf547/importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2", size = 52120 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/2d/0a/679461c511447ffaf176567d5c496d1de27cbe34a87df6677d7171b2fbd4/importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570", size = 24409 }]
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.8'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "zipp"
|
|
||||||
version = "3.18.1"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "lsprotocol"
|
name = "lsprotocol"
|
||||||
version = "2023.0.1"
|
version = "2023.0.1"
|
||||||
|
@ -2060,20 +1869,6 @@ fn lock_requires_python() -> Result<()> {
|
||||||
name = "lsprotocol"
|
name = "lsprotocol"
|
||||||
version = "2023.0.1"
|
version = "2023.0.1"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/16/3a/0d26ce356c7465a19c9ea8814b960f8a36c3b0d07c323176620b7b483e44/typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb", size = 77558 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/f9/de/dc04a3ea60b22624b51c703a84bbe0184abcd1d0b9bc8074b5d6b7ab90bb/typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475", size = 33926 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "zipp"
|
|
||||||
version = "3.18.1"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/3e/ef/65da662da6f9991e87f058bc90b91a935ae655a16ae5514660d6460d1298/zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715", size = 21220 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/c2/0a/ba9d0ee9536d3ef73a3448e931776e658b36f128d344e175bc32b092a8bf/zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b", size = 8247 }]
|
|
||||||
"###
|
"###
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -2131,7 +1926,7 @@ fn lock_requires_python_star() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv lock` is experimental and may change without warning.
|
warning: `uv lock` is experimental and may change without warning.
|
||||||
Resolved 10 packages in [TIME]
|
Resolved 6 packages in [TIME]
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
let lock = fs_err::read_to_string(lockfile)?;
|
let lock = fs_err::read_to_string(lockfile)?;
|
||||||
|
@ -2151,12 +1946,6 @@ fn lock_requires_python_star() -> Result<()> {
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/e3/fc/f800d51204003fa8ae392c4e8278f256206e7a919b708eef054f5f4b650d/attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30", size = 780820 }
|
sdist = { url = "https://files.pythonhosted.org/packages/e3/fc/f800d51204003fa8ae392c4e8278f256206e7a919b708eef054f5f4b650d/attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30", size = 780820 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/e0/44/827b2a91a5816512fcaf3cc4ebc465ccd5d598c45cefa6703fcf4a79018f/attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1", size = 60752 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/e0/44/827b2a91a5816512fcaf3cc4ebc465ccd5d598c45cefa6703fcf4a79018f/attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1", size = 60752 }]
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "importlib-metadata"
|
|
||||||
version = "7.1.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.8'"
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "cattrs"
|
name = "cattrs"
|
||||||
version = "23.2.3"
|
version = "23.2.3"
|
||||||
|
@ -2169,43 +1958,6 @@ fn lock_requires_python_star() -> Result<()> {
|
||||||
version = "23.2.0"
|
version = "23.2.0"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/8e/1c/beef724eaf5b01bb44b6338c8c3494eff7cab376fab4904cfbbc3585dc79/exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68", size = 26264 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/b8/9a/5028fd52db10e600f1c4674441b968cf2ea4959085bfb5b99fb1250e5f68/exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", size = 16210 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "importlib-metadata"
|
|
||||||
version = "7.1.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a0/fc/c4e6078d21fc4fa56300a241b87eae76766aa380a23fc450fc85bb7bf547/importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2", size = 52120 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/2d/0a/679461c511447ffaf176567d5c496d1de27cbe34a87df6677d7171b2fbd4/importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570", size = 24409 }]
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.8'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "zipp"
|
|
||||||
version = "3.18.1"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "linehaul"
|
name = "linehaul"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
|
@ -2252,20 +2004,6 @@ fn lock_requires_python_star() -> Result<()> {
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/46/3a/31fd28064d016a2182584d579e033ec95b809d8e220e74c4af6f0f2e8842/pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad", size = 889571 }
|
sdist = { url = "https://files.pythonhosted.org/packages/46/3a/31fd28064d016a2182584d579e033ec95b809d8e220e74c4af6f0f2e8842/pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad", size = 889571 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/9d/ea/6d76df31432a0e6fdf81681a895f009a4bb47b3c39036db3e1b528191d52/pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742", size = 103245 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/9d/ea/6d76df31432a0e6fdf81681a895f009a4bb47b3c39036db3e1b528191d52/pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742", size = 103245 }]
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/16/3a/0d26ce356c7465a19c9ea8814b960f8a36c3b0d07c323176620b7b483e44/typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb", size = 77558 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/f9/de/dc04a3ea60b22624b51c703a84bbe0184abcd1d0b9bc8074b5d6b7ab90bb/typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475", size = 33926 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "zipp"
|
|
||||||
version = "3.18.1"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/3e/ef/65da662da6f9991e87f058bc90b91a935ae655a16ae5514660d6460d1298/zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715", size = 21220 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/c2/0a/ba9d0ee9536d3ef73a3448e931776e658b36f128d344e175bc32b092a8bf/zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b", size = 8247 }]
|
|
||||||
"###
|
"###
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -2300,7 +2038,7 @@ fn lock_requires_python_pre() -> Result<()> {
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: `uv lock` is experimental and may change without warning.
|
warning: `uv lock` is experimental and may change without warning.
|
||||||
Resolved 10 packages in [TIME]
|
Resolved 6 packages in [TIME]
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
let lock = fs_err::read_to_string(lockfile)?;
|
let lock = fs_err::read_to_string(lockfile)?;
|
||||||
|
@ -2320,12 +2058,6 @@ fn lock_requires_python_pre() -> Result<()> {
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/e3/fc/f800d51204003fa8ae392c4e8278f256206e7a919b708eef054f5f4b650d/attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30", size = 780820 }
|
sdist = { url = "https://files.pythonhosted.org/packages/e3/fc/f800d51204003fa8ae392c4e8278f256206e7a919b708eef054f5f4b650d/attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30", size = 780820 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/e0/44/827b2a91a5816512fcaf3cc4ebc465ccd5d598c45cefa6703fcf4a79018f/attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1", size = 60752 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/e0/44/827b2a91a5816512fcaf3cc4ebc465ccd5d598c45cefa6703fcf4a79018f/attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1", size = 60752 }]
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "importlib-metadata"
|
|
||||||
version = "7.1.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.8'"
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "cattrs"
|
name = "cattrs"
|
||||||
version = "23.2.3"
|
version = "23.2.3"
|
||||||
|
@ -2338,43 +2070,6 @@ fn lock_requires_python_pre() -> Result<()> {
|
||||||
version = "23.2.0"
|
version = "23.2.0"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.11'"
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "exceptiongroup"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/8e/1c/beef724eaf5b01bb44b6338c8c3494eff7cab376fab4904cfbbc3585dc79/exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68", size = 26264 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/b8/9a/5028fd52db10e600f1c4674441b968cf2ea4959085bfb5b99fb1250e5f68/exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", size = 16210 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "importlib-metadata"
|
|
||||||
version = "7.1.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/a0/fc/c4e6078d21fc4fa56300a241b87eae76766aa380a23fc450fc85bb7bf547/importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2", size = 52120 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/2d/0a/679461c511447ffaf176567d5c496d1de27cbe34a87df6677d7171b2fbd4/importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570", size = 24409 }]
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
marker = "python_version < '3.8'"
|
|
||||||
|
|
||||||
[[distribution.dependencies]]
|
|
||||||
name = "zipp"
|
|
||||||
version = "3.18.1"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
|
|
||||||
[[distribution]]
|
[[distribution]]
|
||||||
name = "linehaul"
|
name = "linehaul"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
|
@ -2421,20 +2116,6 @@ fn lock_requires_python_pre() -> Result<()> {
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/46/3a/31fd28064d016a2182584d579e033ec95b809d8e220e74c4af6f0f2e8842/pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad", size = 889571 }
|
sdist = { url = "https://files.pythonhosted.org/packages/46/3a/31fd28064d016a2182584d579e033ec95b809d8e220e74c4af6f0f2e8842/pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad", size = 889571 }
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/9d/ea/6d76df31432a0e6fdf81681a895f009a4bb47b3c39036db3e1b528191d52/pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742", size = 103245 }]
|
wheels = [{ url = "https://files.pythonhosted.org/packages/9d/ea/6d76df31432a0e6fdf81681a895f009a4bb47b3c39036db3e1b528191d52/pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742", size = 103245 }]
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "typing-extensions"
|
|
||||||
version = "4.10.0"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/16/3a/0d26ce356c7465a19c9ea8814b960f8a36c3b0d07c323176620b7b483e44/typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb", size = 77558 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/f9/de/dc04a3ea60b22624b51c703a84bbe0184abcd1d0b9bc8074b5d6b7ab90bb/typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475", size = 33926 }]
|
|
||||||
|
|
||||||
[[distribution]]
|
|
||||||
name = "zipp"
|
|
||||||
version = "3.18.1"
|
|
||||||
source = "registry+https://pypi.org/simple"
|
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/3e/ef/65da662da6f9991e87f058bc90b91a935ae655a16ae5514660d6460d1298/zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715", size = 21220 }
|
|
||||||
wheels = [{ url = "https://files.pythonhosted.org/packages/c2/0a/ba9d0ee9536d3ef73a3448e931776e658b36f128d344e175bc32b092a8bf/zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b", size = 8247 }]
|
|
||||||
"###
|
"###
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -2720,7 +2401,7 @@ fn lock_multiple_markers() -> Result<()> {
|
||||||
name = "iniconfig"
|
name = "iniconfig"
|
||||||
version = "2.0.0"
|
version = "2.0.0"
|
||||||
source = "registry+https://pypi.org/simple"
|
source = "registry+https://pypi.org/simple"
|
||||||
marker = "python_version < '3.12' or implementation_name == 'cpython'"
|
marker = "implementation_name == 'cpython'"
|
||||||
"###
|
"###
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
|
@ -54,7 +54,7 @@ fn run_with_python_version() -> Result<()> {
|
||||||
3.7.0
|
3.7.0
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
Resolved 10 packages in [TIME]
|
Resolved 5 packages in [TIME]
|
||||||
Downloaded 4 packages in [TIME]
|
Downloaded 4 packages in [TIME]
|
||||||
Installed 4 packages in [TIME]
|
Installed 4 packages in [TIME]
|
||||||
+ anyio==3.7.0
|
+ anyio==3.7.0
|
||||||
|
@ -81,7 +81,7 @@ fn run_with_python_version() -> Result<()> {
|
||||||
3.7.0
|
3.7.0
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
Resolved 10 packages in [TIME]
|
Resolved 5 packages in [TIME]
|
||||||
Audited 4 packages in [TIME]
|
Audited 4 packages in [TIME]
|
||||||
"###);
|
"###);
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ fn run_with_python_version() -> Result<()> {
|
||||||
Removing virtual environment at: [VENV]/
|
Removing virtual environment at: [VENV]/
|
||||||
Using Python 3.11.[X] interpreter at: [PYTHON]
|
Using Python 3.11.[X] interpreter at: [PYTHON]
|
||||||
Creating virtualenv at: [VENV]/
|
Creating virtualenv at: [VENV]/
|
||||||
Resolved 10 packages in [TIME]
|
Resolved 5 packages in [TIME]
|
||||||
Downloaded 4 packages in [TIME]
|
Downloaded 4 packages in [TIME]
|
||||||
Installed 4 packages in [TIME]
|
Installed 4 packages in [TIME]
|
||||||
+ anyio==3.6.0
|
+ anyio==3.6.0
|
||||||
|
|
|
@ -420,7 +420,7 @@ fn test_uv_run_with_package_virtual_workspace() -> Result<()> {
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
Using Python 3.12.[X] interpreter at: [PYTHON]
|
Using Python 3.12.[X] interpreter at: [PYTHON]
|
||||||
Creating virtualenv at: [VENV]/
|
Creating virtualenv at: [VENV]/
|
||||||
Resolved 10 packages in [TIME]
|
Resolved 8 packages in [TIME]
|
||||||
Downloaded 5 packages in [TIME]
|
Downloaded 5 packages in [TIME]
|
||||||
Installed 5 packages in [TIME]
|
Installed 5 packages in [TIME]
|
||||||
+ anyio==4.3.0
|
+ anyio==4.3.0
|
||||||
|
@ -442,7 +442,7 @@ fn test_uv_run_with_package_virtual_workspace() -> Result<()> {
|
||||||
Success
|
Success
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
Resolved 10 packages in [TIME]
|
Resolved 8 packages in [TIME]
|
||||||
Downloaded 2 packages in [TIME]
|
Downloaded 2 packages in [TIME]
|
||||||
Installed 2 packages in [TIME]
|
Installed 2 packages in [TIME]
|
||||||
+ albatross==0.1.0 (from file://[TEMP_DIR]/albatross-virtual-workspace/packages/albatross)
|
+ albatross==0.1.0 (from file://[TEMP_DIR]/albatross-virtual-workspace/packages/albatross)
|
||||||
|
@ -480,7 +480,7 @@ fn test_uv_run_with_package_root_workspace() -> Result<()> {
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
Using Python 3.12.[X] interpreter at: [PYTHON]
|
Using Python 3.12.[X] interpreter at: [PYTHON]
|
||||||
Creating virtualenv at: [VENV]/
|
Creating virtualenv at: [VENV]/
|
||||||
Resolved 10 packages in [TIME]
|
Resolved 8 packages in [TIME]
|
||||||
Downloaded 5 packages in [TIME]
|
Downloaded 5 packages in [TIME]
|
||||||
Installed 5 packages in [TIME]
|
Installed 5 packages in [TIME]
|
||||||
+ anyio==4.3.0
|
+ anyio==4.3.0
|
||||||
|
@ -502,7 +502,7 @@ fn test_uv_run_with_package_root_workspace() -> Result<()> {
|
||||||
Success
|
Success
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
Resolved 10 packages in [TIME]
|
Resolved 8 packages in [TIME]
|
||||||
Downloaded 2 packages in [TIME]
|
Downloaded 2 packages in [TIME]
|
||||||
Installed 2 packages in [TIME]
|
Installed 2 packages in [TIME]
|
||||||
+ albatross==0.1.0 (from file://[TEMP_DIR]/albatross-root-workspace)
|
+ albatross==0.1.0 (from file://[TEMP_DIR]/albatross-root-workspace)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue