diff --git a/crates/pep440-rs/src/version_specifier.rs b/crates/pep440-rs/src/version_specifier.rs index 973d188ee..8c9941d69 100644 --- a/crates/pep440-rs/src/version_specifier.rs +++ b/crates/pep440-rs/src/version_specifier.rs @@ -37,7 +37,18 @@ use crate::{ /// // VersionSpecifiers derefs into a list of specifiers /// assert_eq!(version_specifiers.iter().position(|specifier| *specifier.operator() == Operator::LessThan), Some(1)); /// ``` -#[derive(Eq, PartialEq, Debug, Clone, Hash, rkyv::Archive, rkyv::Deserialize, rkyv::Serialize)] +#[derive( + Eq, + PartialEq, + Ord, + PartialOrd, + Debug, + Clone, + Hash, + rkyv::Archive, + rkyv::Deserialize, + rkyv::Serialize, +)] #[archive(check_bytes)] #[archive_attr(derive(Debug))] #[cfg_attr(feature = "pyo3", pyclass(sequence))] diff --git a/crates/pypi-types/src/requirement.rs b/crates/pypi-types/src/requirement.rs index 677bec10c..77b4d4c58 100644 --- a/crates/pypi-types/src/requirement.rs +++ b/crates/pypi-types/src/requirement.rs @@ -35,7 +35,9 @@ pub enum RequirementError { /// /// The main change is using [`RequirementSource`] to represent all supported package sources over /// [`VersionOrUrl`], which collapses all URL sources into a single stringly type. -#[derive(Hash, Debug, Clone, Eq, PartialEq, serde::Serialize, serde::Deserialize)] +#[derive( + Hash, Debug, Clone, Eq, PartialEq, Ord, PartialOrd, serde::Serialize, serde::Deserialize, +)] pub struct Requirement { pub name: PackageName, #[serde(skip_serializing_if = "Vec::is_empty", default)] @@ -294,7 +296,9 @@ impl Display for Requirement { /// We store both the parsed fields (such as the plain url and the subdirectory) and the joined /// PEP 508 style url (e.g. `file:///#subdirectory=`) since we need both in /// different locations. -#[derive(Hash, Debug, Clone, Eq, PartialEq, serde::Serialize, serde::Deserialize)] +#[derive( + Hash, Debug, Clone, Eq, PartialEq, Ord, PartialOrd, serde::Serialize, serde::Deserialize, +)] #[serde(try_from = "RequirementSourceWire", into = "RequirementSourceWire")] pub enum RequirementSource { /// The requirement has a version specifier, such as `foo >1,<2`. diff --git a/crates/uv-resolver/src/lock.rs b/crates/uv-resolver/src/lock.rs index 64d7b86d1..1cba8640c 100644 --- a/crates/uv-resolver/src/lock.rs +++ b/crates/uv-resolver/src/lock.rs @@ -680,9 +680,9 @@ impl Lock { // Validate that the lockfile was generated with the same root members. { - let expected = members; + let expected = members.iter().cloned().collect::>(); let actual = &self.manifest.members; - if expected != actual { + if expected != *actual { debug!( "Mismatched members:\n expected: {:?}\n found: {:?}", expected, actual @@ -693,12 +693,12 @@ impl Lock { // Validate that the lockfile was generated with the same constraints. { - let expected: Vec<_> = constraints + let expected: BTreeSet<_> = constraints .iter() .cloned() .map(|requirement| normalize_requirement(requirement, workspace)) .collect(); - let actual: Vec<_> = self + let actual: BTreeSet<_> = self .manifest .constraints .iter() @@ -716,12 +716,12 @@ impl Lock { // Validate that the lockfile was generated with the same overrides. { - let expected: Vec<_> = overrides + let expected: BTreeSet<_> = overrides .iter() .cloned() .map(|requirement| normalize_requirement(requirement, workspace)) .collect(); - let actual: Vec<_> = self + let actual: BTreeSet<_> = self .manifest .overrides .iter() @@ -772,13 +772,13 @@ impl Lock { // Validate the `requires-dist` metadata. { - let expected: Vec<_> = archive + let expected: BTreeSet<_> = archive .metadata .requires_dist .into_iter() .map(|requirement| normalize_requirement(requirement, workspace)) .collect(); - let actual: Vec<_> = package + let actual: BTreeSet<_> = package .metadata .requires_dist .iter() @@ -797,7 +797,7 @@ impl Lock { // Validate the `dev-dependencies` metadata. { - let expected: BTreeMap> = archive + let expected: BTreeMap> = archive .metadata .dev_dependencies .into_iter() @@ -811,7 +811,7 @@ impl Lock { ) }) .collect(); - let actual: BTreeMap> = package + let actual: BTreeMap> = package .metadata .requires_dev .iter() @@ -888,25 +888,25 @@ struct ResolverOptions { pub struct ResolverManifest { /// The workspace members included in the lockfile. #[serde(default)] - members: Vec, + members: BTreeSet, /// The constraints provided to the resolver. #[serde(default)] - constraints: Vec, + constraints: BTreeSet, /// The overrides provided to the resolver. #[serde(default)] - overrides: Vec, + overrides: BTreeSet, } impl ResolverManifest { pub fn new( - members: Vec, - constraints: Vec, - overrides: Vec, + members: impl IntoIterator, + constraints: impl IntoIterator, + overrides: impl IntoIterator, ) -> Self { Self { - members, - constraints, - overrides, + members: members.into_iter().collect(), + constraints: constraints.into_iter().collect(), + overrides: overrides.into_iter().collect(), } } } @@ -1010,14 +1010,24 @@ impl Package { let sdist = SourceDist::from_annotated_dist(&id, annotated_dist)?; let wheels = Wheel::from_annotated_dist(annotated_dist)?; let requires_dist = if id.source.is_immutable() { - vec![] + BTreeSet::default() } else { - annotated_dist.metadata.requires_dist.clone() + annotated_dist + .metadata + .requires_dist + .iter() + .cloned() + .collect() }; let requires_dev = if id.source.is_immutable() { BTreeMap::default() } else { - annotated_dist.metadata.dev_dependencies.clone() + annotated_dist + .metadata + .dev_dependencies + .iter() + .map(|(k, v)| (k.clone(), v.iter().cloned().collect())) + .collect() }; Ok(Package { id, @@ -1029,7 +1039,6 @@ impl Package { dev_dependencies: BTreeMap::default(), metadata: PackageMetadata { requires_dist, - requires_dev, }, }) @@ -1511,9 +1520,9 @@ struct PackageWire { #[serde(rename_all = "kebab-case")] struct PackageMetadata { #[serde(default)] - requires_dist: Vec, + requires_dist: BTreeSet, #[serde(default)] - requires_dev: BTreeMap>, + requires_dev: BTreeMap>, } impl PackageWire { diff --git a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__hash_optional_missing.snap b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__hash_optional_missing.snap index 5561686e3..6ddf93bf7 100644 --- a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__hash_optional_missing.snap +++ b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__hash_optional_missing.snap @@ -58,7 +58,7 @@ Ok( optional_dependencies: {}, dev_dependencies: {}, metadata: PackageMetadata { - requires_dist: [], + requires_dist: {}, requires_dev: {}, }, }, @@ -77,9 +77,9 @@ Ok( }: 0, }, manifest: ResolverManifest { - members: [], - constraints: [], - overrides: [], + members: {}, + constraints: {}, + overrides: {}, }, }, ) diff --git a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__hash_optional_present.snap b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__hash_optional_present.snap index 16709bb8f..e02dae555 100644 --- a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__hash_optional_present.snap +++ b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__hash_optional_present.snap @@ -65,7 +65,7 @@ Ok( optional_dependencies: {}, dev_dependencies: {}, metadata: PackageMetadata { - requires_dist: [], + requires_dist: {}, requires_dev: {}, }, }, @@ -84,9 +84,9 @@ Ok( }: 0, }, manifest: ResolverManifest { - members: [], - constraints: [], - overrides: [], + members: {}, + constraints: {}, + overrides: {}, }, }, ) diff --git a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__hash_required_present.snap b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__hash_required_present.snap index db3920c09..22cf4126c 100644 --- a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__hash_required_present.snap +++ b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__hash_required_present.snap @@ -63,7 +63,7 @@ Ok( optional_dependencies: {}, dev_dependencies: {}, metadata: PackageMetadata { - requires_dist: [], + requires_dist: {}, requires_dev: {}, }, }, @@ -80,9 +80,9 @@ Ok( }: 0, }, manifest: ResolverManifest { - members: [], - constraints: [], - overrides: [], + members: {}, + constraints: {}, + overrides: {}, }, }, ) diff --git a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__missing_dependency_source_unambiguous.snap b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__missing_dependency_source_unambiguous.snap index 4c2909fd4..c70f7f8d9 100644 --- a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__missing_dependency_source_unambiguous.snap +++ b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__missing_dependency_source_unambiguous.snap @@ -51,7 +51,7 @@ Ok( optional_dependencies: {}, dev_dependencies: {}, metadata: PackageMetadata { - requires_dist: [], + requires_dist: {}, requires_dev: {}, }, }, @@ -109,7 +109,7 @@ Ok( optional_dependencies: {}, dev_dependencies: {}, metadata: PackageMetadata { - requires_dist: [], + requires_dist: {}, requires_dev: {}, }, }, @@ -139,9 +139,9 @@ Ok( }: 1, }, manifest: ResolverManifest { - members: [], - constraints: [], - overrides: [], + members: {}, + constraints: {}, + overrides: {}, }, }, ) diff --git a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__missing_dependency_source_version_unambiguous.snap b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__missing_dependency_source_version_unambiguous.snap index 4c2909fd4..c70f7f8d9 100644 --- a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__missing_dependency_source_version_unambiguous.snap +++ b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__missing_dependency_source_version_unambiguous.snap @@ -51,7 +51,7 @@ Ok( optional_dependencies: {}, dev_dependencies: {}, metadata: PackageMetadata { - requires_dist: [], + requires_dist: {}, requires_dev: {}, }, }, @@ -109,7 +109,7 @@ Ok( optional_dependencies: {}, dev_dependencies: {}, metadata: PackageMetadata { - requires_dist: [], + requires_dist: {}, requires_dev: {}, }, }, @@ -139,9 +139,9 @@ Ok( }: 1, }, manifest: ResolverManifest { - members: [], - constraints: [], - overrides: [], + members: {}, + constraints: {}, + overrides: {}, }, }, ) diff --git a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__missing_dependency_version_unambiguous.snap b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__missing_dependency_version_unambiguous.snap index 4c2909fd4..c70f7f8d9 100644 --- a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__missing_dependency_version_unambiguous.snap +++ b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__missing_dependency_version_unambiguous.snap @@ -51,7 +51,7 @@ Ok( optional_dependencies: {}, dev_dependencies: {}, metadata: PackageMetadata { - requires_dist: [], + requires_dist: {}, requires_dev: {}, }, }, @@ -109,7 +109,7 @@ Ok( optional_dependencies: {}, dev_dependencies: {}, metadata: PackageMetadata { - requires_dist: [], + requires_dist: {}, requires_dev: {}, }, }, @@ -139,9 +139,9 @@ Ok( }: 1, }, manifest: ResolverManifest { - members: [], - constraints: [], - overrides: [], + members: {}, + constraints: {}, + overrides: {}, }, }, ) diff --git a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_direct_has_subdir.snap b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_direct_has_subdir.snap index 5d44e58ae..3ba47df9f 100644 --- a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_direct_has_subdir.snap +++ b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_direct_has_subdir.snap @@ -37,7 +37,7 @@ Ok( optional_dependencies: {}, dev_dependencies: {}, metadata: PackageMetadata { - requires_dist: [], + requires_dist: {}, requires_dev: {}, }, }, @@ -61,9 +61,9 @@ Ok( }: 0, }, manifest: ResolverManifest { - members: [], - constraints: [], - overrides: [], + members: {}, + constraints: {}, + overrides: {}, }, }, ) diff --git a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_direct_no_subdir.snap b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_direct_no_subdir.snap index e90c14db0..01c5cfd82 100644 --- a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_direct_no_subdir.snap +++ b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_direct_no_subdir.snap @@ -35,7 +35,7 @@ Ok( optional_dependencies: {}, dev_dependencies: {}, metadata: PackageMetadata { - requires_dist: [], + requires_dist: {}, requires_dev: {}, }, }, @@ -57,9 +57,9 @@ Ok( }: 0, }, manifest: ResolverManifest { - members: [], - constraints: [], - overrides: [], + members: {}, + constraints: {}, + overrides: {}, }, }, ) diff --git a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_directory.snap b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_directory.snap index 82791c609..57c5a9687 100644 --- a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_directory.snap +++ b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_directory.snap @@ -30,7 +30,7 @@ Ok( optional_dependencies: {}, dev_dependencies: {}, metadata: PackageMetadata { - requires_dist: [], + requires_dist: {}, requires_dev: {}, }, }, @@ -47,9 +47,9 @@ Ok( }: 0, }, manifest: ResolverManifest { - members: [], - constraints: [], - overrides: [], + members: {}, + constraints: {}, + overrides: {}, }, }, ) diff --git a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_editable.snap b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_editable.snap index f3f4b8fdb..05371b457 100644 --- a/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_editable.snap +++ b/crates/uv-resolver/src/snapshots/uv_resolver__lock__tests__source_editable.snap @@ -30,7 +30,7 @@ Ok( optional_dependencies: {}, dev_dependencies: {}, metadata: PackageMetadata { - requires_dist: [], + requires_dist: {}, requires_dev: {}, }, }, @@ -47,9 +47,9 @@ Ok( }: 0, }, manifest: ResolverManifest { - members: [], - constraints: [], - overrides: [], + members: {}, + constraints: {}, + overrides: {}, }, }, ) diff --git a/crates/uv/tests/branching_urls.rs b/crates/uv/tests/branching_urls.rs index a6e55631b..8cead7f4b 100644 --- a/crates/uv/tests/branching_urls.rs +++ b/crates/uv/tests/branching_urls.rs @@ -228,8 +228,8 @@ fn root_package_splits_transitive_too() -> Result<()> { [package.metadata] requires-dist = [ - { name = "anyio", marker = "python_version >= '3.12'", specifier = "==4.3.0" }, { name = "anyio", marker = "python_version < '3.12'", specifier = "==4.2.0" }, + { name = "anyio", marker = "python_version >= '3.12'", specifier = "==4.3.0" }, { name = "b", directory = "b" }, ] @@ -424,8 +424,8 @@ fn root_package_splits_other_dependencies_too() -> Result<()> { [package.metadata] requires-dist = [ - { name = "anyio", marker = "python_version >= '3.12'", specifier = "==4.3.0" }, { name = "anyio", marker = "python_version < '3.12'", specifier = "==4.2.0" }, + { name = "anyio", marker = "python_version >= '3.12'", specifier = "==4.3.0" }, { name = "b1", marker = "python_version < '3.12'", directory = "b1" }, { name = "b2", marker = "python_version >= '3.12'", directory = "b2" }, ] @@ -791,8 +791,8 @@ fn dont_pre_visit_url_packages() -> Result<()> { [package.metadata] requires-dist = [ - { name = "c", specifier = "==0.1.0" }, { name = "b", directory = "b" }, + { name = "c", specifier = "==0.1.0" }, ] [[package]] diff --git a/crates/uv/tests/edit.rs b/crates/uv/tests/edit.rs index 1ae3120ee..ee9c33a8b 100644 --- a/crates/uv/tests/edit.rs +++ b/crates/uv/tests/edit.rs @@ -1926,12 +1926,12 @@ fn update() -> Result<()> { [package.metadata] requires-dist = [ + { name = "certifi", specifier = ">=2017.4.17" }, + { name = "chardet", marker = "extra == 'use-chardet-on-py3'", specifier = "<6,>=3.0.2" }, { name = "charset-normalizer", specifier = "<4,>=2" }, { name = "idna", specifier = "<4,>=2.5" }, - { name = "urllib3", specifier = "<3,>=1.21.1" }, - { name = "certifi", specifier = ">=2017.4.17" }, { name = "pysocks", marker = "extra == 'socks'", specifier = "!=1.5.7,>=1.5.6" }, - { name = "chardet", marker = "extra == 'use-chardet-on-py3'", specifier = "<6,>=3.0.2" }, + { name = "urllib3", specifier = "<3,>=1.21.1" }, ] [[package]] diff --git a/crates/uv/tests/lock.rs b/crates/uv/tests/lock.rs index f54c1f9cb..fcc318d94 100644 --- a/crates/uv/tests/lock.rs +++ b/crates/uv/tests/lock.rs @@ -854,24 +854,24 @@ fn lock_wheel_url() -> Result<()> { [package.metadata] requires-dist = [ - { name = "idna", specifier = ">=2.8" }, - { name = "sniffio", specifier = ">=1.1" }, - { name = "exceptiongroup", marker = "python_version < '3.11'", specifier = ">=1.0.2" }, - { name = "typing-extensions", marker = "python_version < '3.11'", specifier = ">=4.1" }, - { name = "packaging", marker = "extra == 'doc'" }, - { name = "sphinx", marker = "extra == 'doc'", specifier = ">=7" }, - { name = "sphinx-rtd-theme", marker = "extra == 'doc'" }, - { name = "sphinx-autodoc-typehints", marker = "extra == 'doc'", specifier = ">=1.2.0" }, { name = "anyio", extras = ["trio"], marker = "extra == 'test'" }, { name = "coverage", extras = ["toml"], marker = "extra == 'test'", specifier = ">=7" }, + { name = "exceptiongroup", marker = "python_version < '3.11'", specifier = ">=1.0.2" }, { name = "exceptiongroup", marker = "extra == 'test'", specifier = ">=1.2.0" }, { name = "hypothesis", marker = "extra == 'test'", specifier = ">=4.0" }, + { name = "idna", specifier = ">=2.8" }, + { name = "packaging", marker = "extra == 'doc'" }, { name = "psutil", marker = "extra == 'test'", specifier = ">=5.9" }, { name = "pytest", marker = "extra == 'test'", specifier = ">=7.0" }, { name = "pytest-mock", marker = "extra == 'test'", specifier = ">=3.6.1" }, - { name = "trustme", marker = "extra == 'test'" }, - { name = "uvloop", marker = "platform_python_implementation == 'CPython' and platform_system != 'Windows' and extra == 'test'", specifier = ">=0.17" }, + { name = "sniffio", specifier = ">=1.1" }, + { name = "sphinx", marker = "extra == 'doc'", specifier = ">=7" }, + { name = "sphinx-autodoc-typehints", marker = "extra == 'doc'", specifier = ">=1.2.0" }, + { name = "sphinx-rtd-theme", marker = "extra == 'doc'" }, { name = "trio", marker = "extra == 'trio'", specifier = ">=0.23" }, + { name = "trustme", marker = "extra == 'test'" }, + { name = "typing-extensions", marker = "python_version < '3.11'", specifier = ">=4.1" }, + { name = "uvloop", marker = "platform_python_implementation == 'CPython' and platform_system != 'Windows' and extra == 'test'", specifier = ">=0.17" }, ] [[package]] @@ -987,24 +987,24 @@ fn lock_sdist_url() -> Result<()> { [package.metadata] requires-dist = [ - { name = "idna", specifier = ">=2.8" }, - { name = "sniffio", specifier = ">=1.1" }, - { name = "exceptiongroup", marker = "python_version < '3.11'", specifier = ">=1.0.2" }, - { name = "typing-extensions", marker = "python_version < '3.11'", specifier = ">=4.1" }, - { name = "packaging", marker = "extra == 'doc'" }, - { name = "sphinx", marker = "extra == 'doc'", specifier = ">=7" }, - { name = "sphinx-rtd-theme", marker = "extra == 'doc'" }, - { name = "sphinx-autodoc-typehints", marker = "extra == 'doc'", specifier = ">=1.2.0" }, { name = "anyio", extras = ["trio"], marker = "extra == 'test'" }, { name = "coverage", extras = ["toml"], marker = "extra == 'test'", specifier = ">=7" }, + { name = "exceptiongroup", marker = "python_version < '3.11'", specifier = ">=1.0.2" }, { name = "exceptiongroup", marker = "extra == 'test'", specifier = ">=1.2.0" }, { name = "hypothesis", marker = "extra == 'test'", specifier = ">=4.0" }, + { name = "idna", specifier = ">=2.8" }, + { name = "packaging", marker = "extra == 'doc'" }, { name = "psutil", marker = "extra == 'test'", specifier = ">=5.9" }, { name = "pytest", marker = "extra == 'test'", specifier = ">=7.0" }, { name = "pytest-mock", marker = "extra == 'test'", specifier = ">=3.6.1" }, - { name = "trustme", marker = "extra == 'test'" }, - { name = "uvloop", marker = "platform_python_implementation == 'CPython' and platform_system != 'Windows' and extra == 'test'", specifier = ">=0.17" }, + { name = "sniffio", specifier = ">=1.1" }, + { name = "sphinx", marker = "extra == 'doc'", specifier = ">=7" }, + { name = "sphinx-autodoc-typehints", marker = "extra == 'doc'", specifier = ">=1.2.0" }, + { name = "sphinx-rtd-theme", marker = "extra == 'doc'" }, { name = "trio", marker = "extra == 'trio'", specifier = ">=0.23" }, + { name = "trustme", marker = "extra == 'test'" }, + { name = "typing-extensions", marker = "python_version < '3.11'", specifier = ">=4.1" }, + { name = "uvloop", marker = "platform_python_implementation == 'CPython' and platform_system != 'Windows' and extra == 'test'", specifier = ">=0.17" }, ] [[package]] @@ -2073,8 +2073,8 @@ fn lock_upgrade_log() -> Result<()> { [package.metadata] requires-dist = [ - { name = "markupsafe", specifier = "<2" }, { name = "iniconfig" }, + { name = "markupsafe", specifier = "<2" }, ] "### ); @@ -3797,12 +3797,12 @@ fn lock_python_version_marker_complement() -> Result<()> { [package.metadata] requires-dist = [ - { name = "iniconfig", marker = "python_version >= '3.10'" }, - { name = "iniconfig", marker = "python_version < '3.10'" }, - { name = "attrs", marker = "python_version > '3.10'" }, { name = "attrs", marker = "python_version <= '3.10'" }, - { name = "typing-extensions", marker = "python_full_version > '3.10'" }, + { name = "attrs", marker = "python_version > '3.10'" }, + { name = "iniconfig", marker = "python_version < '3.10'" }, + { name = "iniconfig", marker = "python_version >= '3.10'" }, { name = "typing-extensions", marker = "python_full_version <= '3.10'" }, + { name = "typing-extensions", marker = "python_full_version > '3.10'" }, ] [[package]] @@ -4332,8 +4332,8 @@ fn lock_cycles() -> Result<()> { [package.metadata] requires-dist = [ - { name = "testtools", specifier = "==2.3.0" }, { name = "fixtures", specifier = "==3.0.0" }, + { name = "testtools", specifier = "==2.3.0" }, ] [[package]] @@ -5176,8 +5176,8 @@ fn lock_same_version_multiple_urls() -> Result<()> { [package.metadata] requires-dist = [ - { name = "dependency", marker = "sys_platform == 'darwin'", directory = "[TEMP_DIR]/v1" }, { name = "dependency", marker = "sys_platform != 'darwin'", directory = "[TEMP_DIR]/v2" }, + { name = "dependency", marker = "sys_platform == 'darwin'", directory = "[TEMP_DIR]/v1" }, ] [[package]] @@ -5450,8 +5450,8 @@ fn lock_dev_transitive() -> Result<()> { [package.metadata] requires-dist = [ - { name = "foo", directory = "../foo" }, { name = "baz", editable = "baz" }, + { name = "foo", directory = "../foo" }, { name = "iniconfig", specifier = ">1" }, ] @@ -7803,8 +7803,8 @@ fn lock_mixed_extras() -> Result<()> { [package.metadata] requires-dist = [ { name = "leaf1", editable = "packages/leaf1" }, - { name = "workspace2", directory = "../workspace2" }, { name = "typing-extensions", marker = "extra == 'async'", specifier = ">=4" }, + { name = "workspace2", directory = "../workspace2" }, ] [[package]] @@ -7992,8 +7992,8 @@ fn lock_transitive_extra() -> Result<()> { [package.metadata] requires-dist = [ { name = "leaf", editable = "packages/leaf" }, - { name = "typing-extensions", marker = "extra == 'async'", specifier = ">=4" }, { name = "leaf", extras = ["async"], marker = "extra == 'async'", editable = "packages/leaf" }, + { name = "typing-extensions", marker = "extra == 'async'", specifier = ">=4" }, ] "### ); @@ -9377,3 +9377,137 @@ fn lock_missing_metadata() -> Result<()> { Ok(()) } + +/// Lock a `pyproject.toml`, reorder the dependencies, and ensure that the lockfile is _not_ updated +/// on the next run. +#[test] +fn lock_reorder() -> Result<()> { + let context = TestContext::new("3.12"); + + let pyproject_toml = context.temp_dir.child("pyproject.toml"); + pyproject_toml.write_str( + r#" + [project] + name = "project" + version = "0.1.0" + requires-python = ">=3.12" + dependencies = ["anyio", "iniconfig"] + "#, + )?; + + uv_snapshot!(context.filters(), context.lock(), @r###" + success: true + exit_code: 0 + ----- stdout ----- + + ----- stderr ----- + warning: `uv lock` is experimental and may change without warning + Resolved 5 packages in [TIME] + "###); + + let lock = fs_err::read_to_string(context.temp_dir.join("uv.lock")).unwrap(); + + insta::with_settings!({ + filters => context.filters(), + }, { + assert_snapshot!( + lock, @r###" + version = 1 + requires-python = ">=3.12" + + [options] + exclude-newer = "2024-03-25 00:00:00 UTC" + + [[package]] + name = "anyio" + version = "4.3.0" + source = { registry = "https://pypi.org/simple" } + dependencies = [ + { name = "idna" }, + { name = "sniffio" }, + ] + 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 }, + ] + + [[package]] + name = "idna" + version = "3.6" + source = { registry = "https://pypi.org/simple" } + sdist = { url = "https://files.pythonhosted.org/packages/bf/3f/ea4b9117521a1e9c50344b909be7886dd00a519552724809bb1f486986c2/idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca", size = 175426 } + wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/e7/a82b05cf63a603df6e68d59ae6a68bf5064484a0718ea5033660af4b54a9/idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f", size = 61567 }, + ] + + [[package]] + name = "iniconfig" + version = "2.0.0" + source = { registry = "https://pypi.org/simple" } + sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } + wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, + ] + + [[package]] + name = "project" + version = "0.1.0" + source = { editable = "." } + dependencies = [ + { name = "anyio" }, + { name = "iniconfig" }, + ] + + [package.metadata] + requires-dist = [ + { name = "anyio" }, + { name = "iniconfig" }, + ] + + [[package]] + name = "sniffio" + version = "1.3.1" + 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 } + wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, + ] + "### + ); + }); + + // Re-run with `--locked`. + uv_snapshot!(context.filters(), context.lock().arg("--locked"), @r###" + success: true + exit_code: 0 + ----- stdout ----- + + ----- stderr ----- + warning: `uv lock` is experimental and may change without warning + Resolved 5 packages in [TIME] + "###); + + // Reorder the dependencies. + pyproject_toml.write_str( + r#" + [project] + name = "project" + version = "0.1.0" + requires-python = ">=3.12" + dependencies = ["iniconfig", "anyio"] + "#, + )?; + + // Re-run with `--locked`. + uv_snapshot!(context.filters(), context.lock().arg("--locked"), @r###" + success: true + exit_code: 0 + ----- stdout ----- + + ----- stderr ----- + warning: `uv lock` is experimental and may change without warning + Resolved 5 packages in [TIME] + "###); + + Ok(()) +} diff --git a/crates/uv/tests/lock_scenarios.rs b/crates/uv/tests/lock_scenarios.rs index af8da27c7..ac2b128a8 100644 --- a/crates/uv/tests/lock_scenarios.rs +++ b/crates/uv/tests/lock_scenarios.rs @@ -224,8 +224,8 @@ fn fork_allows_non_conflicting_repeated_dependencies() -> Result<()> { [package.metadata] requires-dist = [ - { name = "package-a", specifier = ">=1" }, { name = "package-a", specifier = "<2" }, + { name = "package-a", specifier = ">=1" }, ] "### ); @@ -3671,9 +3671,9 @@ fn preferences_dependent_forking_tristable() -> Result<()> { [package.metadata] requires-dist = [ + { name = "package-bar" }, { name = "package-cleaver" }, { name = "package-foo" }, - { name = "package-bar" }, ] "### ); @@ -3873,9 +3873,9 @@ fn preferences_dependent_forking() -> Result<()> { [package.metadata] requires-dist = [ + { name = "package-bar" }, { name = "package-cleaver" }, { name = "package-foo" }, - { name = "package-bar" }, ] "### ); diff --git a/crates/uv/tests/snapshots/ecosystem__black-lock-file.snap b/crates/uv/tests/snapshots/ecosystem__black-lock-file.snap index 1161ffa49..9a8ccd446 100644 --- a/crates/uv/tests/snapshots/ecosystem__black-lock-file.snap +++ b/crates/uv/tests/snapshots/ecosystem__black-lock-file.snap @@ -204,18 +204,18 @@ uvloop = [ [package.metadata] requires-dist = [ + { name = "aiohttp", marker = "implementation_name == 'pypy' and sys_platform == 'win32' and extra == 'd'", specifier = "!=3.9.0,>=3.7.4" }, + { name = "aiohttp", marker = "(implementation_name != 'pypy' and extra == 'd') or (sys_platform != 'win32' and extra == 'd')", specifier = ">=3.7.4" }, { name = "click", specifier = ">=8.0.0" }, + { name = "colorama", marker = "extra == 'colorama'", specifier = ">=0.4.3" }, + { name = "ipython", marker = "extra == 'jupyter'", specifier = ">=7.8.0" }, { name = "mypy-extensions", specifier = ">=0.4.3" }, { name = "packaging", specifier = ">=22.0" }, { name = "pathspec", specifier = ">=0.9.0" }, { name = "platformdirs", specifier = ">=2" }, + { name = "tokenize-rt", marker = "extra == 'jupyter'", specifier = ">=3.2.0" }, { name = "tomli", marker = "python_version < '3.11'", specifier = ">=1.1.0" }, { name = "typing-extensions", marker = "python_version < '3.11'", specifier = ">=4.0.1" }, - { name = "colorama", marker = "extra == 'colorama'", specifier = ">=0.4.3" }, - { name = "aiohttp", marker = "implementation_name == 'pypy' and sys_platform == 'win32' and extra == 'd'", specifier = "!=3.9.0,>=3.7.4" }, - { name = "aiohttp", marker = "(implementation_name != 'pypy' and extra == 'd') or (sys_platform != 'win32' and extra == 'd')", specifier = ">=3.7.4" }, - { name = "ipython", marker = "extra == 'jupyter'", specifier = ">=7.8.0" }, - { name = "tokenize-rt", marker = "extra == 'jupyter'", specifier = ">=3.2.0" }, { name = "uvloop", marker = "extra == 'uvloop'", specifier = ">=0.15.2" }, ] diff --git a/crates/uv/tests/snapshots/ecosystem__home-assistant-core-lock-file.snap b/crates/uv/tests/snapshots/ecosystem__home-assistant-core-lock-file.snap index 2d17ec2d2..4d708ed5c 100644 --- a/crates/uv/tests/snapshots/ecosystem__home-assistant-core-lock-file.snap +++ b/crates/uv/tests/snapshots/ecosystem__home-assistant-core-lock-file.snap @@ -672,27 +672,27 @@ requires-dist = [ { name = "aiozoneinfo", specifier = "==0.2.0" }, { name = "astral", specifier = "==2.2" }, { name = "async-interrupt", specifier = "==1.1.1" }, - { name = "attrs", specifier = "==23.2.0" }, { name = "atomicwrites-homeassistant", specifier = "==1.4.1" }, + { name = "attrs", specifier = "==23.2.0" }, { name = "awesomeversion", specifier = "==24.2.0" }, { name = "bcrypt", specifier = "==4.1.2" }, { name = "certifi", specifier = ">=2021.5.30" }, { name = "ciso8601", specifier = "==2.3.1" }, + { name = "cryptography", specifier = "==42.0.8" }, { name = "fnv-hash-fast", specifier = "==0.5.0" }, { name = "hass-nabucasa", specifier = "==0.81.1" }, - { name = "httpx", specifier = "==0.27.0" }, { name = "home-assistant-bluetooth", specifier = "==1.12.1" }, + { name = "httpx", specifier = "==0.27.0" }, { name = "ifaddr", specifier = "==0.2.0" }, { name = "jinja2", specifier = "==3.1.4" }, { name = "lru-dict", specifier = "==1.3.0" }, - { name = "pyjwt", specifier = "==2.8.0" }, - { name = "cryptography", specifier = "==42.0.8" }, - { name = "pillow", specifier = "==10.3.0" }, - { name = "pyopenssl", specifier = "==24.1.0" }, { name = "orjson", specifier = "==3.9.15" }, { name = "packaging", specifier = ">=23.1" }, + { name = "pillow", specifier = "==10.3.0" }, { name = "pip", specifier = ">=21.3.1" }, { name = "psutil-home-assistant", specifier = "==0.0.1" }, + { name = "pyjwt", specifier = "==2.8.0" }, + { name = "pyopenssl", specifier = "==24.1.0" }, { name = "python-slugify", specifier = "==8.0.4" }, { name = "pyyaml", specifier = "==6.0.1" }, { name = "requests", specifier = "==2.32.3" }, diff --git a/crates/uv/tests/snapshots/ecosystem__packse-lock-file.snap b/crates/uv/tests/snapshots/ecosystem__packse-lock-file.snap index f37eed066..ff0d197b4 100644 --- a/crates/uv/tests/snapshots/ecosystem__packse-lock-file.snap +++ b/crates/uv/tests/snapshots/ecosystem__packse-lock-file.snap @@ -355,22 +355,22 @@ dev = [ [package.metadata] requires-dist = [ - { name = "msgspec", specifier = ">=0.18.4" }, - { name = "twine", specifier = ">=4.0.2" }, - { name = "hatchling", specifier = ">=1.20.0" }, { name = "chevron-blue", specifier = ">=0.2.1" }, - { name = "setuptools", specifier = ">=69.1.1" }, - { name = "pyyaml", specifier = ">=6.0.1" }, - { name = "pypiserver", marker = "extra == 'index'", specifier = ">=2.0.1" }, + { name = "hatchling", specifier = ">=1.20.0" }, + { name = "msgspec", specifier = ">=0.18.4" }, { name = "packse", extras = ["index"], marker = "extra == 'serve'" }, + { name = "pypiserver", marker = "extra == 'index'", specifier = ">=2.0.1" }, + { name = "pyyaml", specifier = ">=6.0.1" }, + { name = "setuptools", specifier = ">=69.1.1" }, + { name = "twine", specifier = ">=4.0.2" }, { name = "watchfiles", marker = "extra == 'serve'", specifier = ">=0.21.0" }, ] [package.metadata.requires-dev] dev = [ - { name = "syrupy", specifier = ">=4.6.0" }, - { name = "pytest", specifier = ">=7.4.3" }, { name = "psutil", specifier = ">=5.9.7" }, + { name = "pytest", specifier = ">=7.4.3" }, + { name = "syrupy", specifier = ">=4.6.0" }, ] [[package]] diff --git a/crates/uv/tests/snapshots/ecosystem__transformers-lock-file.snap b/crates/uv/tests/snapshots/ecosystem__transformers-lock-file.snap index 0a3bbf2ea..3cf446ab4 100644 --- a/crates/uv/tests/snapshots/ecosystem__transformers-lock-file.snap +++ b/crates/uv/tests/snapshots/ecosystem__transformers-lock-file.snap @@ -5868,276 +5868,269 @@ vision = [ [package.metadata] requires-dist = [ - { name = "filelock" }, - { name = "huggingface-hub", specifier = ">=0.19.3,<1.0" }, - { name = "numpy", specifier = ">=1.17" }, - { name = "packaging", specifier = ">=20.0" }, - { name = "pyyaml", specifier = ">=5.1" }, - { name = "regex", specifier = "!=2019.12.17" }, - { name = "requests" }, - { name = "tokenizers", specifier = ">=0.14,<0.19" }, - { name = "safetensors", specifier = ">=0.4.1" }, - { name = "tqdm", specifier = ">=4.27" }, - { name = "fugashi", marker = "extra == 'ja'", specifier = ">=1.0" }, - { name = "ipadic", marker = "extra == 'ja'", specifier = ">=1.0.0,<2.0" }, - { name = "unidic-lite", marker = "extra == 'ja'", specifier = ">=1.0.7" }, - { name = "unidic", marker = "extra == 'ja'", specifier = ">=1.0.2" }, - { name = "sudachipy", marker = "extra == 'ja'", specifier = ">=0.6.6" }, - { name = "sudachidict-core", marker = "extra == 'ja'", specifier = ">=20220729" }, - { name = "rhoknp", marker = "extra == 'ja'", specifier = ">=1.1.0,<1.3.1" }, - { name = "scikit-learn", marker = "extra == 'sklearn'" }, - { name = "tensorflow", marker = "extra == 'tf'", specifier = ">=2.6,<2.16" }, - { name = "onnxconverter-common", marker = "extra == 'tf'" }, - { name = "tf2onnx", marker = "extra == 'tf'" }, - { name = "tensorflow-text", marker = "extra == 'tf'", specifier = "<2.16" }, - { name = "keras-nlp", marker = "extra == 'tf'", specifier = ">=0.3.1" }, - { name = "tensorflow-cpu", marker = "extra == 'tf-cpu'", specifier = ">=2.6,<2.16" }, - { name = "onnxconverter-common", marker = "extra == 'tf-cpu'" }, - { name = "tf2onnx", marker = "extra == 'tf-cpu'" }, - { name = "tensorflow-text", marker = "extra == 'tf-cpu'", specifier = "<2.16" }, - { name = "keras-nlp", marker = "extra == 'tf-cpu'", specifier = ">=0.3.1" }, - { name = "torch", marker = "extra == 'torch'" }, { name = "accelerate", marker = "extra == 'torch'", specifier = ">=0.21.0" }, { name = "accelerate", marker = "extra == 'accelerate'", specifier = ">=0.21.0" }, - { name = "faiss-cpu", marker = "extra == 'retrieval'" }, - { name = "datasets", marker = "extra == 'retrieval'", specifier = "!=2.5.0" }, - { name = "jax", marker = "extra == 'flax'", specifier = ">=0.4.1,<=0.4.13" }, - { name = "jaxlib", marker = "extra == 'flax'", specifier = ">=0.4.1,<=0.4.13" }, - { name = "flax", marker = "extra == 'flax'", specifier = ">=0.4.1,<=0.7.0" }, - { name = "optax", marker = "extra == 'flax'", specifier = ">=0.0.8,<=0.1.4" }, - { name = "tokenizers", marker = "extra == 'tokenizers'", specifier = ">=0.14,<0.19" }, - { name = "ftfy", marker = "extra == 'ftfy'" }, - { name = "onnxruntime", marker = "extra == 'onnxruntime'", specifier = ">=1.4.0" }, - { name = "onnxruntime-tools", marker = "extra == 'onnxruntime'", specifier = ">=1.4.2" }, - { name = "onnxconverter-common", marker = "extra == 'onnx'" }, - { name = "tf2onnx", marker = "extra == 'onnx'" }, - { name = "onnxruntime", marker = "extra == 'onnx'", specifier = ">=1.4.0" }, - { name = "onnxruntime-tools", marker = "extra == 'onnx'", specifier = ">=1.4.2" }, - { name = "cookiecutter", marker = "extra == 'modelcreation'", specifier = "==1.7.3" }, - { name = "sagemaker", marker = "extra == 'sagemaker'", specifier = "==2.226.1" }, - { name = "deepspeed", marker = "extra == 'deepspeed'", specifier = ">=0.9.3" }, { name = "accelerate", marker = "extra == 'deepspeed'", specifier = ">=0.21.0" }, - { name = "optuna", marker = "extra == 'optuna'" }, - { name = "ray", extras = ["tune"], marker = "extra == 'ray'", specifier = ">=2.7.0" }, - { name = "sigopt", marker = "extra == 'sigopt'" }, - { name = "optuna", marker = "extra == 'integrations'" }, - { name = "ray", extras = ["tune"], marker = "extra == 'integrations'", specifier = ">=2.7.0" }, - { name = "sigopt", marker = "extra == 'integrations'" }, - { name = "pydantic", marker = "extra == 'serving'" }, - { name = "uvicorn", marker = "extra == 'serving'" }, - { name = "fastapi", marker = "extra == 'serving'" }, - { name = "starlette", marker = "extra == 'serving'" }, - { name = "librosa", marker = "extra == 'audio'" }, - { name = "pyctcdecode", marker = "extra == 'audio'", specifier = ">=0.4.0" }, - { name = "phonemizer", marker = "extra == 'audio'" }, - { name = "kenlm", marker = "extra == 'audio'" }, - { name = "torchaudio", marker = "extra == 'speech'" }, - { name = "librosa", marker = "extra == 'speech'" }, - { name = "pyctcdecode", marker = "extra == 'speech'", specifier = ">=0.4.0" }, - { name = "phonemizer", marker = "extra == 'speech'" }, - { name = "kenlm", marker = "extra == 'speech'" }, - { name = "torchaudio", marker = "extra == 'torch-speech'" }, - { name = "librosa", marker = "extra == 'torch-speech'" }, - { name = "pyctcdecode", marker = "extra == 'torch-speech'", specifier = ">=0.4.0" }, - { name = "phonemizer", marker = "extra == 'torch-speech'" }, - { name = "kenlm", marker = "extra == 'torch-speech'" }, - { name = "librosa", marker = "extra == 'tf-speech'" }, - { name = "pyctcdecode", marker = "extra == 'tf-speech'", specifier = ">=0.4.0" }, - { name = "phonemizer", marker = "extra == 'tf-speech'" }, - { name = "kenlm", marker = "extra == 'tf-speech'" }, - { name = "librosa", marker = "extra == 'flax-speech'" }, - { name = "pyctcdecode", marker = "extra == 'flax-speech'", specifier = ">=0.4.0" }, - { name = "phonemizer", marker = "extra == 'flax-speech'" }, - { name = "kenlm", marker = "extra == 'flax-speech'" }, - { name = "pillow", marker = "extra == 'vision'", specifier = ">=10.0.1,<=15.0" }, - { name = "timm", marker = "extra == 'timm'" }, - { name = "torchvision", marker = "extra == 'torch-vision'" }, - { name = "pillow", marker = "extra == 'torch-vision'", specifier = ">=10.0.1,<=15.0" }, - { name = "codecarbon", marker = "extra == 'codecarbon'", specifier = "==1.2.0" }, - { name = "decord", marker = "extra == 'video'", specifier = "==0.6.0" }, - { name = "av", marker = "extra == 'video'", specifier = "==9.2.0" }, - { name = "sentencepiece", marker = "extra == 'sentencepiece'", specifier = ">=0.1.91,!=0.1.92" }, - { name = "protobuf", marker = "extra == 'sentencepiece'" }, - { name = "deepspeed", marker = "extra == 'deepspeed-testing'", specifier = ">=0.9.3" }, { name = "accelerate", marker = "extra == 'deepspeed-testing'", specifier = ">=0.21.0" }, - { name = "pytest", marker = "extra == 'deepspeed-testing'", specifier = ">=7.2.0,<8.0.0" }, - { name = "pytest-xdist", marker = "extra == 'deepspeed-testing'" }, - { name = "timeout-decorator", marker = "extra == 'deepspeed-testing'" }, - { name = "parameterized", marker = "extra == 'deepspeed-testing'" }, - { name = "psutil", marker = "extra == 'deepspeed-testing'" }, - { name = "datasets", marker = "extra == 'deepspeed-testing'", specifier = "!=2.5.0" }, - { name = "dill", marker = "extra == 'deepspeed-testing'", specifier = "<0.3.5" }, - { name = "evaluate", marker = "extra == 'deepspeed-testing'", specifier = ">=0.2.0" }, - { name = "pytest-timeout", marker = "extra == 'deepspeed-testing'" }, - { name = "ruff", marker = "extra == 'deepspeed-testing'", specifier = "==0.1.5" }, - { name = "sacrebleu", marker = "extra == 'deepspeed-testing'", specifier = ">=1.4.12,<2.0.0" }, - { name = "rouge-score", marker = "extra == 'deepspeed-testing'", specifier = "!=0.0.7,!=0.0.8,!=0.1,!=0.1.1" }, - { name = "nltk", marker = "extra == 'deepspeed-testing'" }, - { name = "gitpython", marker = "extra == 'deepspeed-testing'", specifier = "<3.1.19" }, - { name = "hf-doc-builder", marker = "extra == 'deepspeed-testing'", specifier = ">=0.3.0" }, - { name = "protobuf", marker = "extra == 'deepspeed-testing'" }, - { name = "sacremoses", marker = "extra == 'deepspeed-testing'" }, - { name = "rjieba", marker = "extra == 'deepspeed-testing'" }, - { name = "beautifulsoup4", marker = "extra == 'deepspeed-testing'" }, - { name = "tensorboard", marker = "extra == 'deepspeed-testing'" }, - { name = "pydantic", marker = "extra == 'deepspeed-testing'" }, - { name = "faiss-cpu", marker = "extra == 'deepspeed-testing'" }, - { name = "datasets", marker = "extra == 'deepspeed-testing'", specifier = "!=2.5.0" }, - { name = "cookiecutter", marker = "extra == 'deepspeed-testing'", specifier = "==1.7.3" }, - { name = "optuna", marker = "extra == 'deepspeed-testing'" }, - { name = "sentencepiece", marker = "extra == 'deepspeed-testing'", specifier = ">=0.1.91,!=0.1.92" }, - { name = "protobuf", marker = "extra == 'deepspeed-testing'" }, - { name = "datasets", marker = "extra == 'quality'", specifier = "!=2.5.0" }, - { name = "isort", marker = "extra == 'quality'", specifier = ">=5.5.4" }, - { name = "ruff", marker = "extra == 'quality'", specifier = "==0.1.5" }, - { name = "gitpython", marker = "extra == 'quality'", specifier = "<3.1.19" }, - { name = "hf-doc-builder", marker = "extra == 'quality'", specifier = ">=0.3.0" }, - { name = "urllib3", marker = "extra == 'quality'", specifier = "<2.0.0" }, - { name = "tensorflow", marker = "extra == 'all'", specifier = ">=2.6,<2.16" }, - { name = "onnxconverter-common", marker = "extra == 'all'" }, - { name = "tf2onnx", marker = "extra == 'all'" }, - { name = "tensorflow-text", marker = "extra == 'all'", specifier = "<2.16" }, - { name = "keras-nlp", marker = "extra == 'all'", specifier = ">=0.3.1" }, - { name = "torch", marker = "extra == 'all'" }, { name = "accelerate", marker = "extra == 'all'", specifier = ">=0.21.0" }, - { name = "jax", marker = "extra == 'all'", specifier = ">=0.4.1,<=0.4.13" }, - { name = "jaxlib", marker = "extra == 'all'", specifier = ">=0.4.1,<=0.4.13" }, - { name = "flax", marker = "extra == 'all'", specifier = ">=0.4.1,<=0.7.0" }, - { name = "optax", marker = "extra == 'all'", specifier = ">=0.0.8,<=0.1.4" }, - { name = "sentencepiece", marker = "extra == 'all'", specifier = ">=0.1.91,!=0.1.92" }, - { name = "protobuf", marker = "extra == 'all'" }, - { name = "tokenizers", marker = "extra == 'all'", specifier = ">=0.14,<0.19" }, - { name = "torchaudio", marker = "extra == 'all'" }, - { name = "librosa", marker = "extra == 'all'" }, - { name = "pyctcdecode", marker = "extra == 'all'", specifier = ">=0.4.0" }, - { name = "phonemizer", marker = "extra == 'all'" }, - { name = "kenlm", marker = "extra == 'all'" }, - { name = "pillow", marker = "extra == 'all'", specifier = ">=10.0.1,<=15.0" }, - { name = "optuna", marker = "extra == 'all'" }, - { name = "ray", extras = ["tune"], marker = "extra == 'all'", specifier = ">=2.7.0" }, - { name = "sigopt", marker = "extra == 'all'" }, - { name = "timm", marker = "extra == 'all'" }, - { name = "torchvision", marker = "extra == 'all'" }, - { name = "pillow", marker = "extra == 'all'", specifier = ">=10.0.1,<=15.0" }, - { name = "codecarbon", marker = "extra == 'all'", specifier = "==1.2.0" }, - { name = "accelerate", marker = "extra == 'all'", specifier = ">=0.21.0" }, - { name = "decord", marker = "extra == 'all'", specifier = "==0.6.0" }, - { name = "av", marker = "extra == 'all'", specifier = "==9.2.0" }, - { name = "hf-doc-builder", marker = "extra == 'docs-specific'" }, - { name = "tensorflow", marker = "extra == 'docs'", specifier = ">=2.6,<2.16" }, - { name = "onnxconverter-common", marker = "extra == 'docs'" }, - { name = "tf2onnx", marker = "extra == 'docs'" }, - { name = "tensorflow-text", marker = "extra == 'docs'", specifier = "<2.16" }, - { name = "keras-nlp", marker = "extra == 'docs'", specifier = ">=0.3.1" }, - { name = "torch", marker = "extra == 'docs'" }, { name = "accelerate", marker = "extra == 'docs'", specifier = ">=0.21.0" }, - { name = "jax", marker = "extra == 'docs'", specifier = ">=0.4.1,<=0.4.13" }, - { name = "jaxlib", marker = "extra == 'docs'", specifier = ">=0.4.1,<=0.4.13" }, - { name = "flax", marker = "extra == 'docs'", specifier = ">=0.4.1,<=0.7.0" }, - { name = "optax", marker = "extra == 'docs'", specifier = ">=0.0.8,<=0.1.4" }, - { name = "sentencepiece", marker = "extra == 'docs'", specifier = ">=0.1.91,!=0.1.92" }, - { name = "protobuf", marker = "extra == 'docs'" }, - { name = "tokenizers", marker = "extra == 'docs'", specifier = ">=0.14,<0.19" }, - { name = "torchaudio", marker = "extra == 'docs'" }, - { name = "librosa", marker = "extra == 'docs'" }, - { name = "pyctcdecode", marker = "extra == 'docs'", specifier = ">=0.4.0" }, - { name = "phonemizer", marker = "extra == 'docs'" }, - { name = "kenlm", marker = "extra == 'docs'" }, - { name = "pillow", marker = "extra == 'docs'", specifier = ">=10.0.1,<=15.0" }, - { name = "optuna", marker = "extra == 'docs'" }, - { name = "ray", extras = ["tune"], marker = "extra == 'docs'", specifier = ">=2.7.0" }, - { name = "sigopt", marker = "extra == 'docs'" }, - { name = "timm", marker = "extra == 'docs'" }, - { name = "torchvision", marker = "extra == 'docs'" }, - { name = "pillow", marker = "extra == 'docs'", specifier = ">=10.0.1,<=15.0" }, - { name = "codecarbon", marker = "extra == 'docs'", specifier = "==1.2.0" }, - { name = "accelerate", marker = "extra == 'docs'", specifier = ">=0.21.0" }, - { name = "decord", marker = "extra == 'docs'", specifier = "==0.6.0" }, - { name = "av", marker = "extra == 'docs'", specifier = "==9.2.0" }, - { name = "hf-doc-builder", marker = "extra == 'docs'" }, - { name = "filelock", marker = "extra == 'torchhub'" }, - { name = "huggingface-hub", marker = "extra == 'torchhub'", specifier = ">=0.19.3,<1.0" }, - { name = "importlib-metadata", marker = "extra == 'torchhub'" }, - { name = "numpy", marker = "extra == 'torchhub'", specifier = ">=1.17" }, - { name = "packaging", marker = "extra == 'torchhub'", specifier = ">=20.0" }, - { name = "protobuf", marker = "extra == 'torchhub'" }, - { name = "regex", marker = "extra == 'torchhub'", specifier = "!=2019.12.17" }, - { name = "requests", marker = "extra == 'torchhub'" }, - { name = "sentencepiece", marker = "extra == 'torchhub'", specifier = ">=0.1.91,!=0.1.92" }, - { name = "torch", marker = "extra == 'torchhub'" }, - { name = "tokenizers", marker = "extra == 'torchhub'", specifier = ">=0.14,<0.19" }, - { name = "tqdm", marker = "extra == 'torchhub'", specifier = ">=4.27" }, - { name = "diffusers", marker = "extra == 'agents'" }, { name = "accelerate", marker = "extra == 'agents'", specifier = ">=0.21.0" }, - { name = "datasets", marker = "extra == 'agents'", specifier = "!=2.5.0" }, - { name = "torch", marker = "extra == 'agents'" }, - { name = "sentencepiece", marker = "extra == 'agents'", specifier = ">=0.1.91,!=0.1.92" }, - { name = "opencv-python", marker = "extra == 'agents'" }, - { name = "pillow", marker = "extra == 'agents'", specifier = ">=10.0.1,<=15.0" }, - { name = "gitpython", marker = "extra == 'dev-dependencies'", specifier = "<3.1.19" }, - { name = "pillow", marker = "extra == 'dev-dependencies'", specifier = ">=10.0.1,<=15.0" }, { name = "accelerate", marker = "extra == 'dev-dependencies'", specifier = ">=0.21.0" }, + { name = "av", marker = "extra == 'video'", specifier = "==9.2.0" }, + { name = "av", marker = "extra == 'all'", specifier = "==9.2.0" }, + { name = "av", marker = "extra == 'docs'", specifier = "==9.2.0" }, { name = "av", marker = "extra == 'dev-dependencies'", specifier = "==9.2.0" }, + { name = "beautifulsoup4", marker = "extra == 'deepspeed-testing'" }, { name = "beautifulsoup4", marker = "extra == 'dev-dependencies'" }, + { name = "codecarbon", marker = "extra == 'codecarbon'", specifier = "==1.2.0" }, + { name = "codecarbon", marker = "extra == 'all'", specifier = "==1.2.0" }, + { name = "codecarbon", marker = "extra == 'docs'", specifier = "==1.2.0" }, { name = "codecarbon", marker = "extra == 'dev-dependencies'", specifier = "==1.2.0" }, - { name = "codecarbon", marker = "extra == 'dev-dependencies'", specifier = "==1.2.0" }, + { name = "cookiecutter", marker = "extra == 'modelcreation'", specifier = "==1.7.3" }, + { name = "cookiecutter", marker = "extra == 'deepspeed-testing'", specifier = "==1.7.3" }, { name = "cookiecutter", marker = "extra == 'dev-dependencies'", specifier = "==1.7.3" }, + { name = "datasets", marker = "extra == 'retrieval'", specifier = "!=2.5.0" }, + { name = "datasets", marker = "extra == 'deepspeed-testing'", specifier = "!=2.5.0" }, + { name = "datasets", marker = "extra == 'quality'", specifier = "!=2.5.0" }, + { name = "datasets", marker = "extra == 'agents'", specifier = "!=2.5.0" }, { name = "datasets", marker = "extra == 'dev-dependencies'", specifier = "!=2.5.0" }, + { name = "decord", marker = "extra == 'video'", specifier = "==0.6.0" }, + { name = "decord", marker = "extra == 'all'", specifier = "==0.6.0" }, + { name = "decord", marker = "extra == 'docs'", specifier = "==0.6.0" }, { name = "decord", marker = "extra == 'dev-dependencies'", specifier = "==0.6.0" }, + { name = "deepspeed", marker = "extra == 'deepspeed'", specifier = ">=0.9.3" }, + { name = "deepspeed", marker = "extra == 'deepspeed-testing'", specifier = ">=0.9.3" }, + { name = "diffusers", marker = "extra == 'agents'" }, + { name = "dill", marker = "extra == 'deepspeed-testing'", specifier = "<0.3.5" }, { name = "dill", marker = "extra == 'dev-dependencies'", specifier = "<0.3.5" }, + { name = "evaluate", marker = "extra == 'deepspeed-testing'", specifier = ">=0.2.0" }, { name = "evaluate", marker = "extra == 'dev-dependencies'", specifier = ">=0.2.0" }, + { name = "faiss-cpu", marker = "extra == 'retrieval'" }, + { name = "faiss-cpu", marker = "extra == 'deepspeed-testing'" }, { name = "faiss-cpu", marker = "extra == 'dev-dependencies'" }, + { name = "fastapi", marker = "extra == 'serving'" }, + { name = "filelock" }, + { name = "filelock", marker = "extra == 'torchhub'" }, + { name = "flax", marker = "extra == 'flax'", specifier = ">=0.4.1,<=0.7.0" }, + { name = "flax", marker = "extra == 'all'", specifier = ">=0.4.1,<=0.7.0" }, + { name = "flax", marker = "extra == 'docs'", specifier = ">=0.4.1,<=0.7.0" }, { name = "flax", marker = "extra == 'dev-dependencies'", specifier = ">=0.4.1,<=0.7.0" }, + { name = "ftfy", marker = "extra == 'ftfy'" }, + { name = "fugashi", marker = "extra == 'ja'", specifier = ">=1.0" }, { name = "fugashi", marker = "extra == 'dev-dependencies'", specifier = ">=1.0" }, + { name = "gitpython", marker = "extra == 'deepspeed-testing'", specifier = "<3.1.19" }, + { name = "gitpython", marker = "extra == 'quality'", specifier = "<3.1.19" }, + { name = "gitpython", marker = "extra == 'dev-dependencies'", specifier = "<3.1.19" }, + { name = "hf-doc-builder", marker = "extra == 'deepspeed-testing'", specifier = ">=0.3.0" }, + { name = "hf-doc-builder", marker = "extra == 'quality'", specifier = ">=0.3.0" }, + { name = "hf-doc-builder", marker = "extra == 'docs-specific'" }, + { name = "hf-doc-builder", marker = "extra == 'docs'" }, { name = "hf-doc-builder", marker = "extra == 'dev-dependencies'" }, { name = "hf-doc-builder", marker = "extra == 'dev-dependencies'", specifier = ">=0.3.0" }, + { name = "huggingface-hub", specifier = ">=0.19.3,<1.0" }, + { name = "huggingface-hub", marker = "extra == 'torchhub'", specifier = ">=0.19.3,<1.0" }, + { name = "importlib-metadata", marker = "extra == 'torchhub'" }, + { name = "ipadic", marker = "extra == 'ja'", specifier = ">=1.0.0,<2.0" }, { name = "ipadic", marker = "extra == 'dev-dependencies'", specifier = ">=1.0.0,<2.0" }, + { name = "isort", marker = "extra == 'quality'", specifier = ">=5.5.4" }, { name = "isort", marker = "extra == 'dev-dependencies'", specifier = ">=5.5.4" }, + { name = "jax", marker = "extra == 'flax'", specifier = ">=0.4.1,<=0.4.13" }, + { name = "jax", marker = "extra == 'all'", specifier = ">=0.4.1,<=0.4.13" }, + { name = "jax", marker = "extra == 'docs'", specifier = ">=0.4.1,<=0.4.13" }, { name = "jax", marker = "extra == 'dev-dependencies'", specifier = ">=0.4.1,<=0.4.13" }, + { name = "jaxlib", marker = "extra == 'flax'", specifier = ">=0.4.1,<=0.4.13" }, + { name = "jaxlib", marker = "extra == 'all'", specifier = ">=0.4.1,<=0.4.13" }, + { name = "jaxlib", marker = "extra == 'docs'", specifier = ">=0.4.1,<=0.4.13" }, { name = "jaxlib", marker = "extra == 'dev-dependencies'", specifier = ">=0.4.1,<=0.4.13" }, + { name = "kenlm", marker = "extra == 'audio'" }, + { name = "kenlm", marker = "extra == 'speech'" }, + { name = "kenlm", marker = "extra == 'torch-speech'" }, + { name = "kenlm", marker = "extra == 'tf-speech'" }, + { name = "kenlm", marker = "extra == 'flax-speech'" }, + { name = "kenlm", marker = "extra == 'all'" }, + { name = "kenlm", marker = "extra == 'docs'" }, { name = "kenlm", marker = "extra == 'dev-dependencies'" }, + { name = "keras-nlp", marker = "extra == 'tf'", specifier = ">=0.3.1" }, + { name = "keras-nlp", marker = "extra == 'tf-cpu'", specifier = ">=0.3.1" }, + { name = "keras-nlp", marker = "extra == 'all'", specifier = ">=0.3.1" }, + { name = "keras-nlp", marker = "extra == 'docs'", specifier = ">=0.3.1" }, { name = "keras-nlp", marker = "extra == 'dev-dependencies'", specifier = ">=0.3.1" }, + { name = "librosa", marker = "extra == 'audio'" }, + { name = "librosa", marker = "extra == 'speech'" }, + { name = "librosa", marker = "extra == 'torch-speech'" }, + { name = "librosa", marker = "extra == 'tf-speech'" }, + { name = "librosa", marker = "extra == 'flax-speech'" }, + { name = "librosa", marker = "extra == 'all'" }, + { name = "librosa", marker = "extra == 'docs'" }, { name = "librosa", marker = "extra == 'dev-dependencies'" }, + { name = "nltk", marker = "extra == 'deepspeed-testing'" }, { name = "nltk", marker = "extra == 'dev-dependencies'" }, + { name = "numpy", specifier = ">=1.17" }, + { name = "numpy", marker = "extra == 'torchhub'", specifier = ">=1.17" }, + { name = "onnxconverter-common", marker = "extra == 'tf'" }, + { name = "onnxconverter-common", marker = "extra == 'tf-cpu'" }, + { name = "onnxconverter-common", marker = "extra == 'onnx'" }, + { name = "onnxconverter-common", marker = "extra == 'all'" }, + { name = "onnxconverter-common", marker = "extra == 'docs'" }, { name = "onnxconverter-common", marker = "extra == 'dev-dependencies'" }, - { name = "onnxruntime-tools", marker = "extra == 'dev-dependencies'", specifier = ">=1.4.2" }, + { name = "onnxruntime", marker = "extra == 'onnxruntime'", specifier = ">=1.4.0" }, + { name = "onnxruntime", marker = "extra == 'onnx'", specifier = ">=1.4.0" }, { name = "onnxruntime", marker = "extra == 'dev-dependencies'", specifier = ">=1.4.0" }, + { name = "onnxruntime-tools", marker = "extra == 'onnxruntime'", specifier = ">=1.4.2" }, + { name = "onnxruntime-tools", marker = "extra == 'onnx'", specifier = ">=1.4.2" }, + { name = "onnxruntime-tools", marker = "extra == 'dev-dependencies'", specifier = ">=1.4.2" }, + { name = "opencv-python", marker = "extra == 'agents'" }, + { name = "optax", marker = "extra == 'flax'", specifier = ">=0.0.8,<=0.1.4" }, + { name = "optax", marker = "extra == 'all'", specifier = ">=0.0.8,<=0.1.4" }, + { name = "optax", marker = "extra == 'docs'", specifier = ">=0.0.8,<=0.1.4" }, { name = "optax", marker = "extra == 'dev-dependencies'", specifier = ">=0.0.8,<=0.1.4" }, + { name = "optuna", marker = "extra == 'optuna'" }, + { name = "optuna", marker = "extra == 'integrations'" }, + { name = "optuna", marker = "extra == 'deepspeed-testing'" }, + { name = "optuna", marker = "extra == 'all'" }, + { name = "optuna", marker = "extra == 'docs'" }, { name = "optuna", marker = "extra == 'dev-dependencies'" }, + { name = "packaging", specifier = ">=20.0" }, + { name = "packaging", marker = "extra == 'torchhub'", specifier = ">=20.0" }, + { name = "parameterized", marker = "extra == 'deepspeed-testing'" }, { name = "parameterized", marker = "extra == 'dev-dependencies'" }, + { name = "phonemizer", marker = "extra == 'audio'" }, + { name = "phonemizer", marker = "extra == 'speech'" }, + { name = "phonemizer", marker = "extra == 'torch-speech'" }, + { name = "phonemizer", marker = "extra == 'tf-speech'" }, + { name = "phonemizer", marker = "extra == 'flax-speech'" }, + { name = "phonemizer", marker = "extra == 'all'" }, + { name = "phonemizer", marker = "extra == 'docs'" }, { name = "phonemizer", marker = "extra == 'dev-dependencies'" }, + { name = "pillow", marker = "extra == 'vision'", specifier = ">=10.0.1,<=15.0" }, + { name = "pillow", marker = "extra == 'torch-vision'", specifier = ">=10.0.1,<=15.0" }, + { name = "pillow", marker = "extra == 'all'", specifier = ">=10.0.1,<=15.0" }, + { name = "pillow", marker = "extra == 'docs'", specifier = ">=10.0.1,<=15.0" }, + { name = "pillow", marker = "extra == 'agents'", specifier = ">=10.0.1,<=15.0" }, + { name = "pillow", marker = "extra == 'dev-dependencies'", specifier = ">=10.0.1,<=15.0" }, + { name = "protobuf", marker = "extra == 'sentencepiece'" }, + { name = "protobuf", marker = "extra == 'deepspeed-testing'" }, + { name = "protobuf", marker = "extra == 'all'" }, + { name = "protobuf", marker = "extra == 'docs'" }, + { name = "protobuf", marker = "extra == 'torchhub'" }, { name = "protobuf", marker = "extra == 'dev-dependencies'" }, + { name = "psutil", marker = "extra == 'deepspeed-testing'" }, { name = "psutil", marker = "extra == 'dev-dependencies'" }, + { name = "pyctcdecode", marker = "extra == 'audio'", specifier = ">=0.4.0" }, + { name = "pyctcdecode", marker = "extra == 'speech'", specifier = ">=0.4.0" }, + { name = "pyctcdecode", marker = "extra == 'torch-speech'", specifier = ">=0.4.0" }, + { name = "pyctcdecode", marker = "extra == 'tf-speech'", specifier = ">=0.4.0" }, + { name = "pyctcdecode", marker = "extra == 'flax-speech'", specifier = ">=0.4.0" }, + { name = "pyctcdecode", marker = "extra == 'all'", specifier = ">=0.4.0" }, + { name = "pyctcdecode", marker = "extra == 'docs'", specifier = ">=0.4.0" }, { name = "pyctcdecode", marker = "extra == 'dev-dependencies'", specifier = ">=0.4.0" }, + { name = "pydantic", marker = "extra == 'serving'" }, + { name = "pydantic", marker = "extra == 'deepspeed-testing'" }, { name = "pydantic", marker = "extra == 'dev-dependencies'" }, - { name = "pytest-timeout", marker = "extra == 'dev-dependencies'" }, - { name = "pytest-xdist", marker = "extra == 'dev-dependencies'" }, + { name = "pytest", marker = "extra == 'deepspeed-testing'", specifier = ">=7.2.0,<8.0.0" }, { name = "pytest", marker = "extra == 'dev-dependencies'", specifier = ">=7.2.0,<8.0.0" }, + { name = "pytest-timeout", marker = "extra == 'deepspeed-testing'" }, + { name = "pytest-timeout", marker = "extra == 'dev-dependencies'" }, + { name = "pytest-xdist", marker = "extra == 'deepspeed-testing'" }, + { name = "pytest-xdist", marker = "extra == 'dev-dependencies'" }, + { name = "pyyaml", specifier = ">=5.1" }, + { name = "ray", extras = ["tune"], marker = "extra == 'ray'", specifier = ">=2.7.0" }, + { name = "ray", extras = ["tune"], marker = "extra == 'integrations'", specifier = ">=2.7.0" }, + { name = "ray", extras = ["tune"], marker = "extra == 'all'", specifier = ">=2.7.0" }, + { name = "ray", extras = ["tune"], marker = "extra == 'docs'", specifier = ">=2.7.0" }, { name = "ray", extras = ["tune"], marker = "extra == 'dev-dependencies'", specifier = ">=2.7.0" }, + { name = "regex", specifier = "!=2019.12.17" }, + { name = "regex", marker = "extra == 'torchhub'", specifier = "!=2019.12.17" }, + { name = "requests" }, + { name = "requests", marker = "extra == 'torchhub'" }, + { name = "rhoknp", marker = "extra == 'ja'", specifier = ">=1.1.0,<1.3.1" }, { name = "rhoknp", marker = "extra == 'dev-dependencies'", specifier = ">=1.1.0,<1.3.1" }, + { name = "rjieba", marker = "extra == 'deepspeed-testing'" }, { name = "rjieba", marker = "extra == 'dev-dependencies'" }, + { name = "rouge-score", marker = "extra == 'deepspeed-testing'", specifier = "!=0.0.7,!=0.0.8,!=0.1,!=0.1.1" }, { name = "rouge-score", marker = "extra == 'dev-dependencies'", specifier = "!=0.0.7,!=0.0.8,!=0.1,!=0.1.1" }, + { name = "ruff", marker = "extra == 'deepspeed-testing'", specifier = "==0.1.5" }, + { name = "ruff", marker = "extra == 'quality'", specifier = "==0.1.5" }, { name = "ruff", marker = "extra == 'dev-dependencies'", specifier = "==0.1.5" }, + { name = "sacrebleu", marker = "extra == 'deepspeed-testing'", specifier = ">=1.4.12,<2.0.0" }, { name = "sacrebleu", marker = "extra == 'dev-dependencies'", specifier = ">=1.4.12,<2.0.0" }, + { name = "sacremoses", marker = "extra == 'deepspeed-testing'" }, { name = "sacremoses", marker = "extra == 'dev-dependencies'" }, + { name = "safetensors", specifier = ">=0.4.1" }, + { name = "sagemaker", marker = "extra == 'sagemaker'", specifier = "==2.226.1" }, + { name = "scikit-learn", marker = "extra == 'sklearn'" }, { name = "scikit-learn", marker = "extra == 'dev-dependencies'" }, + { name = "sentencepiece", marker = "extra == 'sentencepiece'", specifier = ">=0.1.91,!=0.1.92" }, + { name = "sentencepiece", marker = "extra == 'deepspeed-testing'", specifier = ">=0.1.91,!=0.1.92" }, + { name = "sentencepiece", marker = "extra == 'all'", specifier = ">=0.1.91,!=0.1.92" }, + { name = "sentencepiece", marker = "extra == 'docs'", specifier = ">=0.1.91,!=0.1.92" }, + { name = "sentencepiece", marker = "extra == 'torchhub'", specifier = ">=0.1.91,!=0.1.92" }, + { name = "sentencepiece", marker = "extra == 'agents'", specifier = ">=0.1.91,!=0.1.92" }, { name = "sentencepiece", marker = "extra == 'dev-dependencies'", specifier = ">=0.1.91,!=0.1.92" }, + { name = "sigopt", marker = "extra == 'sigopt'" }, + { name = "sigopt", marker = "extra == 'integrations'" }, + { name = "sigopt", marker = "extra == 'all'" }, + { name = "sigopt", marker = "extra == 'docs'" }, { name = "sigopt", marker = "extra == 'dev-dependencies'" }, + { name = "starlette", marker = "extra == 'serving'" }, + { name = "sudachidict-core", marker = "extra == 'ja'", specifier = ">=20220729" }, { name = "sudachidict-core", marker = "extra == 'dev-dependencies'", specifier = ">=20220729" }, + { name = "sudachipy", marker = "extra == 'ja'", specifier = ">=0.6.6" }, { name = "sudachipy", marker = "extra == 'dev-dependencies'", specifier = ">=0.6.6" }, + { name = "tensorboard", marker = "extra == 'deepspeed-testing'" }, { name = "tensorboard", marker = "extra == 'dev-dependencies'" }, - { name = "tensorflow-text", marker = "extra == 'dev-dependencies'", specifier = "<2.16" }, + { name = "tensorflow", marker = "extra == 'tf'", specifier = ">=2.6,<2.16" }, + { name = "tensorflow", marker = "extra == 'all'", specifier = ">=2.6,<2.16" }, + { name = "tensorflow", marker = "extra == 'docs'", specifier = ">=2.6,<2.16" }, { name = "tensorflow", marker = "extra == 'dev-dependencies'", specifier = ">=2.6,<2.16" }, + { name = "tensorflow-cpu", marker = "extra == 'tf-cpu'", specifier = ">=2.6,<2.16" }, + { name = "tensorflow-text", marker = "extra == 'tf'", specifier = "<2.16" }, + { name = "tensorflow-text", marker = "extra == 'tf-cpu'", specifier = "<2.16" }, + { name = "tensorflow-text", marker = "extra == 'all'", specifier = "<2.16" }, + { name = "tensorflow-text", marker = "extra == 'docs'", specifier = "<2.16" }, + { name = "tensorflow-text", marker = "extra == 'dev-dependencies'", specifier = "<2.16" }, + { name = "tf2onnx", marker = "extra == 'tf'" }, + { name = "tf2onnx", marker = "extra == 'tf-cpu'" }, + { name = "tf2onnx", marker = "extra == 'onnx'" }, + { name = "tf2onnx", marker = "extra == 'all'" }, + { name = "tf2onnx", marker = "extra == 'docs'" }, { name = "tf2onnx", marker = "extra == 'dev-dependencies'" }, + { name = "timeout-decorator", marker = "extra == 'deepspeed-testing'" }, { name = "timeout-decorator", marker = "extra == 'dev-dependencies'" }, + { name = "timm", marker = "extra == 'timm'" }, + { name = "timm", marker = "extra == 'all'" }, + { name = "timm", marker = "extra == 'docs'" }, { name = "timm", marker = "extra == 'dev-dependencies'" }, + { name = "tokenizers", specifier = ">=0.14,<0.19" }, + { name = "tokenizers", marker = "extra == 'tokenizers'", specifier = ">=0.14,<0.19" }, + { name = "tokenizers", marker = "extra == 'all'", specifier = ">=0.14,<0.19" }, + { name = "tokenizers", marker = "extra == 'docs'", specifier = ">=0.14,<0.19" }, + { name = "tokenizers", marker = "extra == 'torchhub'", specifier = ">=0.14,<0.19" }, { name = "tokenizers", marker = "extra == 'dev-dependencies'", specifier = ">=0.14,<0.19" }, + { name = "torch", marker = "extra == 'torch'" }, + { name = "torch", marker = "extra == 'all'" }, + { name = "torch", marker = "extra == 'docs'" }, + { name = "torch", marker = "extra == 'torchhub'" }, + { name = "torch", marker = "extra == 'agents'" }, { name = "torch", marker = "extra == 'dev-dependencies'" }, + { name = "torchaudio", marker = "extra == 'speech'" }, + { name = "torchaudio", marker = "extra == 'torch-speech'" }, + { name = "torchaudio", marker = "extra == 'all'" }, + { name = "torchaudio", marker = "extra == 'docs'" }, { name = "torchaudio", marker = "extra == 'dev-dependencies'" }, + { name = "torchvision", marker = "extra == 'torch-vision'" }, + { name = "torchvision", marker = "extra == 'all'" }, + { name = "torchvision", marker = "extra == 'docs'" }, { name = "torchvision", marker = "extra == 'dev-dependencies'" }, + { name = "tqdm", specifier = ">=4.27" }, + { name = "tqdm", marker = "extra == 'torchhub'", specifier = ">=4.27" }, + { name = "unidic", marker = "extra == 'ja'", specifier = ">=1.0.2" }, { name = "unidic", marker = "extra == 'dev-dependencies'", specifier = ">=1.0.2" }, + { name = "unidic-lite", marker = "extra == 'ja'", specifier = ">=1.0.7" }, { name = "unidic-lite", marker = "extra == 'dev-dependencies'", specifier = ">=1.0.7" }, + { name = "urllib3", marker = "extra == 'quality'", specifier = "<2.0.0" }, { name = "urllib3", marker = "extra == 'dev-dependencies'", specifier = "<2.0.0" }, + { name = "uvicorn", marker = "extra == 'serving'" }, ] [[package]] diff --git a/crates/uv/tests/snapshots/ecosystem__warehouse-lock-file.snap b/crates/uv/tests/snapshots/ecosystem__warehouse-lock-file.snap index 31ae22370..d6959d6ed 100644 --- a/crates/uv/tests/snapshots/ecosystem__warehouse-lock-file.snap +++ b/crates/uv/tests/snapshots/ecosystem__warehouse-lock-file.snap @@ -4281,8 +4281,8 @@ dev = [ requires-dist = [ { name = "alembic", specifier = ">=0.7.0" }, { name = "alembic-postgresql-enum" }, - { name = "automat" }, { name = "argon2-cffi" }, + { name = "automat" }, { name = "b2sdk" }, { name = "babel" }, { name = "bcrypt" }, @@ -4293,6 +4293,7 @@ requires-dist = [ { name = "click" }, { name = "cryptography" }, { name = "datadog", specifier = ">=0.19.0" }, + { name = "ddtrace", marker = "extra == 'deploy'", specifier = "==2.8.5" }, { name = "disposable-email-domains" }, { name = "elasticsearch", specifier = ">=7.0.0,<7.11.0" }, { name = "elasticsearch-dsl", specifier = ">=7.0.0,<8.0.0" }, @@ -4301,6 +4302,7 @@ requires-dist = [ { name = "github-reserved-names", specifier = ">=1.0.0" }, { name = "google-cloud-bigquery" }, { name = "google-cloud-storage" }, + { name = "gunicorn", marker = "extra == 'deploy'", specifier = "==22.0.0" }, { name = "hiredis" }, { name = "html5lib" }, { name = "humanize" }, @@ -4323,9 +4325,10 @@ requires-dist = [ { name = "psycopg", extras = ["c"] }, { name = "pycurl" }, { name = "pydantic" }, + { name = "pyjwt", extras = ["crypto"], specifier = ">=2.8.0" }, + { name = "pymacaroons" }, { name = "pyqrcode" }, { name = "pyramid", specifier = ">=2.0" }, - { name = "pymacaroons" }, { name = "pyramid-jinja2", specifier = ">=2.5" }, { name = "pyramid-mailer", specifier = ">=0.14.1" }, { name = "pyramid-openapi3", specifier = ">=0.17.1" }, @@ -4335,11 +4338,10 @@ requires-dist = [ { name = "pyramid-tm", specifier = ">=0.12" }, { name = "python-slugify" }, { name = "pytz" }, - { name = "pyjwt", extras = ["crypto"], specifier = ">=2.8.0" }, { name = "readme-renderer", extras = ["md"], specifier = ">=36.0" }, + { name = "redis", specifier = ">=2.8.0,<6.0.0" }, { name = "requests" }, { name = "requests-aws4auth" }, - { name = "redis", specifier = ">=2.8.0,<6.0.0" }, { name = "rfc3986" }, { name = "sentry-sdk" }, { name = "setuptools" }, @@ -4356,13 +4358,10 @@ requires-dist = [ { name = "wtforms", extras = ["email"], specifier = ">=2.0.0" }, { name = "zope-sqlalchemy" }, { name = "zxcvbn" }, - { name = "gunicorn", marker = "extra == 'deploy'", specifier = "==22.0.0" }, - { name = "ddtrace", marker = "extra == 'deploy'", specifier = "==2.8.5" }, ] [package.metadata.requires-dev] dev = [ - { name = "sphinx" }, { name = "asyncudp", specifier = ">=0.7" }, { name = "black", specifier = "==24.4.2" }, { name = "cairosvg" }, @@ -4390,20 +4389,19 @@ dev = [ { name = "pip-tools", specifier = ">=1.0" }, { name = "pretend" }, { name = "pyramid-debugtoolbar", specifier = ">=2.5" }, + { name = "pytest", specifier = ">=3.0.0" }, { name = "pytest-icdiff" }, { name = "pytest-postgresql", specifier = ">=3.1.3,<7.0.0" }, { name = "pytest-randomly" }, { name = "pytest-socket" }, - { name = "pytest", specifier = ">=3.0.0" }, { name = "pytz" }, { name = "pyupgrade" }, { name = "repository-service-tuf" }, { name = "responses", specifier = ">=0.5.1" }, + { name = "sphinx" }, { name = "sphinx-autobuild" }, { name = "sphinxcontrib-httpdomain" }, { name = "sphinxcontrib-mermaid" }, - { name = "types-wtforms" }, - { name = "types-webob" }, { name = "types-babel" }, { name = "types-boto3" }, { name = "types-certifi" }, @@ -4417,6 +4415,8 @@ dev = [ { name = "types-requests", specifier = "==2.31.0.6" }, { name = "types-setuptools" }, { name = "types-stripe" }, + { name = "types-webob" }, + { name = "types-wtforms" }, { name = "types-zxcvbn" }, { name = "webtest" }, ] diff --git a/scripts/popular_packages/pypi_10k_most_dependents.ipynb b/scripts/popular_packages/pypi_10k_most_dependents.ipynb index 4c521fe3e..9dcf3c0d1 100644 --- a/scripts/popular_packages/pypi_10k_most_dependents.ipynb +++ b/scripts/popular_packages/pypi_10k_most_dependents.ipynb @@ -12,10 +12,10 @@ "The latest version is available at: https://gist.github.com/charliermarsh/07afd9f543dfea68408a4a42cede4be4.\n", "\"\"\"\n", "\n", - "import httpx\n", - "\n", "from pathlib import Path\n", "\n", + "import httpx\n", + "\n", "api_key = \"\"\n", "responses = {}" ] @@ -32,9 +32,9 @@ }, "outputs": [], "source": [ - "for i in range(100): # 100 pages with 100 per page -> 10k\n", + "for i in range(100): # 100 pages with 100 per page -> 10k\n", " print(i)\n", - " if not i in responses:\n", + " if i not in responses:\n", " # https://libraries.io/api#project-search\n", " sort = \"dependents_count\"\n", " url = f\"https://libraries.io/api/search?platforms=Pypi&per_page=100&page={i+1}&sort{sort}&api_key={api_key}\"\n",