From 14507a1793f12bf884786be49d716ca8f8322340 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Tue, 1 Oct 2024 20:15:32 -0400 Subject: [PATCH] Add `uv-` prefix to all internal crates (#7853) ## Summary Brings more consistency to the repo and ensures that all crates automatically show up in `--verbose` logging. --- .github/workflows/ci.yml | 2 +- Cargo.lock | 666 +++++++++--------- Cargo.toml | 23 +- crates/uv-auth/Cargo.toml | 3 +- crates/uv-auth/src/cache.rs | 2 +- crates/{bench => uv-bench}/Cargo.toml | 16 +- .../benches/distribution_filename.rs | 10 +- crates/{bench => uv-bench}/benches/uv.rs | 28 +- .../inputs/platform_tags.rs | 0 crates/{bench => uv-bench}/src/lib.rs | 0 crates/uv-build-frontend/Cargo.toml | 8 +- crates/uv-build-frontend/src/error.rs | 8 +- crates/uv-build-frontend/src/lib.rs | 14 +- crates/{cache-key => uv-cache-key}/Cargo.toml | 2 +- .../src/cache_key.rs | 0 .../src/canonical_url.rs | 0 .../{cache-key => uv-cache-key}/src/digest.rs | 0 crates/{cache-key => uv-cache-key}/src/lib.rs | 0 crates/uv-cache/Cargo.toml | 6 +- crates/uv-cache/src/lib.rs | 4 +- crates/uv-cache/src/wheel.rs | 4 +- crates/uv-cli/Cargo.toml | 8 +- crates/uv-cli/src/lib.rs | 6 +- crates/uv-client/Cargo.toml | 14 +- crates/uv-client/src/base_client.rs | 4 +- crates/uv-client/src/error.rs | 6 +- crates/uv-client/src/flat_index.rs | 12 +- crates/uv-client/src/html.rs | 10 +- crates/uv-client/src/linehaul.rs | 8 +- crates/uv-client/src/registry_client.rs | 24 +- crates/uv-client/src/remote_metadata.rs | 2 +- crates/uv-client/tests/remote_metadata.rs | 6 +- crates/uv-client/tests/user_agent_version.rs | 4 +- crates/uv-configuration/Cargo.toml | 8 +- crates/uv-configuration/src/build_options.rs | 2 +- .../uv-configuration/src/config_settings.rs | 4 +- crates/uv-configuration/src/constraints.rs | 4 +- .../uv-configuration/src/install_options.rs | 2 +- .../uv-configuration/src/name_specifiers.rs | 2 +- crates/uv-configuration/src/overrides.rs | 4 +- .../uv-configuration/src/package_options.rs | 4 +- crates/uv-configuration/src/target_triple.rs | 4 +- crates/uv-dev/Cargo.toml | 8 +- crates/uv-dev/src/wheel_metadata.rs | 8 +- crates/uv-dispatch/Cargo.toml | 6 +- crates/uv-dispatch/src/lib.rs | 14 +- .../Cargo.toml | 6 +- .../src/build_tag.rs | 0 .../src/egg.rs | 2 +- .../src/extension.rs | 0 .../src/lib.rs | 2 +- ...filename__wheel__tests__ok_build_tag.snap} | 2 +- ...name__wheel__tests__ok_multiple_tags.snap} | 2 +- ...lename__wheel__tests__ok_single_tags.snap} | 2 +- .../src/source_dist.rs | 2 +- .../src/wheel.rs | 4 +- .../Cargo.toml | 14 +- .../src/annotation.rs | 2 +- .../src/any.rs | 0 .../src/buildable.rs | 6 +- .../src/cached.rs | 6 +- .../src/dependency_metadata.rs | 6 +- .../src/diagnostic.rs | 0 .../src/error.rs | 2 +- .../src/file.rs | 12 +- .../src/hash.rs | 2 +- .../src/id.rs | 6 +- .../src/index_url.rs | 2 +- .../src/installed.rs | 16 +- .../src/lib.rs | 12 +- .../src/prioritized_distribution.rs | 8 +- .../src/resolution.rs | 18 +- .../src/resolved.rs | 4 +- .../src/specified_requirement.rs | 6 +- .../src/traits.rs | 4 +- crates/uv-distribution/Cargo.toml | 14 +- crates/uv-distribution/src/archive.rs | 4 +- .../src/distribution_database.rs | 14 +- crates/uv-distribution/src/download.rs | 6 +- crates/uv-distribution/src/error.rs | 16 +- .../src/index/built_wheel_index.rs | 17 +- .../uv-distribution/src/index/cached_wheel.rs | 8 +- .../src/index/registry_wheel_index.rs | 4 +- crates/uv-distribution/src/locks.rs | 2 +- .../uv-distribution/src/metadata/lowering.rs | 18 +- crates/uv-distribution/src/metadata/mod.rs | 12 +- .../src/metadata/requires_dist.rs | 18 +- crates/uv-distribution/src/reporter.rs | 4 +- .../src/source/built_wheel_metadata.rs | 8 +- crates/uv-distribution/src/source/mod.rs | 69 +- crates/uv-distribution/src/source/revision.rs | 4 +- crates/uv-extract/Cargo.toml | 4 +- crates/uv-extract/src/hash.rs | 2 +- crates/uv-extract/src/stream.rs | 2 +- crates/uv-git/Cargo.toml | 2 +- crates/uv-git/src/credentials.rs | 2 +- crates/uv-git/src/resolver.rs | 4 +- crates/uv-git/src/source.rs | 2 +- .../Cargo.toml | 10 +- .../src/lib.rs | 10 +- .../src/linker.rs | 4 +- .../src/record.rs | 0 .../src/script.rs | 0 .../src/uninstall.rs | 0 .../src/wheel.rs | 2 +- crates/uv-installer/Cargo.toml | 16 +- crates/uv-installer/src/installer.rs | 4 +- crates/uv-installer/src/plan.rs | 12 +- crates/uv-installer/src/preparer.rs | 10 +- crates/uv-installer/src/satisfies.rs | 6 +- crates/uv-installer/src/site_packages.rs | 14 +- crates/uv-installer/src/uninstall.rs | 2 +- crates/uv-metadata/Cargo.toml | 4 +- crates/uv-metadata/src/lib.rs | 8 +- crates/{once-map => uv-once-map}/Cargo.toml | 2 +- crates/{once-map => uv-once-map}/src/lib.rs | 0 crates/{pep440-rs => uv-pep440}/CHANGELOG.md | 0 crates/{pep440-rs => uv-pep440}/Cargo.toml | 4 +- .../{pep440-rs => uv-pep440}/License-Apache | 0 crates/{pep440-rs => uv-pep440}/License-BSD | 0 crates/{pep440-rs => uv-pep440}/Readme.md | 0 crates/{pep440-rs => uv-pep440}/src/lib.rs | 2 +- .../{pep440-rs => uv-pep440}/src/version.rs | 2 +- .../src/version_specifier.rs | 4 +- crates/{pep508-rs => uv-pep508}/Cargo.toml | 19 +- crates/{pep508-rs => uv-pep508}/Changelog.md | 0 .../{pep508-rs => uv-pep508}/License-Apache | 0 crates/{pep508-rs => uv-pep508}/License-BSD | 0 crates/{pep508-rs => uv-pep508}/Readme.md | 0 crates/{pep508-rs => uv-pep508}/src/cursor.rs | 0 crates/{pep508-rs => uv-pep508}/src/lib.rs | 10 +- .../src/marker/algebra.rs | 4 +- .../src/marker/environment.rs | 2 +- .../src/marker/mod.rs | 0 .../src/marker/parse.rs | 2 +- .../src/marker/simplify.rs | 2 +- .../src/marker/tree.rs | 22 +- crates/{pep508-rs => uv-pep508}/src/origin.rs | 0 .../{pep508-rs => uv-pep508}/src/unnamed.rs | 0 .../src/verbatim_url.rs | 0 .../Cargo.toml | 2 +- .../src/lib.rs | 0 .../src/platform.rs | 0 .../src/tags.rs | 0 crates/uv-pubgrub/Cargo.toml | 2 +- crates/uv-pubgrub/src/lib.rs | 2 +- crates/uv-publish/Cargo.toml | 4 +- crates/uv-publish/src/lib.rs | 6 +- .../{pypi-types => uv-pypi-types}/Cargo.toml | 8 +- .../src/base_url.rs | 0 .../src/direct_url.rs | 0 .../src/lenient_requirement.rs | 8 +- .../{pypi-types => uv-pypi-types}/src/lib.rs | 0 .../src/marker_environment.rs | 2 +- .../src/metadata/metadata10.rs | 0 .../src/metadata/metadata12.rs | 2 +- .../src/metadata/metadata23.rs | 0 .../src/metadata/metadata_resolver.rs | 6 +- .../src/metadata/mod.rs | 4 +- .../src/metadata/pyproject_toml.rs | 6 +- .../src/metadata/requires_txt.rs | 4 +- .../src/parsed_url.rs | 4 +- .../src/requirement.rs | 32 +- .../src/scheme.rs | 0 .../src/simple_json.rs | 2 +- .../src/supported_environments.rs | 2 +- crates/uv-python/Cargo.toml | 14 +- crates/uv-python/src/discovery.rs | 4 +- crates/uv-python/src/downloads.rs | 4 +- crates/uv-python/src/environment.rs | 3 +- crates/uv-python/src/installation.rs | 2 +- crates/uv-python/src/interpreter.rs | 14 +- crates/uv-python/src/platform.rs | 52 +- crates/uv-python/src/prefix.rs | 2 +- crates/uv-python/src/python_version.rs | 6 +- crates/uv-python/src/target.rs | 2 +- crates/uv-python/src/virtualenv.rs | 2 +- .../Cargo.toml | 8 +- .../src/lib.rs | 10 +- .../src/requirement.rs | 18 +- ...ts_txt__test__line-endings-basic.txt.snap} | 2 +- ...test__line-endings-constraints-a.txt.snap} | 2 +- ...test__line-endings-constraints-b.txt.snap} | 2 +- ...ts_txt__test__line-endings-empty.txt.snap} | 2 +- ...t__test__line-endings-for-poetry.txt.snap} | 2 +- ...xt__test__line-endings-include-a.txt.snap} | 2 +- ...xt__test__line-endings-include-b.txt.snap} | 2 +- ..._line-endings-poetry-with-hashes.txt.snap} | 2 +- ...ts_txt__test__line-endings-small.txt.snap} | 2 +- ...t__test__line-endings-whitespace.txt.snap} | 2 +- ...uirements_txt__test__parse-basic.txt.snap} | 2 +- ...s_txt__test__parse-constraints-a.txt.snap} | 2 +- ...s_txt__test__parse-constraints-b.txt.snap} | 2 +- ...uirements_txt__test__parse-empty.txt.snap} | 2 +- ...ents_txt__test__parse-for-poetry.txt.snap} | 2 +- ...ments_txt__test__parse-include-a.txt.snap} | 2 +- ...ments_txt__test__parse-include-b.txt.snap} | 2 +- ...__test__parse-poetry-with-hashes.txt.snap} | 2 +- ...uirements_txt__test__parse-small.txt.snap} | 2 +- ...s_txt__test__parse-unix-bare-url.txt.snap} | 2 +- ...s_txt__test__parse-unix-editable.txt.snap} | 2 +- ...ments_txt__test__parse-unix-hash.txt.snap} | 2 +- ..._txt__test__parse-unix-semicolon.txt.snap} | 2 +- ...ents_txt__test__parse-whitespace.txt.snap} | 2 +- ...xt__test__parse-windows-bare-url.txt.snap} | 0 ...xt__test__parse-windows-editable.txt.snap} | 0 .../test-data/requirements-txt/bare-url.txt | 0 .../test-data/requirements-txt/basic.txt | 0 .../requirements-txt/constraints-a.txt | 0 .../requirements-txt/constraints-b.txt | 0 .../test-data/requirements-txt/editable.txt | 0 .../test-data/requirements-txt/empty.txt | 0 .../test-data/requirements-txt/for-poetry.txt | 0 .../test-data/requirements-txt/hash.txt | 0 .../test-data/requirements-txt/include-a.txt | 0 .../test-data/requirements-txt/include-b.txt | 0 .../requirements-txt/poetry-with-hashes.txt | 0 .../test-data/requirements-txt/semicolon.txt | 0 .../test-data/requirements-txt/small.txt | 0 .../test-data/requirements-txt/whitespace.txt | 0 crates/uv-requirements/Cargo.toml | 12 +- crates/uv-requirements/src/lookahead.rs | 8 +- crates/uv-requirements/src/source_tree.rs | 8 +- crates/uv-requirements/src/specification.rs | 16 +- crates/uv-requirements/src/unnamed.rs | 32 +- crates/uv-requirements/src/upgrade.rs | 2 +- crates/uv-resolver/Cargo.toml | 18 +- crates/uv-resolver/src/candidate_selector.rs | 12 +- crates/uv-resolver/src/dependency_provider.rs | 2 +- crates/uv-resolver/src/error.rs | 12 +- crates/uv-resolver/src/exclusions.rs | 2 +- crates/uv-resolver/src/flat_index.rs | 14 +- crates/uv-resolver/src/fork_urls.rs | 4 +- crates/uv-resolver/src/graph_ops.rs | 2 +- crates/uv-resolver/src/lock/mod.rs | 96 +-- .../uv-resolver/src/lock/requirements_txt.rs | 6 +- crates/uv-resolver/src/lock/tree.rs | 2 +- crates/uv-resolver/src/manifest.rs | 2 +- crates/uv-resolver/src/marker.rs | 4 +- crates/uv-resolver/src/pins.rs | 6 +- crates/uv-resolver/src/preferences.rs | 10 +- crates/uv-resolver/src/prerelease.rs | 4 +- .../uv-resolver/src/pubgrub/dependencies.rs | 6 +- .../uv-resolver/src/pubgrub/distribution.rs | 6 +- crates/uv-resolver/src/pubgrub/package.rs | 2 +- crates/uv-resolver/src/pubgrub/priority.rs | 2 +- crates/uv-resolver/src/pubgrub/report.rs | 4 +- crates/uv-resolver/src/python_requirement.rs | 4 +- crates/uv-resolver/src/redirect.rs | 6 +- crates/uv-resolver/src/requires_python.rs | 10 +- crates/uv-resolver/src/resolution/display.rs | 6 +- crates/uv-resolver/src/resolution/graph.rs | 18 +- crates/uv-resolver/src/resolution/mod.rs | 10 +- .../src/resolution/requirements_txt.rs | 8 +- .../uv-resolver/src/resolver/availability.rs | 4 +- .../src/resolver/batch_prefetch.rs | 4 +- crates/uv-resolver/src/resolver/fork_map.rs | 4 +- crates/uv-resolver/src/resolver/index.rs | 4 +- crates/uv-resolver/src/resolver/locals.rs | 22 +- crates/uv-resolver/src/resolver/mod.rs | 18 +- crates/uv-resolver/src/resolver/provider.rs | 6 +- crates/uv-resolver/src/resolver/reporter.rs | 2 +- .../src/resolver/resolver_markers.rs | 4 +- crates/uv-resolver/src/resolver/urls.rs | 8 +- crates/uv-resolver/src/version_map.rs | 14 +- crates/uv-resolver/src/yanks.rs | 6 +- crates/uv-scripts/Cargo.toml | 6 +- crates/uv-scripts/src/lib.rs | 8 +- crates/uv-settings/Cargo.toml | 8 +- crates/uv-settings/src/combine.rs | 4 +- crates/uv-settings/src/settings.rs | 6 +- crates/uv-tool/Cargo.toml | 8 +- crates/uv-tool/src/lib.rs | 4 +- crates/uv-tool/src/tool.rs | 4 +- crates/uv-types/Cargo.toml | 12 +- crates/uv-types/src/builds.rs | 2 +- crates/uv-types/src/downloads.rs | 4 +- crates/uv-types/src/hash.rs | 12 +- crates/uv-types/src/requirements.rs | 2 +- crates/uv-types/src/traits.rs | 10 +- crates/uv-virtualenv/Cargo.toml | 4 +- crates/uv-virtualenv/src/lib.rs | 2 +- crates/uv-virtualenv/src/virtualenv.rs | 2 +- crates/uv-workspace/Cargo.toml | 8 +- crates/uv-workspace/src/pyproject.rs | 36 +- crates/uv-workspace/src/pyproject_mut.rs | 4 +- crates/uv-workspace/src/workspace.rs | 6 +- crates/uv/Cargo.toml | 20 +- crates/uv/src/commands/build.rs | 4 +- crates/uv/src/commands/diagnostics.rs | 2 +- crates/uv/src/commands/mod.rs | 2 +- crates/uv/src/commands/pip/check.rs | 2 +- crates/uv/src/commands/pip/compile.rs | 10 +- crates/uv/src/commands/pip/freeze.rs | 2 +- crates/uv/src/commands/pip/install.rs | 12 +- crates/uv/src/commands/pip/list.rs | 2 +- crates/uv/src/commands/pip/loggers.rs | 4 +- crates/uv/src/commands/pip/mod.rs | 4 +- crates/uv/src/commands/pip/operations.rs | 18 +- crates/uv/src/commands/pip/show.rs | 2 +- crates/uv/src/commands/pip/sync.rs | 4 +- crates/uv/src/commands/pip/tree.rs | 4 +- crates/uv/src/commands/pip/uninstall.rs | 8 +- crates/uv/src/commands/project/add.rs | 16 +- crates/uv/src/commands/project/environment.rs | 4 +- crates/uv/src/commands/project/init.rs | 4 +- crates/uv/src/commands/project/lock.rs | 12 +- crates/uv/src/commands/project/mod.rs | 12 +- crates/uv/src/commands/project/remove.rs | 2 +- crates/uv/src/commands/project/sync.rs | 18 +- crates/uv/src/commands/project/tree.rs | 2 +- crates/uv/src/commands/python/pin.rs | 6 +- crates/uv/src/commands/reporters.rs | 2 +- crates/uv/src/commands/tool/common.rs | 6 +- crates/uv/src/commands/tool/install.rs | 8 +- crates/uv/src/commands/tool/mod.rs | 2 +- crates/uv/src/commands/tool/run.rs | 10 +- crates/uv/src/commands/venv.rs | 14 +- crates/uv/src/settings.rs | 6 +- 319 files changed, 1327 insertions(+), 1317 deletions(-) rename crates/{bench => uv-bench}/Cargo.toml (79%) rename crates/{bench => uv-bench}/benches/distribution_filename.rs (97%) rename crates/{bench => uv-bench}/benches/uv.rs (89%) rename crates/{bench => uv-bench}/inputs/platform_tags.rs (100%) rename crates/{bench => uv-bench}/src/lib.rs (100%) rename crates/{cache-key => uv-cache-key}/Cargo.toml (95%) rename crates/{cache-key => uv-cache-key}/src/cache_key.rs (100%) rename crates/{cache-key => uv-cache-key}/src/canonical_url.rs (100%) rename crates/{cache-key => uv-cache-key}/src/digest.rs (100%) rename crates/{cache-key => uv-cache-key}/src/lib.rs (100%) rename crates/{distribution-filename => uv-distribution-filename}/Cargo.toml (82%) rename crates/{distribution-filename => uv-distribution-filename}/src/build_tag.rs (100%) rename crates/{distribution-filename => uv-distribution-filename}/src/egg.rs (98%) rename crates/{distribution-filename => uv-distribution-filename}/src/extension.rs (100%) rename crates/{distribution-filename => uv-distribution-filename}/src/lib.rs (99%) rename crates/{distribution-filename/src/snapshots/distribution_filename__wheel__tests__ok_build_tag.snap => uv-distribution-filename/src/snapshots/uv_distribution_filename__wheel__tests__ok_build_tag.snap} (90%) rename crates/{distribution-filename/src/snapshots/distribution_filename__wheel__tests__ok_multiple_tags.snap => uv-distribution-filename/src/snapshots/uv_distribution_filename__wheel__tests__ok_multiple_tags.snap} (90%) rename crates/{distribution-filename/src/snapshots/distribution_filename__wheel__tests__ok_single_tags.snap => uv-distribution-filename/src/snapshots/uv_distribution_filename__wheel__tests__ok_single_tags.snap} (87%) rename crates/{distribution-filename => uv-distribution-filename}/src/source_dist.rs (99%) rename crates/{distribution-filename => uv-distribution-filename}/src/wheel.rs (99%) rename crates/{distribution-types => uv-distribution-types}/Cargo.toml (75%) rename crates/{distribution-types => uv-distribution-types}/src/annotation.rs (98%) rename crates/{distribution-types => uv-distribution-types}/src/any.rs (100%) rename crates/{distribution-types => uv-distribution-types}/src/buildable.rs (98%) rename crates/{distribution-types => uv-distribution-types}/src/cached.rs (98%) rename crates/{distribution-types => uv-distribution-types}/src/dependency_metadata.rs (95%) rename crates/{distribution-types => uv-distribution-types}/src/diagnostic.rs (100%) rename crates/{distribution-types => uv-distribution-types}/src/error.rs (88%) rename crates/{distribution-types => uv-distribution-types}/src/file.rs (95%) rename crates/{distribution-types => uv-distribution-types}/src/hash.rs (98%) rename crates/{distribution-types => uv-distribution-types}/src/id.rs (97%) rename crates/{distribution-types => uv-distribution-types}/src/index_url.rs (99%) rename crates/{distribution-types => uv-distribution-types}/src/installed.rs (96%) rename crates/{distribution-types => uv-distribution-types}/src/lib.rs (99%) rename crates/{distribution-types => uv-distribution-types}/src/prioritized_distribution.rs (99%) rename crates/{distribution-types => uv-distribution-types}/src/resolution.rs (94%) rename crates/{distribution-types => uv-distribution-types}/src/resolved.rs (99%) rename crates/{distribution-types => uv-distribution-types}/src/specified_requirement.rs (96%) rename crates/{distribution-types => uv-distribution-types}/src/traits.rs (98%) rename crates/{install-wheel-rs => uv-install-wheel}/Cargo.toml (88%) rename crates/{install-wheel-rs => uv-install-wheel}/src/lib.rs (94%) rename crates/{install-wheel-rs => uv-install-wheel}/src/linker.rs (99%) rename crates/{install-wheel-rs => uv-install-wheel}/src/record.rs (100%) rename crates/{install-wheel-rs => uv-install-wheel}/src/script.rs (100%) rename crates/{install-wheel-rs => uv-install-wheel}/src/uninstall.rs (100%) rename crates/{install-wheel-rs => uv-install-wheel}/src/wheel.rs (99%) rename crates/{once-map => uv-once-map}/Cargo.toml (94%) rename crates/{once-map => uv-once-map}/src/lib.rs (100%) rename crates/{pep440-rs => uv-pep440}/CHANGELOG.md (100%) rename crates/{pep440-rs => uv-pep440}/Cargo.toml (95%) rename crates/{pep440-rs => uv-pep440}/License-Apache (100%) rename crates/{pep440-rs => uv-pep440}/License-BSD (100%) rename crates/{pep440-rs => uv-pep440}/Readme.md (100%) rename crates/{pep440-rs => uv-pep440}/src/lib.rs (97%) rename crates/{pep440-rs => uv-pep440}/src/version.rs (99%) rename crates/{pep440-rs => uv-pep440}/src/version_specifier.rs (99%) rename crates/{pep508-rs => uv-pep508}/Cargo.toml (94%) rename crates/{pep508-rs => uv-pep508}/Changelog.md (100%) rename crates/{pep508-rs => uv-pep508}/License-Apache (100%) rename crates/{pep508-rs => uv-pep508}/License-BSD (100%) rename crates/{pep508-rs => uv-pep508}/Readme.md (100%) rename crates/{pep508-rs => uv-pep508}/src/cursor.rs (100%) rename crates/{pep508-rs => uv-pep508}/src/lib.rs (99%) rename crates/{pep508-rs => uv-pep508}/src/marker/algebra.rs (99%) rename crates/{pep508-rs => uv-pep508}/src/marker/environment.rs (99%) rename crates/{pep508-rs => uv-pep508}/src/marker/mod.rs (100%) rename crates/{pep508-rs => uv-pep508}/src/marker/parse.rs (99%) rename crates/{pep508-rs => uv-pep508}/src/marker/simplify.rs (99%) rename crates/{pep508-rs => uv-pep508}/src/marker/tree.rs (99%) rename crates/{pep508-rs => uv-pep508}/src/origin.rs (100%) rename crates/{pep508-rs => uv-pep508}/src/unnamed.rs (100%) rename crates/{pep508-rs => uv-pep508}/src/verbatim_url.rs (100%) rename crates/{platform-tags => uv-platform-tags}/Cargo.toml (94%) rename crates/{platform-tags => uv-platform-tags}/src/lib.rs (100%) rename crates/{platform-tags => uv-platform-tags}/src/platform.rs (100%) rename crates/{platform-tags => uv-platform-tags}/src/tags.rs (100%) rename crates/{pypi-types => uv-pypi-types}/Cargo.toml (86%) rename crates/{pypi-types => uv-pypi-types}/src/base_url.rs (100%) rename crates/{pypi-types => uv-pypi-types}/src/direct_url.rs (100%) rename crates/{pypi-types => uv-pypi-types}/src/lenient_requirement.rs (98%) rename crates/{pypi-types => uv-pypi-types}/src/lib.rs (100%) rename crates/{pypi-types => uv-pypi-types}/src/marker_environment.rs (97%) rename crates/{pypi-types => uv-pypi-types}/src/metadata/metadata10.rs (100%) rename crates/{pypi-types => uv-pypi-types}/src/metadata/metadata12.rs (98%) rename crates/{pypi-types => uv-pypi-types}/src/metadata/metadata23.rs (100%) rename crates/{pypi-types => uv-pypi-types}/src/metadata/metadata_resolver.rs (98%) rename crates/{pypi-types => uv-pypi-types}/src/metadata/mod.rs (97%) rename crates/{pypi-types => uv-pypi-types}/src/metadata/pyproject_toml.rs (99%) rename crates/{pypi-types => uv-pypi-types}/src/metadata/requires_txt.rs (98%) rename crates/{pypi-types => uv-pypi-types}/src/parsed_url.rs (99%) rename crates/{pypi-types => uv-pypi-types}/src/requirement.rs (97%) rename crates/{pypi-types => uv-pypi-types}/src/scheme.rs (100%) rename crates/{pypi-types => uv-pypi-types}/src/simple_json.rs (99%) rename crates/{pypi-types => uv-pypi-types}/src/supported_environments.rs (98%) rename crates/{requirements-txt => uv-requirements-txt}/Cargo.toml (88%) rename crates/{requirements-txt => uv-requirements-txt}/src/lib.rs (99%) rename crates/{requirements-txt => uv-requirements-txt}/src/requirement.rs (93%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-basic.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-basic.txt.snap} (99%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-constraints-a.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-constraints-a.txt.snap} (98%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-constraints-b.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-constraints-b.txt.snap} (97%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-empty.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-empty.txt.snap} (83%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-for-poetry.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-for-poetry.txt.snap} (98%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-include-a.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-include-a.txt.snap} (97%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-include-b.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-include-b.txt.snap} (94%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-poetry-with-hashes.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-poetry-with-hashes.txt.snap} (99%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__line-endings-small.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-small.txt.snap} (97%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-whitespace.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-whitespace.txt.snap} (98%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__line-endings-basic.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-basic.txt.snap} (99%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__line-endings-constraints-a.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-constraints-a.txt.snap} (98%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__line-endings-constraints-b.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-constraints-b.txt.snap} (97%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__line-endings-empty.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-empty.txt.snap} (83%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__line-endings-for-poetry.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-for-poetry.txt.snap} (98%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__line-endings-include-a.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-include-a.txt.snap} (97%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__line-endings-include-b.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-include-b.txt.snap} (94%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__line-endings-poetry-with-hashes.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-poetry-with-hashes.txt.snap} (99%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-small.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-small.txt.snap} (97%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-unix-bare-url.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-bare-url.txt.snap} (99%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-unix-editable.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-editable.txt.snap} (99%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-unix-hash.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-hash.txt.snap} (89%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-unix-semicolon.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-semicolon.txt.snap} (90%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__line-endings-whitespace.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-whitespace.txt.snap} (98%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-windows-bare-url.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-windows-bare-url.txt.snap} (100%) rename crates/{requirements-txt/src/snapshots/requirements_txt__test__parse-windows-editable.txt.snap => uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-windows-editable.txt.snap} (100%) rename crates/{requirements-txt => uv-requirements-txt}/test-data/requirements-txt/bare-url.txt (100%) rename crates/{requirements-txt => uv-requirements-txt}/test-data/requirements-txt/basic.txt (100%) rename crates/{requirements-txt => uv-requirements-txt}/test-data/requirements-txt/constraints-a.txt (100%) rename crates/{requirements-txt => uv-requirements-txt}/test-data/requirements-txt/constraints-b.txt (100%) rename crates/{requirements-txt => uv-requirements-txt}/test-data/requirements-txt/editable.txt (100%) rename crates/{requirements-txt => uv-requirements-txt}/test-data/requirements-txt/empty.txt (100%) rename crates/{requirements-txt => uv-requirements-txt}/test-data/requirements-txt/for-poetry.txt (100%) rename crates/{requirements-txt => uv-requirements-txt}/test-data/requirements-txt/hash.txt (100%) rename crates/{requirements-txt => uv-requirements-txt}/test-data/requirements-txt/include-a.txt (100%) rename crates/{requirements-txt => uv-requirements-txt}/test-data/requirements-txt/include-b.txt (100%) rename crates/{requirements-txt => uv-requirements-txt}/test-data/requirements-txt/poetry-with-hashes.txt (100%) rename crates/{requirements-txt => uv-requirements-txt}/test-data/requirements-txt/semicolon.txt (100%) rename crates/{requirements-txt => uv-requirements-txt}/test-data/requirements-txt/small.txt (100%) rename crates/{requirements-txt => uv-requirements-txt}/test-data/requirements-txt/whitespace.txt (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 44a234daa..31fba8543 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1692,7 +1692,7 @@ jobs: cargo run --bin uv -- pip compile scripts/requirements/airflow.in --universal --exclude-newer 2024-08-08 --cache-dir .cache - name: "Build benchmarks" - run: cargo codspeed build --profile profiling --features codspeed -p bench + run: cargo codspeed build --profile profiling --features codspeed -p uv-bench - name: "Run benchmarks" uses: CodSpeedHQ/action@v3 diff --git a/Cargo.lock b/Cargo.lock index 3ae0f1aac..00d2d1969 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -332,33 +332,6 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "bench" -version = "0.0.0" -dependencies = [ - "anyhow", - "codspeed-criterion-compat", - "criterion", - "distribution-filename", - "distribution-types", - "install-wheel-rs", - "jiff", - "pep440_rs", - "pep508_rs", - "platform-tags", - "pypi-types", - "tokio", - "uv-cache", - "uv-client", - "uv-configuration", - "uv-dispatch", - "uv-distribution", - "uv-git", - "uv-python", - "uv-resolver", - "uv-types", -] - [[package]] name = "bisection" version = "0.1.0" @@ -477,15 +450,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "cache-key" -version = "0.0.1" -dependencies = [ - "hex", - "seahash", - "url", -] - [[package]] name = "cachedir" version = "0.3.1" @@ -974,49 +938,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "distribution-filename" -version = "0.0.1" -dependencies = [ - "insta", - "pep440_rs", - "platform-tags", - "rkyv", - "serde", - "thiserror", - "url", - "uv-normalize", -] - -[[package]] -name = "distribution-types" -version = "0.0.1" -dependencies = [ - "anyhow", - "cache-key", - "distribution-filename", - "fs-err", - "itertools 0.13.0", - "jiff", - "pep440_rs", - "pep508_rs", - "platform-tags", - "pypi-types", - "rkyv", - "rustc-hash", - "schemars", - "serde", - "serde_json", - "thiserror", - "tracing", - "url", - "urlencoding", - "uv-cache-info", - "uv-fs", - "uv-git", - "uv-normalize", -] - [[package]] name = "doc-comment" version = "0.3.3" @@ -1703,43 +1624,6 @@ dependencies = [ "similar", ] -[[package]] -name = "install-wheel-rs" -version = "0.0.1" -dependencies = [ - "anyhow", - "assert_fs", - "clap", - "configparser", - "csv", - "data-encoding", - "distribution-filename", - "fs-err", - "indoc", - "mailparse", - "pathdiff", - "pep440_rs", - "platform-info", - "platform-tags", - "pypi-types", - "reflink-copy", - "regex", - "rustc-hash", - "schemars", - "serde", - "serde_json", - "sha2", - "tempfile", - "thiserror", - "tracing", - "uv-cache-info", - "uv-fs", - "uv-normalize", - "uv-warnings", - "walkdir", - "zip", -] - [[package]] name = "instant" version = "0.1.13" @@ -2271,15 +2155,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "once-map" -version = "0.0.1" -dependencies = [ - "dashmap", - "futures", - "tokio", -] - [[package]] name = "once_cell" version = "1.20.0" @@ -2388,45 +2263,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" -[[package]] -name = "pep440_rs" -version = "0.7.0" -dependencies = [ - "indoc", - "rkyv", - "serde", - "tracing", - "unicode-width", - "unscanny", -] - -[[package]] -name = "pep508_rs" -version = "0.6.0" -dependencies = [ - "boxcar", - "indexmap", - "insta", - "itertools 0.13.0", - "log", - "pep440_rs", - "pubgrub", - "regex", - "rustc-hash", - "schemars", - "serde", - "serde_json", - "smallvec", - "testing_logger", - "thiserror", - "tracing", - "unicode-width", - "url", - "uv-fs", - "uv-normalize", - "uv-pubgrub", -] - [[package]] name = "percent-encoding" version = "2.3.1" @@ -2554,16 +2390,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "platform-tags" -version = "0.0.1" -dependencies = [ - "insta", - "rustc-hash", - "serde", - "thiserror", -] - [[package]] name = "png" version = "0.17.13" @@ -2693,32 +2519,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "pypi-types" -version = "0.0.1" -dependencies = [ - "anyhow", - "distribution-filename", - "indexmap", - "itertools 0.13.0", - "jiff", - "mailparse", - "pep440_rs", - "pep508_rs", - "regex", - "rkyv", - "serde", - "serde-untagged", - "thiserror", - "toml", - "toml_edit", - "tracing", - "url", - "uv-fs", - "uv-git", - "uv-normalize", -] - [[package]] name = "quinn" version = "0.11.5" @@ -2949,36 +2749,6 @@ dependencies = [ "bytecheck", ] -[[package]] -name = "requirements-txt" -version = "0.0.1" -dependencies = [ - "anyhow", - "assert_fs", - "distribution-types", - "fs-err", - "indoc", - "insta", - "itertools 0.13.0", - "pep508_rs", - "pypi-types", - "regex", - "reqwest", - "reqwest-middleware", - "tempfile", - "test-case", - "thiserror", - "tokio", - "tracing", - "unscanny", - "url", - "uv-client", - "uv-configuration", - "uv-fs", - "uv-normalize", - "uv-warnings", -] - [[package]] name = "reqwest" version = "0.12.7" @@ -4361,11 +4131,8 @@ dependencies = [ "axoupdater", "base64 0.22.1", "byteorder", - "cache-key", "clap", "ctrlc", - "distribution-filename", - "distribution-types", "etcetera", "filetime", "flate2", @@ -4377,16 +4144,11 @@ dependencies = [ "indicatif", "indoc", "insta", - "install-wheel-rs", "itertools 0.13.0", "jiff", "miette", "owo-colors", - "pep440_rs", - "pep508_rs", - "platform-tags", "predicates", - "pypi-types", "rayon", "regex", "reqwest", @@ -4408,19 +4170,27 @@ dependencies = [ "uv-auth", "uv-cache", "uv-cache-info", + "uv-cache-key", "uv-cli", "uv-client", "uv-configuration", "uv-dispatch", "uv-distribution", + "uv-distribution-filename", + "uv-distribution-types", "uv-extract", "uv-fs", "uv-git", + "uv-install-wheel", "uv-installer", "uv-normalize", + "uv-pep440", + "uv-pep508", "uv-performance-flate2-backend", "uv-performance-memory-allocator", + "uv-platform-tags", "uv-publish", + "uv-pypi-types", "uv-python", "uv-requirements", "uv-resolver", @@ -4446,7 +4216,6 @@ dependencies = [ "futures", "http", "insta", - "once-map", "reqwest", "reqwest-middleware", "rust-netrc", @@ -4457,23 +4226,47 @@ dependencies = [ "tracing", "url", "urlencoding", + "uv-once-map", "wiremock", ] +[[package]] +name = "uv-bench" +version = "0.0.0" +dependencies = [ + "anyhow", + "codspeed-criterion-compat", + "criterion", + "jiff", + "tokio", + "uv-cache", + "uv-client", + "uv-configuration", + "uv-dispatch", + "uv-distribution", + "uv-distribution-filename", + "uv-distribution-types", + "uv-git", + "uv-install-wheel", + "uv-pep440", + "uv-pep508", + "uv-platform-tags", + "uv-pypi-types", + "uv-python", + "uv-resolver", + "uv-types", +] + [[package]] name = "uv-build-frontend" version = "0.0.1" dependencies = [ "anstream", "anyhow", - "distribution-types", "fs-err", "indoc", "insta", "itertools 0.13.0", - "pep440_rs", - "pep508_rs", - "pypi-types", "regex", "rustc-hash", "serde", @@ -4484,7 +4277,11 @@ dependencies = [ "toml_edit", "tracing", "uv-configuration", + "uv-distribution-types", "uv-fs", + "uv-pep440", + "uv-pep508", + "uv-pypi-types", "uv-python", "uv-types", "uv-virtualenv", @@ -4494,14 +4291,11 @@ dependencies = [ name = "uv-cache" version = "0.0.1" dependencies = [ - "cache-key", "clap", "directories", - "distribution-types", "etcetera", "fs-err", "nanoid", - "pypi-types", "rmp-serde", "rustc-hash", "serde", @@ -4509,8 +4303,11 @@ dependencies = [ "tracing", "url", "uv-cache-info", + "uv-cache-key", + "uv-distribution-types", "uv-fs", "uv-normalize", + "uv-pypi-types", "walkdir", ] @@ -4527,6 +4324,15 @@ dependencies = [ "tracing", ] +[[package]] +name = "uv-cache-key" +version = "0.0.1" +dependencies = [ + "hex", + "seahash", + "url", +] + [[package]] name = "uv-cli" version = "0.0.1" @@ -4535,17 +4341,17 @@ dependencies = [ "anyhow", "clap", "clap_complete_command", - "distribution-types", "fs-err", "insta", - "install-wheel-rs", - "pep508_rs", - "pypi-types", "serde", "url", "uv-cache", "uv-configuration", + "uv-distribution-types", + "uv-install-wheel", "uv-normalize", + "uv-pep508", + "uv-pypi-types", "uv-python", "uv-resolver", "uv-settings", @@ -4562,9 +4368,6 @@ dependencies = [ "async_http_range_reader", "async_zip", "bytecheck", - "cache-key", - "distribution-filename", - "distribution-types", "fs-err", "futures", "html-escape", @@ -4575,10 +4378,6 @@ dependencies = [ "insta", "itertools 0.13.0", "jiff", - "pep440_rs", - "pep508_rs", - "platform-tags", - "pypi-types", "reqwest", "reqwest-middleware", "reqwest-retry", @@ -4596,10 +4395,17 @@ dependencies = [ "urlencoding", "uv-auth", "uv-cache", + "uv-cache-key", "uv-configuration", + "uv-distribution-filename", + "uv-distribution-types", "uv-fs", "uv-metadata", "uv-normalize", + "uv-pep440", + "uv-pep508", + "uv-platform-tags", + "uv-pypi-types", "uv-version", "uv-warnings", ] @@ -4609,13 +4415,9 @@ name = "uv-configuration" version = "0.0.1" dependencies = [ "anyhow", - "cache-key", "clap", "either", "fs-err", - "pep508_rs", - "platform-tags", - "pypi-types", "rustc-hash", "schemars", "serde", @@ -4627,7 +4429,11 @@ dependencies = [ "uv-auth", "uv-cache", "uv-cache-info", + "uv-cache-key", "uv-normalize", + "uv-pep508", + "uv-platform-tags", + "uv-pypi-types", "which", ] @@ -4646,16 +4452,12 @@ dependencies = [ "anstream", "anyhow", "clap", - "distribution-filename", - "distribution-types", "fs-err", "itertools 0.13.0", "markdown", "owo-colors", - "pep508_rs", "poloto", "pretty_assertions", - "pypi-types", "resvg", "schemars", "serde", @@ -4669,10 +4471,14 @@ dependencies = [ "uv-cache", "uv-cli", "uv-client", + "uv-distribution-filename", + "uv-distribution-types", "uv-installer", "uv-macros", "uv-options-metadata", + "uv-pep508", "uv-performance-memory-allocator", + "uv-pypi-types", "uv-python", "uv-settings", "uv-workspace", @@ -4684,11 +4490,8 @@ name = "uv-dispatch" version = "0.0.1" dependencies = [ "anyhow", - "distribution-types", "futures", - "install-wheel-rs", "itertools 0.13.0", - "pypi-types", "rustc-hash", "tracing", "uv-build-frontend", @@ -4696,8 +4499,11 @@ dependencies = [ "uv-client", "uv-configuration", "uv-distribution", + "uv-distribution-types", "uv-git", + "uv-install-wheel", "uv-installer", + "uv-pypi-types", "uv-python", "uv-resolver", "uv-types", @@ -4708,9 +4514,6 @@ name = "uv-distribution" version = "0.0.1" dependencies = [ "anyhow", - "cache-key", - "distribution-filename", - "distribution-types", "either", "fs-err", "futures", @@ -4718,10 +4521,6 @@ dependencies = [ "insta", "nanoid", "owo-colors", - "pep440_rs", - "pep508_rs", - "platform-tags", - "pypi-types", "reqwest", "reqwest-middleware", "rmp-serde", @@ -4735,13 +4534,20 @@ dependencies = [ "url", "uv-cache", "uv-cache-info", + "uv-cache-key", "uv-client", "uv-configuration", + "uv-distribution-filename", + "uv-distribution-types", "uv-extract", "uv-fs", "uv-git", "uv-metadata", "uv-normalize", + "uv-pep440", + "uv-pep508", + "uv-platform-tags", + "uv-pypi-types", "uv-types", "uv-warnings", "uv-workspace", @@ -4749,18 +4555,59 @@ dependencies = [ "zip", ] +[[package]] +name = "uv-distribution-filename" +version = "0.0.1" +dependencies = [ + "insta", + "rkyv", + "serde", + "thiserror", + "url", + "uv-normalize", + "uv-pep440", + "uv-platform-tags", +] + +[[package]] +name = "uv-distribution-types" +version = "0.0.1" +dependencies = [ + "anyhow", + "fs-err", + "itertools 0.13.0", + "jiff", + "rkyv", + "rustc-hash", + "schemars", + "serde", + "serde_json", + "thiserror", + "tracing", + "url", + "urlencoding", + "uv-cache-info", + "uv-cache-key", + "uv-distribution-filename", + "uv-fs", + "uv-git", + "uv-normalize", + "uv-pep440", + "uv-pep508", + "uv-platform-tags", + "uv-pypi-types", +] + [[package]] name = "uv-extract" version = "0.0.1" dependencies = [ "async-compression", "async_zip", - "distribution-filename", "fs-err", "futures", "krata-tokio-tar", "md-5", - "pypi-types", "rayon", "reqwest", "rustc-hash", @@ -4769,6 +4616,8 @@ dependencies = [ "tokio", "tokio-util", "tracing", + "uv-distribution-filename", + "uv-pypi-types", "xz2", "zip", ] @@ -4799,7 +4648,6 @@ name = "uv-git" version = "0.0.1" dependencies = [ "anyhow", - "cache-key", "cargo-util", "dashmap", "fs-err", @@ -4811,24 +4659,55 @@ dependencies = [ "tracing", "url", "uv-auth", + "uv-cache-key", "uv-fs", ] +[[package]] +name = "uv-install-wheel" +version = "0.0.1" +dependencies = [ + "anyhow", + "assert_fs", + "clap", + "configparser", + "csv", + "data-encoding", + "fs-err", + "indoc", + "mailparse", + "pathdiff", + "platform-info", + "reflink-copy", + "regex", + "rustc-hash", + "schemars", + "serde", + "serde_json", + "sha2", + "tempfile", + "thiserror", + "tracing", + "uv-cache-info", + "uv-distribution-filename", + "uv-fs", + "uv-normalize", + "uv-pep440", + "uv-platform-tags", + "uv-pypi-types", + "uv-warnings", + "walkdir", + "zip", +] + [[package]] name = "uv-installer" version = "0.0.1" dependencies = [ "anyhow", "async-channel", - "cache-key", - "distribution-types", "fs-err", "futures", - "install-wheel-rs", - "pep440_rs", - "pep508_rs", - "platform-tags", - "pypi-types", "rayon", "rustc-hash", "same-file", @@ -4839,11 +4718,18 @@ dependencies = [ "url", "uv-cache", "uv-cache-info", + "uv-cache-key", "uv-configuration", "uv-distribution", + "uv-distribution-types", "uv-extract", "uv-fs", + "uv-install-wheel", "uv-normalize", + "uv-pep440", + "uv-pep508", + "uv-platform-tags", + "uv-pypi-types", "uv-python", "uv-types", "uv-warnings", @@ -4865,14 +4751,14 @@ name = "uv-metadata" version = "0.1.0" dependencies = [ "async_zip", - "distribution-filename", "fs-err", "futures", - "pypi-types", "thiserror", "tokio", "tokio-util", + "uv-distribution-filename", "uv-normalize", + "uv-pypi-types", "zip", ] @@ -4885,6 +4771,15 @@ dependencies = [ "serde", ] +[[package]] +name = "uv-once-map" +version = "0.0.1" +dependencies = [ + "dashmap", + "futures", + "tokio", +] + [[package]] name = "uv-options-metadata" version = "0.0.1" @@ -4892,6 +4787,45 @@ dependencies = [ "serde", ] +[[package]] +name = "uv-pep440" +version = "0.7.0" +dependencies = [ + "indoc", + "rkyv", + "serde", + "tracing", + "unicode-width", + "unscanny", +] + +[[package]] +name = "uv-pep508" +version = "0.6.0" +dependencies = [ + "boxcar", + "indexmap", + "insta", + "itertools 0.13.0", + "log", + "pubgrub", + "regex", + "rustc-hash", + "schemars", + "serde", + "serde_json", + "smallvec", + "testing_logger", + "thiserror", + "tracing", + "unicode-width", + "url", + "uv-fs", + "uv-normalize", + "uv-pep440", + "uv-pubgrub", +] + [[package]] name = "uv-performance-flate2-backend" version = "0.1.0" @@ -4907,14 +4841,24 @@ dependencies = [ "tikv-jemallocator", ] +[[package]] +name = "uv-platform-tags" +version = "0.0.1" +dependencies = [ + "insta", + "rustc-hash", + "serde", + "thiserror", +] + [[package]] name = "uv-pubgrub" version = "0.0.1" dependencies = [ "itertools 0.13.0", - "pep440_rs", "pubgrub", "thiserror", + "uv-pep440", ] [[package]] @@ -4923,14 +4867,12 @@ version = "0.1.0" dependencies = [ "async-compression", "base64 0.22.1", - "distribution-filename", "fs-err", "futures", "glob", "insta", "itertools 0.13.0", "krata-tokio-tar", - "pypi-types", "reqwest", "reqwest-middleware", "reqwest-retry", @@ -4945,32 +4887,53 @@ dependencies = [ "url", "uv-client", "uv-configuration", + "uv-distribution-filename", "uv-fs", "uv-metadata", + "uv-pypi-types", "uv-warnings", ] +[[package]] +name = "uv-pypi-types" +version = "0.0.1" +dependencies = [ + "anyhow", + "indexmap", + "itertools 0.13.0", + "jiff", + "mailparse", + "regex", + "rkyv", + "serde", + "serde-untagged", + "thiserror", + "toml", + "toml_edit", + "tracing", + "url", + "uv-distribution-filename", + "uv-fs", + "uv-git", + "uv-normalize", + "uv-pep440", + "uv-pep508", +] + [[package]] name = "uv-python" version = "0.0.1" dependencies = [ "anyhow", "assert_fs", - "cache-key", "clap", "configparser", - "distribution-filename", "fs-err", "futures", "goblin", "indoc", - "install-wheel-rs", "itertools 0.13.0", "owo-colors", - "pep440_rs", - "pep508_rs", - "platform-tags", - "pypi-types", "regex", "reqwest", "reqwest-middleware", @@ -4991,9 +4954,16 @@ dependencies = [ "url", "uv-cache", "uv-cache-info", + "uv-cache-key", "uv-client", + "uv-distribution-filename", "uv-extract", "uv-fs", + "uv-install-wheel", + "uv-pep440", + "uv-pep508", + "uv-platform-tags", + "uv-pypi-types", "uv-state", "uv-warnings", "which", @@ -5008,60 +4978,81 @@ name = "uv-requirements" version = "0.1.0" dependencies = [ "anyhow", - "cache-key", "configparser", "console", - "distribution-filename", - "distribution-types", "fs-err", "futures", - "pep508_rs", - "pypi-types", - "requirements-txt", "rustc-hash", "serde", "thiserror", "toml", "tracing", "url", + "uv-cache-key", "uv-client", "uv-configuration", "uv-console", "uv-distribution", + "uv-distribution-filename", + "uv-distribution-types", "uv-fs", "uv-git", "uv-normalize", + "uv-pep508", + "uv-pypi-types", + "uv-requirements-txt", "uv-resolver", "uv-types", "uv-warnings", "uv-workspace", ] +[[package]] +name = "uv-requirements-txt" +version = "0.0.1" +dependencies = [ + "anyhow", + "assert_fs", + "fs-err", + "indoc", + "insta", + "itertools 0.13.0", + "regex", + "reqwest", + "reqwest-middleware", + "tempfile", + "test-case", + "thiserror", + "tokio", + "tracing", + "unscanny", + "url", + "uv-client", + "uv-configuration", + "uv-distribution-types", + "uv-fs", + "uv-normalize", + "uv-pep508", + "uv-pypi-types", + "uv-warnings", +] + [[package]] name = "uv-resolver" version = "0.0.1" dependencies = [ "anyhow", - "cache-key", "clap", "dashmap", - "distribution-filename", - "distribution-types", "either", "futures", "indexmap", "insta", "itertools 0.13.0", "jiff", - "once-map", "owo-colors", - "pep440_rs", - "pep508_rs", "petgraph", - "platform-tags", "pubgrub", - "pypi-types", - "requirements-txt", "rkyv", "rustc-hash", "same-file", @@ -5075,15 +5066,24 @@ dependencies = [ "toml_edit", "tracing", "url", + "uv-cache-key", "uv-client", "uv-configuration", "uv-distribution", + "uv-distribution-filename", + "uv-distribution-types", "uv-fs", "uv-git", "uv-metadata", "uv-normalize", + "uv-once-map", + "uv-pep440", + "uv-pep508", + "uv-platform-tags", "uv-pubgrub", + "uv-pypi-types", "uv-python", + "uv-requirements-txt", "uv-types", "uv-warnings", "uv-workspace", @@ -5096,12 +5096,12 @@ dependencies = [ "fs-err", "indoc", "memchr", - "pep440_rs", - "pep508_rs", - "pypi-types", "serde", "thiserror", "toml", + "uv-pep440", + "uv-pep508", + "uv-pypi-types", "uv-settings", "uv-workspace", ] @@ -5112,11 +5112,7 @@ version = "0.0.1" dependencies = [ "clap", "dirs-sys", - "distribution-types", "fs-err", - "install-wheel-rs", - "pep508_rs", - "pypi-types", "schemars", "serde", "textwrap", @@ -5126,10 +5122,14 @@ dependencies = [ "url", "uv-cache-info", "uv-configuration", + "uv-distribution-types", "uv-fs", + "uv-install-wheel", "uv-macros", "uv-normalize", "uv-options-metadata", + "uv-pep508", + "uv-pypi-types", "uv-python", "uv-resolver", "uv-warnings", @@ -5163,11 +5163,7 @@ version = "0.0.1" dependencies = [ "dirs-sys", "fs-err", - "install-wheel-rs", "pathdiff", - "pep440_rs", - "pep508_rs", - "pypi-types", "serde", "thiserror", "toml", @@ -5175,7 +5171,11 @@ dependencies = [ "tracing", "uv-cache", "uv-fs", + "uv-install-wheel", "uv-installer", + "uv-pep440", + "uv-pep508", + "uv-pypi-types", "uv-python", "uv-settings", "uv-state", @@ -5187,18 +5187,18 @@ name = "uv-types" version = "0.0.1" dependencies = [ "anyhow", - "distribution-types", - "once-map", - "pep440_rs", - "pep508_rs", - "pypi-types", "rustc-hash", "thiserror", "url", "uv-cache", "uv-configuration", + "uv-distribution-types", "uv-git", "uv-normalize", + "uv-once-map", + "uv-pep440", + "uv-pep508", + "uv-pypi-types", "uv-python", ] @@ -5213,11 +5213,11 @@ dependencies = [ "fs-err", "itertools 0.13.0", "pathdiff", - "platform-tags", - "pypi-types", "thiserror", "tracing", "uv-fs", + "uv-platform-tags", + "uv-pypi-types", "uv-python", "uv-version", ] @@ -5243,9 +5243,6 @@ dependencies = [ "insta", "itertools 0.13.0", "owo-colors", - "pep440_rs", - "pep508_rs", - "pypi-types", "regex", "rustc-hash", "same-file", @@ -5264,6 +5261,9 @@ dependencies = [ "uv-macros", "uv-normalize", "uv-options-metadata", + "uv-pep440", + "uv-pep508", + "uv-pypi-types", "uv-warnings", ] diff --git a/Cargo.toml b/Cargo.toml index 6988e37b6..b363b49ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,38 +21,38 @@ authors = ["uv"] license = "MIT OR Apache-2.0" [workspace.dependencies] -cache-key = { path = "crates/cache-key" } -distribution-filename = { path = "crates/distribution-filename" } -distribution-types = { path = "crates/distribution-types" } -install-wheel-rs = { path = "crates/install-wheel-rs", default-features = false } -once-map = { path = "crates/once-map" } -pep440_rs = { path = "crates/pep440-rs" } -pep508_rs = { path = "crates/pep508-rs", features = ["non-pep508-extensions"] } -platform-tags = { path = "crates/platform-tags" } -pypi-types = { path = "crates/pypi-types" } -requirements-txt = { path = "crates/requirements-txt" } uv-auth = { path = "crates/uv-auth" } uv-build-frontend = { path = "crates/uv-build-frontend" } uv-cache = { path = "crates/uv-cache" } uv-cache-info = { path = "crates/uv-cache-info" } +uv-cache-key = { path = "crates/uv-cache-key" } uv-cli = { path = "crates/uv-cli" } uv-client = { path = "crates/uv-client" } uv-configuration = { path = "crates/uv-configuration" } uv-console = { path = "crates/uv-console" } uv-dispatch = { path = "crates/uv-dispatch" } uv-distribution = { path = "crates/uv-distribution" } +uv-distribution-filename = { path = "crates/uv-distribution-filename" } +uv-distribution-types = { path = "crates/uv-distribution-types" } uv-extract = { path = "crates/uv-extract" } uv-fs = { path = "crates/uv-fs" } uv-git = { path = "crates/uv-git" } +uv-install-wheel = { path = "crates/uv-install-wheel", default-features = false } uv-installer = { path = "crates/uv-installer" } uv-macros = { path = "crates/uv-macros" } uv-metadata = { path = "crates/uv-metadata" } uv-normalize = { path = "crates/uv-normalize" } +uv-once-map = { path = "crates/uv-once-map" } uv-options-metadata = { path = "crates/uv-options-metadata" } +uv-pep440 = { path = "crates/uv-pep440" } +uv-pep508 = { path = "crates/uv-pep508", features = ["non-pep508-extensions"] } +uv-platform-tags = { path = "crates/uv-platform-tags" } uv-pubgrub = { path = "crates/uv-pubgrub" } uv-publish = { path = "crates/uv-publish" } +uv-pypi-types = { path = "crates/uv-pypi-types" } uv-python = { path = "crates/uv-python" } uv-requirements = { path = "crates/uv-requirements" } +uv-requirements-txt = { path = "crates/uv-requirements-txt" } uv-resolver = { path = "crates/uv-resolver" } uv-scripts = { path = "crates/uv-scripts" } uv-settings = { path = "crates/uv-settings" } @@ -178,9 +178,6 @@ zip = { version = "0.6.6", default-features = false, features = ["deflate"] } ignored = ["flate2", "xz2"] [patch.crates-io] -# For pyproject-toml -pep440_rs = { path = "crates/pep440-rs" } -pep508_rs = { path = "crates/pep508-rs" } reqwest-middleware = { git = "https://github.com/astral-sh/reqwest-middleware", rev = "5e3eaf254b5bd481c75d2710eed055f95b756913" } [workspace.lints.rust] diff --git a/crates/uv-auth/Cargo.toml b/crates/uv-auth/Cargo.toml index e7c4a2b7c..ca73428bf 100644 --- a/crates/uv-auth/Cargo.toml +++ b/crates/uv-auth/Cargo.toml @@ -7,12 +7,13 @@ edition = "2021" workspace = true [dependencies] +uv-once-map = { workspace = true } + anyhow = { workspace = true } async-trait = { workspace = true } base64 = { workspace = true } futures = { workspace = true } http = { workspace = true } -once-map = { workspace = true } reqwest = { workspace = true } reqwest-middleware = { workspace = true } rust-netrc = { workspace = true } diff --git a/crates/uv-auth/src/cache.rs b/crates/uv-auth/src/cache.rs index b28bbedcc..008744ece 100644 --- a/crates/uv-auth/src/cache.rs +++ b/crates/uv-auth/src/cache.rs @@ -6,7 +6,7 @@ use rustc_hash::{FxHashMap, FxHasher}; use tracing::trace; use url::Url; -use once_map::OnceMap; +use uv_once_map::OnceMap; use crate::credentials::{Credentials, Username}; use crate::Realm; diff --git a/crates/bench/Cargo.toml b/crates/uv-bench/Cargo.toml similarity index 79% rename from crates/bench/Cargo.toml rename to crates/uv-bench/Cargo.toml index 83f92716c..7f3ba2323 100644 --- a/crates/bench/Cargo.toml +++ b/crates/uv-bench/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "bench" +name = "uv-bench" version = "0.0.0" description = "uv Micro-benchmarks" publish = false @@ -28,19 +28,19 @@ path = "benches/uv.rs" harness = false [dependencies] -distribution-filename = { workspace = true } -distribution-types = { workspace = true } -install-wheel-rs = { workspace = true } -pep440_rs = { workspace = true } -pep508_rs = { workspace = true } -platform-tags = { workspace = true } -pypi-types = { workspace = true } uv-cache = { workspace = true } uv-client = { workspace = true } uv-configuration = { workspace = true } uv-dispatch = { workspace = true } uv-distribution = { workspace = true } +uv-distribution-filename = { workspace = true } +uv-distribution-types = { workspace = true } uv-git = { workspace = true } +uv-install-wheel = { workspace = true } +uv-pep440 = { workspace = true } +uv-pep508 = { workspace = true } +uv-platform-tags = { workspace = true } +uv-pypi-types = { workspace = true } uv-python = { workspace = true } uv-resolver = { workspace = true } uv-types = { workspace = true } diff --git a/crates/bench/benches/distribution_filename.rs b/crates/uv-bench/benches/distribution_filename.rs similarity index 97% rename from crates/bench/benches/distribution_filename.rs rename to crates/uv-bench/benches/distribution_filename.rs index 396a230e3..943b577b7 100644 --- a/crates/bench/benches/distribution_filename.rs +++ b/crates/uv-bench/benches/distribution_filename.rs @@ -1,8 +1,8 @@ -use {distribution_filename::WheelFilename, platform_tags::Tags}; - -use bench::criterion::{ +use uv_bench::criterion::{ criterion_group, criterion_main, measurement::WallTime, BenchmarkId, Criterion, Throughput, }; +use uv_distribution_filename::WheelFilename; +use uv_platform_tags::Tags; /// A set of platform tags extracted from burntsushi's Archlinux workstation. /// We could just re-create these via `Tags::from_env`, but those might differ @@ -153,10 +153,10 @@ fn benchmark_wheelname_tag_compatibility(c: &mut Criterion) { } criterion_group!( - distribution_filename, + uv_distribution_filename, benchmark_build_platform_tags, benchmark_wheelname_parsing, benchmark_wheelname_parsing_failure, benchmark_wheelname_tag_compatibility, ); -criterion_main!(distribution_filename); +criterion_main!(uv_distribution_filename); diff --git a/crates/bench/benches/uv.rs b/crates/uv-bench/benches/uv.rs similarity index 89% rename from crates/bench/benches/uv.rs rename to crates/uv-bench/benches/uv.rs index e5f7a9a69..62cb64688 100644 --- a/crates/bench/benches/uv.rs +++ b/crates/uv-bench/benches/uv.rs @@ -1,32 +1,32 @@ use std::str::FromStr; -use bench::criterion::black_box; -use bench::criterion::{criterion_group, criterion_main, measurement::WallTime, Criterion}; -use pypi_types::Requirement; +use uv_bench::criterion::black_box; +use uv_bench::criterion::{criterion_group, criterion_main, measurement::WallTime, Criterion}; use uv_cache::Cache; use uv_client::RegistryClientBuilder; +use uv_pypi_types::Requirement; use uv_python::PythonEnvironment; use uv_resolver::Manifest; fn resolve_warm_jupyter(c: &mut Criterion) { let run = setup(Manifest::simple(vec![Requirement::from( - pep508_rs::Requirement::from_str("jupyter==1.0.0").unwrap(), + uv_pep508::Requirement::from_str("jupyter==1.0.0").unwrap(), )])); c.bench_function("resolve_warm_jupyter", |b| b.iter(|| run(false))); } fn resolve_warm_jupyter_universal(c: &mut Criterion) { let run = setup(Manifest::simple(vec![Requirement::from( - pep508_rs::Requirement::from_str("jupyter==1.0.0").unwrap(), + uv_pep508::Requirement::from_str("jupyter==1.0.0").unwrap(), )])); c.bench_function("resolve_warm_jupyter_universal", |b| b.iter(|| run(true))); } fn resolve_warm_airflow(c: &mut Criterion) { let run = setup(Manifest::simple(vec![ - Requirement::from(pep508_rs::Requirement::from_str("apache-airflow[all]==2.9.3").unwrap()), + Requirement::from(uv_pep508::Requirement::from_str("apache-airflow[all]==2.9.3").unwrap()), Requirement::from( - pep508_rs::Requirement::from_str("apache-airflow-providers-apache-beam>3.0.0").unwrap(), + uv_pep508::Requirement::from_str("apache-airflow-providers-apache-beam>3.0.0").unwrap(), ), ])); c.bench_function("resolve_warm_airflow", |b| b.iter(|| run(false))); @@ -35,9 +35,9 @@ fn resolve_warm_airflow(c: &mut Criterion) { // This takes >5m to run in CodSpeed. // fn resolve_warm_airflow_universal(c: &mut Criterion) { // let run = setup(Manifest::simple(vec![ -// Requirement::from(pep508_rs::Requirement::from_str("apache-airflow[all]").unwrap()), +// Requirement::from(uv_pep508::Requirement::from_str("apache-airflow[all]").unwrap()), // Requirement::from( -// pep508_rs::Requirement::from_str("apache-airflow-providers-apache-beam>3.0.0").unwrap(), +// uv_pep508::Requirement::from_str("apache-airflow-providers-apache-beam>3.0.0").unwrap(), // ), // ])); // c.bench_function("resolve_warm_airflow_universal", |b| b.iter(|| run(true))); @@ -83,12 +83,7 @@ mod resolver { use anyhow::Result; - use distribution_types::{DependencyMetadata, IndexCapabilities, IndexLocations}; use install_wheel_rs::linker::LinkMode; - use pep440_rs::Version; - use pep508_rs::{MarkerEnvironment, MarkerEnvironmentBuilder}; - use platform_tags::{Arch, Os, Platform, Tags}; - use pypi_types::ResolverMarkerEnvironment; use uv_cache::Cache; use uv_client::RegistryClient; use uv_configuration::{ @@ -96,7 +91,12 @@ mod resolver { }; use uv_dispatch::BuildDispatch; use uv_distribution::DistributionDatabase; + use uv_distribution_types::{DependencyMetadata, IndexCapabilities, IndexLocations}; use uv_git::GitResolver; + use uv_pep440::Version; + use uv_pep508::{MarkerEnvironment, MarkerEnvironmentBuilder}; + use uv_platform_tags::{Arch, Os, Platform, Tags}; + use uv_pypi_types::ResolverMarkerEnvironment; use uv_python::Interpreter; use uv_resolver::{ FlatIndex, InMemoryIndex, Manifest, OptionsBuilder, PythonRequirement, RequiresPython, diff --git a/crates/bench/inputs/platform_tags.rs b/crates/uv-bench/inputs/platform_tags.rs similarity index 100% rename from crates/bench/inputs/platform_tags.rs rename to crates/uv-bench/inputs/platform_tags.rs diff --git a/crates/bench/src/lib.rs b/crates/uv-bench/src/lib.rs similarity index 100% rename from crates/bench/src/lib.rs rename to crates/uv-bench/src/lib.rs diff --git a/crates/uv-build-frontend/Cargo.toml b/crates/uv-build-frontend/Cargo.toml index 23d44d88d..cb9d05329 100644 --- a/crates/uv-build-frontend/Cargo.toml +++ b/crates/uv-build-frontend/Cargo.toml @@ -14,12 +14,12 @@ license = { workspace = true } workspace = true [dependencies] -distribution-types = { workspace = true } -pep440_rs = { workspace = true } -pep508_rs = { workspace = true } -pypi-types = { workspace = true } uv-configuration = { workspace = true } +uv-distribution-types = { workspace = true } uv-fs = { workspace = true } +uv-pep440 = { workspace = true } +uv-pep508 = { workspace = true } +uv-pypi-types = { workspace = true } uv-python = { workspace = true } uv-types = { workspace = true } uv-virtualenv = { workspace = true } diff --git a/crates/uv-build-frontend/src/error.rs b/crates/uv-build-frontend/src/error.rs index 3ccbf9871..4cfe63376 100644 --- a/crates/uv-build-frontend/src/error.rs +++ b/crates/uv-build-frontend/src/error.rs @@ -1,7 +1,5 @@ use crate::PythonRunnerOutput; use itertools::Itertools; -use pep440_rs::Version; -use pep508_rs::PackageName; use regex::Regex; use std::env; use std::fmt::{Display, Formatter}; @@ -13,6 +11,8 @@ use thiserror::Error; use tracing::error; use uv_configuration::BuildOutput; use uv_fs::Simplified; +use uv_pep440::Version; +use uv_pep508::PackageName; /// e.g. `pygraphviz/graphviz_wrap.c:3020:10: fatal error: graphviz/cgraph.h: No such file or directory` static MISSING_HEADER_RE_GCC: LazyLock = LazyLock::new(|| { @@ -285,11 +285,11 @@ impl Error { mod test { use crate::{Error, PythonRunnerOutput}; use indoc::indoc; - use pep440_rs::Version; - use pep508_rs::PackageName; use std::process::ExitStatus; use std::str::FromStr; use uv_configuration::BuildOutput; + use uv_pep440::Version; + use uv_pep508::PackageName; #[test] fn missing_header() { diff --git a/crates/uv-build-frontend/src/lib.rs b/crates/uv-build-frontend/src/lib.rs index 862be6a0f..334be03e0 100644 --- a/crates/uv-build-frontend/src/lib.rs +++ b/crates/uv-build-frontend/src/lib.rs @@ -27,12 +27,12 @@ use tokio::sync::{Mutex, Semaphore}; use tracing::{debug, info_span, instrument, Instrument}; pub use crate::error::{Error, MissingHeaderCause}; -use distribution_types::Resolution; -use pep440_rs::Version; -use pep508_rs::PackageName; -use pypi_types::{Requirement, VerbatimParsedUrl}; use uv_configuration::{BuildKind, BuildOutput, ConfigSettings}; +use uv_distribution_types::Resolution; use uv_fs::{rename_with_retry, PythonExt, Simplified}; +use uv_pep440::Version; +use uv_pep508::PackageName; +use uv_pypi_types::{Requirement, VerbatimParsedUrl}; use uv_python::{Interpreter, PythonEnvironment}; use uv_types::{BuildContext, BuildIsolation, SourceBuildTrait}; @@ -41,7 +41,7 @@ static DEFAULT_BACKEND: LazyLock = LazyLock::new(|| Pep517Backend backend: "setuptools.build_meta:__legacy__".to_string(), backend_path: None, requirements: vec![Requirement::from( - pep508_rs::Requirement::from_str("setuptools >= 40.8.0").unwrap(), + uv_pep508::Requirement::from_str("setuptools >= 40.8.0").unwrap(), )], }); @@ -76,7 +76,7 @@ struct Project { #[serde(rename_all = "kebab-case")] struct BuildSystem { /// PEP 508 dependencies required to execute the build system. - requires: Vec>, + requires: Vec>, /// A string naming a Python object that will be used to perform the build. build_backend: Option, /// Specify that their backend code is hosted in-tree, this key contains a list of directories. @@ -826,7 +826,7 @@ async fn create_pep517_build_environment( })?; // Deserialize the requirements from the output file. - let extra_requires: Vec> = serde_json::from_slice::>>(&contents).map_err(|err| { + let extra_requires: Vec> = serde_json::from_slice::>>(&contents).map_err(|err| { Error::from_command_output( format!( "Build backend failed to return requirements from `get_requires_for_build_{build_kind}`: {err}" diff --git a/crates/cache-key/Cargo.toml b/crates/uv-cache-key/Cargo.toml similarity index 95% rename from crates/cache-key/Cargo.toml rename to crates/uv-cache-key/Cargo.toml index 2461eb3f1..098a8f24d 100644 --- a/crates/cache-key/Cargo.toml +++ b/crates/uv-cache-key/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "cache-key" +name = "uv-cache-key" version = "0.0.1" description = "Generic functionality for caching paths, URLs, and other resources across platforms." edition = { workspace = true } diff --git a/crates/cache-key/src/cache_key.rs b/crates/uv-cache-key/src/cache_key.rs similarity index 100% rename from crates/cache-key/src/cache_key.rs rename to crates/uv-cache-key/src/cache_key.rs diff --git a/crates/cache-key/src/canonical_url.rs b/crates/uv-cache-key/src/canonical_url.rs similarity index 100% rename from crates/cache-key/src/canonical_url.rs rename to crates/uv-cache-key/src/canonical_url.rs diff --git a/crates/cache-key/src/digest.rs b/crates/uv-cache-key/src/digest.rs similarity index 100% rename from crates/cache-key/src/digest.rs rename to crates/uv-cache-key/src/digest.rs diff --git a/crates/cache-key/src/lib.rs b/crates/uv-cache-key/src/lib.rs similarity index 100% rename from crates/cache-key/src/lib.rs rename to crates/uv-cache-key/src/lib.rs diff --git a/crates/uv-cache/Cargo.toml b/crates/uv-cache/Cargo.toml index 3735f95ad..dab67387c 100644 --- a/crates/uv-cache/Cargo.toml +++ b/crates/uv-cache/Cargo.toml @@ -14,12 +14,12 @@ license = { workspace = true } workspace = true [dependencies] -cache-key = { workspace = true } -distribution-types = { workspace = true } -pypi-types = { workspace = true } uv-cache-info = { workspace = true } +uv-cache-key = { workspace = true } +uv-distribution-types = { workspace = true } uv-fs = { workspace = true, features = ["tokio"] } uv-normalize = { workspace = true } +uv-pypi-types = { workspace = true } clap = { workspace = true, features = ["derive", "env"], optional = true } directories = { workspace = true } diff --git a/crates/uv-cache/src/lib.rs b/crates/uv-cache/src/lib.rs index 73b1958f8..3c3f8e01e 100644 --- a/crates/uv-cache/src/lib.rs +++ b/crates/uv-cache/src/lib.rs @@ -10,11 +10,11 @@ use rustc_hash::FxHashSet; use tracing::debug; pub use archive::ArchiveId; -use distribution_types::InstalledDist; -use pypi_types::ResolutionMetadata; use uv_cache_info::Timestamp; +use uv_distribution_types::InstalledDist; use uv_fs::{cachedir, directories}; use uv_normalize::PackageName; +use uv_pypi_types::ResolutionMetadata; pub use crate::by_timestamp::CachedByTimestamp; #[cfg(feature = "clap")] diff --git a/crates/uv-cache/src/wheel.rs b/crates/uv-cache/src/wheel.rs index 02d45e89a..c35183124 100644 --- a/crates/uv-cache/src/wheel.rs +++ b/crates/uv-cache/src/wheel.rs @@ -2,8 +2,8 @@ use std::path::{Path, PathBuf}; use url::Url; -use cache_key::{cache_digest, CanonicalUrl}; -use distribution_types::IndexUrl; +use uv_cache_key::{cache_digest, CanonicalUrl}; +use uv_distribution_types::IndexUrl; /// Cache wheels and their metadata, both from remote wheels and built from source distributions. #[derive(Debug, Clone)] diff --git a/crates/uv-cli/Cargo.toml b/crates/uv-cli/Cargo.toml index 5a855fe97..1414e429d 100644 --- a/crates/uv-cli/Cargo.toml +++ b/crates/uv-cli/Cargo.toml @@ -14,13 +14,13 @@ license = { workspace = true } workspace = true [dependencies] -distribution-types = { workspace = true } -install-wheel-rs = { workspace = true, features = ["clap"], default-features = false } -pep508_rs = { workspace = true } -pypi-types = { workspace = true } uv-cache = { workspace = true, features = ["clap"] } uv-configuration = { workspace = true, features = ["clap"] } +uv-distribution-types = { workspace = true } +uv-install-wheel = { workspace = true, features = ["clap"], default-features = false } uv-normalize = { workspace = true } +uv-pep508 = { workspace = true } +uv-pypi-types = { workspace = true } uv-python = { workspace = true, features = ["clap", "schemars"]} uv-resolver = { workspace = true, features = ["clap"] } uv-settings = { workspace = true, features = ["schemars"] } diff --git a/crates/uv-cli/src/lib.rs b/crates/uv-cli/src/lib.rs index c57522ac4..a8216afb0 100644 --- a/crates/uv-cli/src/lib.rs +++ b/crates/uv-cli/src/lib.rs @@ -7,16 +7,16 @@ use anyhow::{anyhow, Result}; use clap::builder::styling::{AnsiColor, Effects, Style}; use clap::builder::Styles; use clap::{Args, Parser, Subcommand}; -use distribution_types::{FlatIndexLocation, IndexUrl}; -use pep508_rs::Requirement; -use pypi_types::VerbatimParsedUrl; use url::Url; use uv_cache::CacheArgs; use uv_configuration::{ ConfigSettingEntry, ExportFormat, IndexStrategy, KeyringProviderType, PackageNameSpecifier, TargetTriple, TrustedHost, TrustedPublishing, VersionControlSystem, }; +use uv_distribution_types::{FlatIndexLocation, IndexUrl}; use uv_normalize::{ExtraName, PackageName}; +use uv_pep508::Requirement; +use uv_pypi_types::VerbatimParsedUrl; use uv_python::{PythonDownloads, PythonPreference, PythonVersion}; use uv_resolver::{AnnotationStyle, ExcludeNewer, PrereleaseMode, ResolutionMode}; diff --git a/crates/uv-client/Cargo.toml b/crates/uv-client/Cargo.toml index 713b264b7..2147d604b 100644 --- a/crates/uv-client/Cargo.toml +++ b/crates/uv-client/Cargo.toml @@ -7,19 +7,19 @@ edition = "2021" workspace = true [dependencies] -cache-key = { workspace = true } -distribution-filename = { workspace = true } -distribution-types = { workspace = true } -pep440_rs = { workspace = true } -pep508_rs = { workspace = true } -platform-tags = { workspace = true } -pypi-types = { workspace = true } uv-auth = { workspace = true } uv-cache = { workspace = true } +uv-cache-key = { workspace = true } uv-configuration = { workspace = true } +uv-distribution-filename = { workspace = true } +uv-distribution-types = { workspace = true } uv-fs = { workspace = true, features = ["tokio"] } uv-metadata = { workspace = true } uv-normalize = { workspace = true } +uv-pep440 = { workspace = true } +uv-pep508 = { workspace = true } +uv-platform-tags = { workspace = true } +uv-pypi-types = { workspace = true } uv-version = { workspace = true } uv-warnings = { workspace = true } diff --git a/crates/uv-client/src/base_client.rs b/crates/uv-client/src/base_client.rs index 9a5085fca..de883cbc7 100644 --- a/crates/uv-client/src/base_client.rs +++ b/crates/uv-client/src/base_client.rs @@ -4,8 +4,6 @@ use std::path::Path; use std::{env, iter}; use itertools::Itertools; -use pep508_rs::MarkerEnvironment; -use platform_tags::Platform; use reqwest::{Client, ClientBuilder, Response}; use reqwest_middleware::ClientWithMiddleware; use reqwest_retry::policies::ExponentialBackoff; @@ -17,6 +15,8 @@ use url::Url; use uv_auth::AuthMiddleware; use uv_configuration::{KeyringProviderType, TrustedHost}; use uv_fs::Simplified; +use uv_pep508::MarkerEnvironment; +use uv_platform_tags::Platform; use uv_version::version; use uv_warnings::warn_user_once; diff --git a/crates/uv-client/src/error.rs b/crates/uv-client/src/error.rs index 2dac1755e..730223534 100644 --- a/crates/uv-client/src/error.rs +++ b/crates/uv-client/src/error.rs @@ -5,7 +5,7 @@ use async_http_range_reader::AsyncHttpRangeReaderError; use async_zip::error::ZipError; use url::Url; -use distribution_filename::{WheelFilename, WheelFilenameError}; +use uv_distribution_filename::{WheelFilename, WheelFilenameError}; use uv_normalize::PackageName; use crate::html; @@ -140,7 +140,7 @@ pub enum ErrorKind { UrlParse(#[from] url::ParseError), #[error(transparent)] - JoinRelativeUrl(#[from] pypi_types::JoinRelativeError), + JoinRelativeUrl(#[from] uv_pypi_types::JoinRelativeError), #[error("Expected a file URL, but received: {0}")] NonFileUrl(Url), @@ -170,7 +170,7 @@ pub enum ErrorKind { MetadataParseError( WheelFilename, String, - #[source] Box, + #[source] Box, ), /// The metadata file was not found in the wheel. diff --git a/crates/uv-client/src/flat_index.rs b/crates/uv-client/src/flat_index.rs index 04e1c5243..23d72d2f0 100644 --- a/crates/uv-client/src/flat_index.rs +++ b/crates/uv-client/src/flat_index.rs @@ -5,13 +5,13 @@ use reqwest::Response; use tracing::{debug, info_span, warn, Instrument}; use url::Url; -use distribution_filename::DistFilename; -use distribution_types::{File, FileLocation, FlatIndexLocation, IndexUrl, UrlString}; -use uv_cache::{Cache, CacheBucket}; - use crate::cached_client::{CacheControl, CachedClientError}; use crate::html::SimpleHtml; use crate::{Connectivity, Error, ErrorKind, OwnedArchive, RegistryClient}; +use uv_cache::{Cache, CacheBucket}; +use uv_cache_key::cache_digest; +use uv_distribution_filename::DistFilename; +use uv_distribution_types::{File, FileLocation, FlatIndexLocation, IndexUrl, UrlString}; #[derive(Debug, thiserror::Error)] pub enum FlatIndexError { @@ -30,7 +30,7 @@ pub enum FindLinksDirectoryError { #[error(transparent)] Io(#[from] std::io::Error), #[error(transparent)] - VerbatimUrl(#[from] pep508_rs::VerbatimUrlError), + VerbatimUrl(#[from] uv_pep508::VerbatimUrlError), } #[derive(Debug, Default, Clone)] @@ -141,7 +141,7 @@ impl<'a> FlatIndexClient<'a> { let cache_entry = self.cache.entry( CacheBucket::FlatIndex, "html", - format!("{}.msgpack", cache_key::cache_digest(&url.to_string())), + format!("{}.msgpack", cache_digest(&url.to_string())), ); let cache_control = match self.client.connectivity() { Connectivity::Online => CacheControl::from( diff --git a/crates/uv-client/src/html.rs b/crates/uv-client/src/html.rs index edb2d1c9c..8eb2f5c84 100644 --- a/crates/uv-client/src/html.rs +++ b/crates/uv-client/src/html.rs @@ -4,9 +4,9 @@ use tl::HTMLTag; use tracing::{instrument, warn}; use url::Url; -use pep440_rs::VersionSpecifiers; -use pypi_types::LenientVersionSpecifiers; -use pypi_types::{BaseUrl, CoreMetadata, File, Hashes, Yanked}; +use uv_pep440::VersionSpecifiers; +use uv_pypi_types::LenientVersionSpecifiers; +use uv_pypi_types::{BaseUrl, CoreMetadata, File, Hashes, Yanked}; /// A parsed structure from PyPI "HTML" index format for a single package. #[derive(Debug, Clone)] @@ -200,10 +200,10 @@ pub enum Error { MissingHash(String), #[error(transparent)] - FragmentParse(#[from] pypi_types::HashError), + FragmentParse(#[from] uv_pypi_types::HashError), #[error("Invalid `requires-python` specifier: {0}")] - Pep440(#[source] pep440_rs::VersionSpecifiersParseError), + Pep440(#[source] uv_pep440::VersionSpecifiersParseError), } #[cfg(test)] diff --git a/crates/uv-client/src/linehaul.rs b/crates/uv-client/src/linehaul.rs index 8e6646909..d0df585ad 100644 --- a/crates/uv-client/src/linehaul.rs +++ b/crates/uv-client/src/linehaul.rs @@ -3,8 +3,8 @@ use std::env; use serde::{Deserialize, Serialize}; use tracing::instrument; -use pep508_rs::MarkerEnvironment; -use platform_tags::{Os, Platform}; +use uv_pep508::MarkerEnvironment; +use uv_platform_tags::{Os, Platform}; use uv_version::version; #[derive(Debug, Clone, PartialEq, Deserialize, Serialize)] @@ -68,7 +68,7 @@ impl LineHaul { .iter() .find_map(|&var_name| env::var(var_name).ok().map(|_| true)); - let libc = match platform.map(platform_tags::Platform::os) { + let libc = match platform.map(Platform::os) { Some(Os::Manylinux { major, minor }) => Some(Libc { lib: Some("glibc".to_string()), version: Some(format!("{major}.{minor}")), @@ -94,7 +94,7 @@ impl LineHaul { libc, }) } else if cfg!(target_os = "macos") { - let version = match platform.map(platform_tags::Platform::os) { + let version = match platform.map(Platform::os) { Some(Os::Macos { major, minor }) => Some(format!("{major}.{minor}")), _ => None, }; diff --git a/crates/uv-client/src/registry_client.rs b/crates/uv-client/src/registry_client.rs index 392e17647..8cc846f3e 100644 --- a/crates/uv-client/src/registry_client.rs +++ b/crates/uv-client/src/registry_client.rs @@ -11,19 +11,19 @@ use reqwest_middleware::ClientWithMiddleware; use tracing::{info_span, instrument, trace, warn, Instrument}; use url::Url; -use distribution_filename::{DistFilename, SourceDistFilename, WheelFilename}; -use distribution_types::{ - BuiltDist, File, FileLocation, IndexCapabilities, IndexUrl, IndexUrls, Name, -}; -use pep440_rs::Version; -use pep508_rs::MarkerEnvironment; -use platform_tags::Platform; -use pypi_types::{ResolutionMetadata, SimpleJson}; use uv_cache::{Cache, CacheBucket, CacheEntry, WheelCache}; use uv_configuration::KeyringProviderType; use uv_configuration::{IndexStrategy, TrustedHost}; +use uv_distribution_filename::{DistFilename, SourceDistFilename, WheelFilename}; +use uv_distribution_types::{ + BuiltDist, File, FileLocation, IndexCapabilities, IndexUrl, IndexUrls, Name, +}; use uv_metadata::{read_metadata_async_seek, read_metadata_async_stream}; use uv_normalize::PackageName; +use uv_pep440::Version; +use uv_pep508::MarkerEnvironment; +use uv_platform_tags::Platform; +use uv_pypi_types::{ResolutionMetadata, SimpleJson}; use crate::base_client::BaseClientBuilder; use crate::cached_client::CacheControl; @@ -419,7 +419,7 @@ impl RegistryClient { let location = match &wheel.file.url { FileLocation::RelativeUrl(base, url) => { - let url = pypi_types::base_url_join_relative(base, url) + let url = uv_pypi_types::base_url_join_relative(base, url) .map_err(ErrorKind::JoinRelativeUrl)?; if url.scheme() == "file" { let path = url @@ -783,7 +783,7 @@ impl SimpleMetadata { self.0.iter() } - fn from_files(files: Vec, package_name: &PackageName, base: &Url) -> Self { + fn from_files(files: Vec, package_name: &PackageName, base: &Url) -> Self { let mut map: BTreeMap = BTreeMap::default(); // Group the distributions by version and kind @@ -906,8 +906,8 @@ mod tests { use url::Url; - use pypi_types::{JoinRelativeError, SimpleJson}; use uv_normalize::PackageName; + use uv_pypi_types::{JoinRelativeError, SimpleJson}; use crate::{html::SimpleHtml, SimpleMetadata, SimpleMetadatum}; @@ -991,7 +991,7 @@ mod tests { // Test parsing of the file urls let urls = files .iter() - .map(|file| pypi_types::base_url_join_relative(base.as_url().as_str(), &file.url)) + .map(|file| uv_pypi_types::base_url_join_relative(base.as_url().as_str(), &file.url)) .collect::, JoinRelativeError>>()?; let urls = urls.iter().map(reqwest::Url::as_str).collect::>(); insta::assert_debug_snapshot!(urls, @r###" diff --git a/crates/uv-client/src/remote_metadata.rs b/crates/uv-client/src/remote_metadata.rs index 0ebd8ab50..15286f9cf 100644 --- a/crates/uv-client/src/remote_metadata.rs +++ b/crates/uv-client/src/remote_metadata.rs @@ -1,9 +1,9 @@ use crate::{Error, ErrorKind}; use async_http_range_reader::AsyncHttpRangeReader; -use distribution_filename::WheelFilename; use futures::io::BufReader; use tokio_util::compat::TokioAsyncReadCompatExt; use url::Url; +use uv_distribution_filename::WheelFilename; use uv_metadata::find_archive_dist_info; /// Read the `.dist-info/METADATA` file from a async remote zip reader, so we avoid downloading the diff --git a/crates/uv-client/tests/remote_metadata.rs b/crates/uv-client/tests/remote_metadata.rs index 1da4c5c71..0570bba4d 100644 --- a/crates/uv-client/tests/remote_metadata.rs +++ b/crates/uv-client/tests/remote_metadata.rs @@ -3,11 +3,11 @@ use std::str::FromStr; use anyhow::Result; use url::Url; -use distribution_filename::WheelFilename; -use distribution_types::{BuiltDist, DirectUrlBuiltDist, IndexCapabilities}; -use pep508_rs::VerbatimUrl; use uv_cache::Cache; use uv_client::RegistryClientBuilder; +use uv_distribution_filename::WheelFilename; +use uv_distribution_types::{BuiltDist, DirectUrlBuiltDist, IndexCapabilities}; +use uv_pep508::VerbatimUrl; #[tokio::test] async fn remote_metadata_with_and_without_cache() -> Result<()> { diff --git a/crates/uv-client/tests/user_agent_version.rs b/crates/uv-client/tests/user_agent_version.rs index 26632a78b..4511067b3 100644 --- a/crates/uv-client/tests/user_agent_version.rs +++ b/crates/uv-client/tests/user_agent_version.rs @@ -10,11 +10,11 @@ use hyper_util::rt::TokioIo; use insta::{assert_json_snapshot, assert_snapshot, with_settings}; use tokio::net::TcpListener; -use pep508_rs::{MarkerEnvironment, MarkerEnvironmentBuilder}; -use platform_tags::{Arch, Os, Platform}; use uv_cache::Cache; use uv_client::LineHaul; use uv_client::RegistryClientBuilder; +use uv_pep508::{MarkerEnvironment, MarkerEnvironmentBuilder}; +use uv_platform_tags::{Arch, Os, Platform}; use uv_version::version; #[tokio::test] diff --git a/crates/uv-configuration/Cargo.toml b/crates/uv-configuration/Cargo.toml index 2f01a615d..974c76165 100644 --- a/crates/uv-configuration/Cargo.toml +++ b/crates/uv-configuration/Cargo.toml @@ -13,14 +13,14 @@ license = { workspace = true } workspace = true [dependencies] -cache-key = { workspace = true } -pep508_rs = { workspace = true, features = ["schemars"] } -platform-tags = { workspace = true } -pypi-types = { workspace = true } uv-auth = { workspace = true } uv-cache = { workspace = true } uv-cache-info = { workspace = true } +uv-cache-key = { workspace = true } uv-normalize = { workspace = true } +uv-pep508 = { workspace = true, features = ["schemars"] } +uv-platform-tags = { workspace = true } +uv-pypi-types = { workspace = true } clap = { workspace = true, features = ["derive"], optional = true } either = { workspace = true } diff --git a/crates/uv-configuration/src/build_options.rs b/crates/uv-configuration/src/build_options.rs index 9c58b6427..1a62a1a12 100644 --- a/crates/uv-configuration/src/build_options.rs +++ b/crates/uv-configuration/src/build_options.rs @@ -1,6 +1,6 @@ use std::fmt::{Display, Formatter}; -use pep508_rs::PackageName; +use uv_pep508::PackageName; use crate::{PackageNameSpecifier, PackageNameSpecifiers}; diff --git a/crates/uv-configuration/src/config_settings.rs b/crates/uv-configuration/src/config_settings.rs index 7ace0ac26..7d8907483 100644 --- a/crates/uv-configuration/src/config_settings.rs +++ b/crates/uv-configuration/src/config_settings.rs @@ -1,8 +1,8 @@ -use cache_key::CacheKeyHasher; use std::{ collections::{btree_map::Entry, BTreeMap}, str::FromStr, }; +use uv_cache_key::CacheKeyHasher; #[derive(Debug, Clone)] pub struct ConfigSettingEntry { @@ -161,7 +161,7 @@ impl ConfigSettings { } } -impl cache_key::CacheKey for ConfigSettings { +impl uv_cache_key::CacheKey for ConfigSettings { fn cache_key(&self, state: &mut CacheKeyHasher) { for (key, value) in &self.0 { key.cache_key(state); diff --git a/crates/uv-configuration/src/constraints.rs b/crates/uv-configuration/src/constraints.rs index 16a7bc6d8..01bcc4818 100644 --- a/crates/uv-configuration/src/constraints.rs +++ b/crates/uv-configuration/src/constraints.rs @@ -3,9 +3,9 @@ use std::borrow::Cow; use either::Either; use rustc_hash::FxHashMap; -use pep508_rs::MarkerTree; -use pypi_types::{Requirement, RequirementSource}; use uv_normalize::PackageName; +use uv_pep508::MarkerTree; +use uv_pypi_types::{Requirement, RequirementSource}; /// A set of constraints for a set of requirements. #[derive(Debug, Default, Clone)] diff --git a/crates/uv-configuration/src/install_options.rs b/crates/uv-configuration/src/install_options.rs index 0de0f411e..a42250bf9 100644 --- a/crates/uv-configuration/src/install_options.rs +++ b/crates/uv-configuration/src/install_options.rs @@ -2,7 +2,7 @@ use std::collections::BTreeSet; use tracing::debug; -use pep508_rs::PackageName; +use uv_pep508::PackageName; #[derive(Debug, Clone, Default)] pub struct InstallOptions { diff --git a/crates/uv-configuration/src/name_specifiers.rs b/crates/uv-configuration/src/name_specifiers.rs index 25b766188..4c36ad943 100644 --- a/crates/uv-configuration/src/name_specifiers.rs +++ b/crates/uv-configuration/src/name_specifiers.rs @@ -1,6 +1,6 @@ use std::str::FromStr; -use pep508_rs::PackageName; +use uv_pep508::PackageName; /// A specifier used for (e.g.) pip's `--no-binary` flag. /// diff --git a/crates/uv-configuration/src/overrides.rs b/crates/uv-configuration/src/overrides.rs index 316ac998d..28cae11ce 100644 --- a/crates/uv-configuration/src/overrides.rs +++ b/crates/uv-configuration/src/overrides.rs @@ -3,9 +3,9 @@ use std::borrow::Cow; use either::Either; use rustc_hash::{FxBuildHasher, FxHashMap}; -use pep508_rs::MarkerTree; -use pypi_types::Requirement; use uv_normalize::PackageName; +use uv_pep508::MarkerTree; +use uv_pypi_types::Requirement; /// A set of overrides for a set of requirements. #[derive(Debug, Default, Clone)] diff --git a/crates/uv-configuration/src/package_options.rs b/crates/uv-configuration/src/package_options.rs index babaa5dad..73b6d8b51 100644 --- a/crates/uv-configuration/src/package_options.rs +++ b/crates/uv-configuration/src/package_options.rs @@ -1,10 +1,10 @@ use either::Either; -use pep508_rs::PackageName; +use uv_pep508::PackageName; -use pypi_types::Requirement; use rustc_hash::FxHashMap; use uv_cache::Refresh; use uv_cache_info::Timestamp; +use uv_pypi_types::Requirement; /// Whether to reinstall packages. #[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)] diff --git a/crates/uv-configuration/src/target_triple.rs b/crates/uv-configuration/src/target_triple.rs index 35e71bb4e..f884df409 100644 --- a/crates/uv-configuration/src/target_triple.rs +++ b/crates/uv-configuration/src/target_triple.rs @@ -1,7 +1,7 @@ use tracing::debug; -use pep508_rs::MarkerEnvironment; -use platform_tags::{Arch, Os, Platform}; +use uv_pep508::MarkerEnvironment; +use uv_platform_tags::{Arch, Os, Platform}; /// The supported target triples. Each triple consists of an architecture, vendor, and operating /// system. diff --git a/crates/uv-dev/Cargo.toml b/crates/uv-dev/Cargo.toml index cc3f17626..2193afa2a 100644 --- a/crates/uv-dev/Cargo.toml +++ b/crates/uv-dev/Cargo.toml @@ -16,16 +16,16 @@ license = { workspace = true } workspace = true [dependencies] -distribution-filename = { workspace = true } -distribution-types = { workspace = true } -pep508_rs = { workspace = true } -pypi-types = { workspace = true } uv-cache = { workspace = true, features = ["clap"] } uv-cli = { workspace = true } uv-client = { workspace = true } +uv-distribution-filename = { workspace = true } +uv-distribution-types = { workspace = true } uv-installer = { workspace = true } uv-macros = { workspace = true } uv-options-metadata = { workspace = true } +uv-pep508 = { workspace = true } +uv-pypi-types = { workspace = true } uv-python = { workspace = true } uv-settings = { workspace = true, features = ["schemars"] } uv-workspace = { workspace = true, features = ["schemars"] } diff --git a/crates/uv-dev/src/wheel_metadata.rs b/crates/uv-dev/src/wheel_metadata.rs index 933c8811b..421709810 100644 --- a/crates/uv-dev/src/wheel_metadata.rs +++ b/crates/uv-dev/src/wheel_metadata.rs @@ -4,12 +4,12 @@ use anstream::println; use anyhow::{bail, Result}; use clap::Parser; -use distribution_filename::WheelFilename; -use distribution_types::{BuiltDist, DirectUrlBuiltDist, IndexCapabilities, RemoteSource}; -use pep508_rs::VerbatimUrl; -use pypi_types::ParsedUrl; use uv_cache::{Cache, CacheArgs}; use uv_client::RegistryClientBuilder; +use uv_distribution_filename::WheelFilename; +use uv_distribution_types::{BuiltDist, DirectUrlBuiltDist, IndexCapabilities, RemoteSource}; +use uv_pep508::VerbatimUrl; +use uv_pypi_types::ParsedUrl; #[derive(Parser)] pub(crate) struct WheelMetadataArgs { diff --git a/crates/uv-dispatch/Cargo.toml b/crates/uv-dispatch/Cargo.toml index 424e07d83..638caa7aa 100644 --- a/crates/uv-dispatch/Cargo.toml +++ b/crates/uv-dispatch/Cargo.toml @@ -14,16 +14,16 @@ license = { workspace = true } workspace = true [dependencies] -distribution-types = { workspace = true } -install-wheel-rs = { workspace = true } -pypi-types = { workspace = true } uv-build-frontend = { workspace = true } uv-cache = { workspace = true } uv-client = { workspace = true } uv-configuration = { workspace = true } uv-distribution = { workspace = true } +uv-distribution-types = { workspace = true } uv-git = { workspace = true } +uv-install-wheel = { workspace = true } uv-installer = { workspace = true } +uv-pypi-types = { workspace = true } uv-python = { workspace = true } uv-resolver = { workspace = true } uv-types = { workspace = true } diff --git a/crates/uv-dispatch/src/lib.rs b/crates/uv-dispatch/src/lib.rs index cbca02b22..14bd93d5b 100644 --- a/crates/uv-dispatch/src/lib.rs +++ b/crates/uv-dispatch/src/lib.rs @@ -11,11 +11,6 @@ use itertools::Itertools; use rustc_hash::FxHashMap; use tracing::{debug, instrument}; -use distribution_types::{ - CachedDist, DependencyMetadata, IndexCapabilities, IndexLocations, Name, Resolution, - SourceDist, VersionOrUrlRef, -}; -use pypi_types::Requirement; use uv_build_frontend::{SourceBuild, SourceBuildContext}; use uv_cache::Cache; use uv_client::RegistryClient; @@ -24,8 +19,13 @@ use uv_configuration::{ }; use uv_configuration::{BuildOutput, Concurrency}; use uv_distribution::DistributionDatabase; +use uv_distribution_types::{ + CachedDist, DependencyMetadata, IndexCapabilities, IndexLocations, Name, Resolution, + SourceDist, VersionOrUrlRef, +}; use uv_git::GitResolver; use uv_installer::{Installer, Plan, Planner, Preparer, SitePackages}; +use uv_pypi_types::Requirement; use uv_python::{Interpreter, PythonEnvironment}; use uv_resolver::{ ExcludeNewer, FlatIndex, InMemoryIndex, Manifest, OptionsBuilder, PythonRequirement, Resolver, @@ -314,9 +314,9 @@ impl<'a> BuildContext for BuildDispatch<'a> { build_kind: BuildKind, build_output: BuildOutput, ) -> Result { - let dist_name = dist.map(distribution_types::Name::name); + let dist_name = dist.map(uv_distribution_types::Name::name); let dist_version = dist - .map(distribution_types::DistributionMetadata::version_or_url) + .map(uv_distribution_types::DistributionMetadata::version_or_url) .and_then(|version| match version { VersionOrUrlRef::Version(version) => Some(version), VersionOrUrlRef::Url(_) => None, diff --git a/crates/distribution-filename/Cargo.toml b/crates/uv-distribution-filename/Cargo.toml similarity index 82% rename from crates/distribution-filename/Cargo.toml rename to crates/uv-distribution-filename/Cargo.toml index 552d85e78..5411b75cb 100644 --- a/crates/distribution-filename/Cargo.toml +++ b/crates/uv-distribution-filename/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "distribution-filename" +name = "uv-distribution-filename" version = "0.0.1" edition = { workspace = true } rust-version = { workspace = true } @@ -13,9 +13,9 @@ license = { workspace = true } workspace = true [dependencies] -pep440_rs = { workspace = true } -platform-tags = { workspace = true } uv-normalize = { workspace = true } +uv-pep440 = { workspace = true } +uv-platform-tags = { workspace = true } rkyv = { workspace = true } serde = { workspace = true } diff --git a/crates/distribution-filename/src/build_tag.rs b/crates/uv-distribution-filename/src/build_tag.rs similarity index 100% rename from crates/distribution-filename/src/build_tag.rs rename to crates/uv-distribution-filename/src/build_tag.rs diff --git a/crates/distribution-filename/src/egg.rs b/crates/uv-distribution-filename/src/egg.rs similarity index 98% rename from crates/distribution-filename/src/egg.rs rename to crates/uv-distribution-filename/src/egg.rs index 79ff9cb91..f891169a3 100644 --- a/crates/distribution-filename/src/egg.rs +++ b/crates/uv-distribution-filename/src/egg.rs @@ -2,8 +2,8 @@ use std::str::FromStr; use thiserror::Error; -use pep440_rs::{Version, VersionParseError}; use uv_normalize::{InvalidNameError, PackageName}; +use uv_pep440::{Version, VersionParseError}; #[derive(Error, Debug)] pub enum EggInfoFilenameError { diff --git a/crates/distribution-filename/src/extension.rs b/crates/uv-distribution-filename/src/extension.rs similarity index 100% rename from crates/distribution-filename/src/extension.rs rename to crates/uv-distribution-filename/src/extension.rs diff --git a/crates/distribution-filename/src/lib.rs b/crates/uv-distribution-filename/src/lib.rs similarity index 99% rename from crates/distribution-filename/src/lib.rs rename to crates/uv-distribution-filename/src/lib.rs index 9c7989558..0bdc4feef 100644 --- a/crates/distribution-filename/src/lib.rs +++ b/crates/uv-distribution-filename/src/lib.rs @@ -1,7 +1,7 @@ -use pep440_rs::Version; use std::fmt::{Display, Formatter}; use std::str::FromStr; use uv_normalize::PackageName; +use uv_pep440::Version; pub use build_tag::{BuildTag, BuildTagError}; pub use egg::{EggInfoFilename, EggInfoFilenameError}; diff --git a/crates/distribution-filename/src/snapshots/distribution_filename__wheel__tests__ok_build_tag.snap b/crates/uv-distribution-filename/src/snapshots/uv_distribution_filename__wheel__tests__ok_build_tag.snap similarity index 90% rename from crates/distribution-filename/src/snapshots/distribution_filename__wheel__tests__ok_build_tag.snap rename to crates/uv-distribution-filename/src/snapshots/uv_distribution_filename__wheel__tests__ok_build_tag.snap index 99a93741e..1e8c68ebc 100644 --- a/crates/distribution-filename/src/snapshots/distribution_filename__wheel__tests__ok_build_tag.snap +++ b/crates/uv-distribution-filename/src/snapshots/uv_distribution_filename__wheel__tests__ok_build_tag.snap @@ -1,5 +1,5 @@ --- -source: crates/distribution-filename/src/wheel.rs +source: crates/uv-distribution-filename/src/wheel.rs expression: "WheelFilename::from_str(\"foo-1.2.3-202206090410-python-abi-platform.whl\")" --- Ok( diff --git a/crates/distribution-filename/src/snapshots/distribution_filename__wheel__tests__ok_multiple_tags.snap b/crates/uv-distribution-filename/src/snapshots/uv_distribution_filename__wheel__tests__ok_multiple_tags.snap similarity index 90% rename from crates/distribution-filename/src/snapshots/distribution_filename__wheel__tests__ok_multiple_tags.snap rename to crates/uv-distribution-filename/src/snapshots/uv_distribution_filename__wheel__tests__ok_multiple_tags.snap index 105da9b0c..fcf8d5aa3 100644 --- a/crates/distribution-filename/src/snapshots/distribution_filename__wheel__tests__ok_multiple_tags.snap +++ b/crates/uv-distribution-filename/src/snapshots/uv_distribution_filename__wheel__tests__ok_multiple_tags.snap @@ -1,5 +1,5 @@ --- -source: crates/distribution-filename/src/wheel.rs +source: crates/uv-distribution-filename/src/wheel.rs expression: "WheelFilename::from_str(\"foo-1.2.3-ab.cd.ef-gh-ij.kl.mn.op.qr.st.whl\")" --- Ok( diff --git a/crates/distribution-filename/src/snapshots/distribution_filename__wheel__tests__ok_single_tags.snap b/crates/uv-distribution-filename/src/snapshots/uv_distribution_filename__wheel__tests__ok_single_tags.snap similarity index 87% rename from crates/distribution-filename/src/snapshots/distribution_filename__wheel__tests__ok_single_tags.snap rename to crates/uv-distribution-filename/src/snapshots/uv_distribution_filename__wheel__tests__ok_single_tags.snap index 7700e2b45..a649b96df 100644 --- a/crates/distribution-filename/src/snapshots/distribution_filename__wheel__tests__ok_single_tags.snap +++ b/crates/uv-distribution-filename/src/snapshots/uv_distribution_filename__wheel__tests__ok_single_tags.snap @@ -1,5 +1,5 @@ --- -source: crates/distribution-filename/src/wheel.rs +source: crates/uv-distribution-filename/src/wheel.rs expression: "WheelFilename::from_str(\"foo-1.2.3-foo-bar-baz.whl\")" --- Ok( diff --git a/crates/distribution-filename/src/source_dist.rs b/crates/uv-distribution-filename/src/source_dist.rs similarity index 99% rename from crates/distribution-filename/src/source_dist.rs rename to crates/uv-distribution-filename/src/source_dist.rs index 4f385073a..a3920a32d 100644 --- a/crates/distribution-filename/src/source_dist.rs +++ b/crates/uv-distribution-filename/src/source_dist.rs @@ -2,10 +2,10 @@ use std::fmt::{Display, Formatter}; use std::str::FromStr; use crate::SourceDistExtension; -use pep440_rs::{Version, VersionParseError}; use serde::{Deserialize, Serialize}; use thiserror::Error; use uv_normalize::{InvalidNameError, PackageName}; +use uv_pep440::{Version, VersionParseError}; /// Note that this is a normalized and not an exact representation, keep the original string if you /// need the latter. diff --git a/crates/distribution-filename/src/wheel.rs b/crates/uv-distribution-filename/src/wheel.rs similarity index 99% rename from crates/distribution-filename/src/wheel.rs rename to crates/uv-distribution-filename/src/wheel.rs index c8dafba4b..a91c3e141 100644 --- a/crates/distribution-filename/src/wheel.rs +++ b/crates/uv-distribution-filename/src/wheel.rs @@ -5,9 +5,9 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use thiserror::Error; use url::Url; -use pep440_rs::{Version, VersionParseError}; -use platform_tags::{TagCompatibility, Tags}; use uv_normalize::{InvalidNameError, PackageName}; +use uv_pep440::{Version, VersionParseError}; +use uv_platform_tags::{TagCompatibility, Tags}; use crate::{BuildTag, BuildTagError}; diff --git a/crates/distribution-types/Cargo.toml b/crates/uv-distribution-types/Cargo.toml similarity index 75% rename from crates/distribution-types/Cargo.toml rename to crates/uv-distribution-types/Cargo.toml index 714b14d51..6752ec66a 100644 --- a/crates/distribution-types/Cargo.toml +++ b/crates/uv-distribution-types/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "distribution-types" +name = "uv-distribution-types" version = "0.0.1" edition = { workspace = true } rust-version = { workspace = true } @@ -13,16 +13,16 @@ license = { workspace = true } workspace = true [dependencies] -cache-key = { workspace = true } -distribution-filename = { workspace = true } -pep440_rs = { workspace = true } -pep508_rs = { workspace = true, features = ["serde"] } -platform-tags = { workspace = true } -pypi-types = { workspace = true } uv-cache-info = { workspace = true } +uv-cache-key = { workspace = true } +uv-distribution-filename = { workspace = true } uv-fs = { workspace = true } uv-git = { workspace = true } uv-normalize = { workspace = true } +uv-pep440 = { workspace = true } +uv-pep508 = { workspace = true, features = ["serde"] } +uv-platform-tags = { workspace = true } +uv-pypi-types = { workspace = true } anyhow = { workspace = true } fs-err = { workspace = true } diff --git a/crates/distribution-types/src/annotation.rs b/crates/uv-distribution-types/src/annotation.rs similarity index 98% rename from crates/distribution-types/src/annotation.rs rename to crates/uv-distribution-types/src/annotation.rs index 6a4932b3f..1a6569549 100644 --- a/crates/distribution-types/src/annotation.rs +++ b/crates/uv-distribution-types/src/annotation.rs @@ -1,8 +1,8 @@ use std::collections::{BTreeMap, BTreeSet}; -use pep508_rs::RequirementOrigin; use uv_fs::Simplified; use uv_normalize::PackageName; +use uv_pep508::RequirementOrigin; /// Source of a dependency, e.g., a `-r requirements.txt` file. #[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] diff --git a/crates/distribution-types/src/any.rs b/crates/uv-distribution-types/src/any.rs similarity index 100% rename from crates/distribution-types/src/any.rs rename to crates/uv-distribution-types/src/any.rs diff --git a/crates/distribution-types/src/buildable.rs b/crates/uv-distribution-types/src/buildable.rs similarity index 98% rename from crates/distribution-types/src/buildable.rs rename to crates/uv-distribution-types/src/buildable.rs index 3b8756b46..9f096f3f5 100644 --- a/crates/distribution-types/src/buildable.rs +++ b/crates/uv-distribution-types/src/buildable.rs @@ -1,11 +1,11 @@ use std::borrow::Cow; use std::path::Path; -use distribution_filename::SourceDistExtension; -use pep440_rs::Version; -use pep508_rs::VerbatimUrl; use url::Url; +use uv_distribution_filename::SourceDistExtension; use uv_git::GitUrl; +use uv_pep440::Version; +use uv_pep508::VerbatimUrl; use uv_normalize::PackageName; diff --git a/crates/distribution-types/src/cached.rs b/crates/uv-distribution-types/src/cached.rs similarity index 98% rename from crates/distribution-types/src/cached.rs rename to crates/uv-distribution-types/src/cached.rs index eb00a7598..14cd1358b 100644 --- a/crates/distribution-types/src/cached.rs +++ b/crates/uv-distribution-types/src/cached.rs @@ -2,11 +2,11 @@ use std::path::{Path, PathBuf}; use anyhow::{anyhow, Result}; -use distribution_filename::WheelFilename; -use pep508_rs::VerbatimUrl; -use pypi_types::{HashDigest, ParsedDirectoryUrl}; use uv_cache_info::CacheInfo; +use uv_distribution_filename::WheelFilename; use uv_normalize::PackageName; +use uv_pep508::VerbatimUrl; +use uv_pypi_types::{HashDigest, ParsedDirectoryUrl}; use crate::{ BuiltDist, Dist, DistributionMetadata, Hashed, InstalledMetadata, InstalledVersion, Name, diff --git a/crates/distribution-types/src/dependency_metadata.rs b/crates/uv-distribution-types/src/dependency_metadata.rs similarity index 95% rename from crates/distribution-types/src/dependency_metadata.rs rename to crates/uv-distribution-types/src/dependency_metadata.rs index 0363bdee7..f4d2e8bda 100644 --- a/crates/distribution-types/src/dependency_metadata.rs +++ b/crates/uv-distribution-types/src/dependency_metadata.rs @@ -1,9 +1,9 @@ -use pep440_rs::{Version, VersionSpecifiers}; -use pep508_rs::Requirement; -use pypi_types::{ResolutionMetadata, VerbatimParsedUrl}; use rustc_hash::FxHashMap; use serde::{Deserialize, Serialize}; use uv_normalize::{ExtraName, PackageName}; +use uv_pep440::{Version, VersionSpecifiers}; +use uv_pep508::Requirement; +use uv_pypi_types::{ResolutionMetadata, VerbatimParsedUrl}; /// Pre-defined [`StaticMetadata`] entries, indexed by [`PackageName`] and [`Version`]. #[derive(Debug, Clone, Default)] diff --git a/crates/distribution-types/src/diagnostic.rs b/crates/uv-distribution-types/src/diagnostic.rs similarity index 100% rename from crates/distribution-types/src/diagnostic.rs rename to crates/uv-distribution-types/src/diagnostic.rs diff --git a/crates/distribution-types/src/error.rs b/crates/uv-distribution-types/src/error.rs similarity index 88% rename from crates/distribution-types/src/error.rs rename to crates/uv-distribution-types/src/error.rs index f0472d94a..8c03d5b40 100644 --- a/crates/distribution-types/src/error.rs +++ b/crates/uv-distribution-types/src/error.rs @@ -11,7 +11,7 @@ pub enum Error { Utf8(#[from] std::string::FromUtf8Error), #[error(transparent)] - WheelFilename(#[from] distribution_filename::WheelFilenameError), + WheelFilename(#[from] uv_distribution_filename::WheelFilenameError), #[error("Could not extract path segments from URL: {0}")] MissingPathSegments(String), diff --git a/crates/distribution-types/src/file.rs b/crates/uv-distribution-types/src/file.rs similarity index 95% rename from crates/distribution-types/src/file.rs rename to crates/uv-distribution-types/src/file.rs index 078f65f6a..e0bc7a4a4 100644 --- a/crates/distribution-types/src/file.rs +++ b/crates/uv-distribution-types/src/file.rs @@ -7,11 +7,11 @@ use jiff::Timestamp; use serde::{Deserialize, Serialize}; use url::Url; -use pep440_rs::{VersionSpecifiers, VersionSpecifiersParseError}; -use pep508_rs::VerbatimUrl; -use pypi_types::{CoreMetadata, HashDigest, Yanked}; +use uv_pep440::{VersionSpecifiers, VersionSpecifiersParseError}; +use uv_pep508::VerbatimUrl; +use uv_pypi_types::{CoreMetadata, HashDigest, Yanked}; -/// Error converting [`pypi_types::File`] to [`distribution_type::File`]. +/// Error converting [`uv_pypi_types::File`] to [`distribution_type::File`]. #[derive(Debug, thiserror::Error)] pub enum FileConversionError { #[error("Failed to parse `requires-python`: `{0}`")] @@ -20,7 +20,7 @@ pub enum FileConversionError { Url(String, #[source] url::ParseError), } -/// Internal analog to [`pypi_types::File`]. +/// Internal analog to [`uv_pypi_types::File`]. #[derive(Debug, Clone, Hash, rkyv::Archive, rkyv::Deserialize, rkyv::Serialize)] #[rkyv(derive(Debug))] pub struct File { @@ -40,7 +40,7 @@ pub struct File { impl File { /// `TryFrom` instead of `From` to filter out files with invalid requires python version specifiers - pub fn try_from(file: pypi_types::File, base: &Url) -> Result { + pub fn try_from(file: uv_pypi_types::File, base: &Url) -> Result { Ok(Self { dist_info_metadata: file .core_metadata diff --git a/crates/distribution-types/src/hash.rs b/crates/uv-distribution-types/src/hash.rs similarity index 98% rename from crates/distribution-types/src/hash.rs rename to crates/uv-distribution-types/src/hash.rs index 553a74f55..e1a8ed472 100644 --- a/crates/distribution-types/src/hash.rs +++ b/crates/uv-distribution-types/src/hash.rs @@ -1,4 +1,4 @@ -use pypi_types::{HashAlgorithm, HashDigest}; +use uv_pypi_types::{HashAlgorithm, HashDigest}; #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum HashPolicy<'a> { diff --git a/crates/distribution-types/src/id.rs b/crates/uv-distribution-types/src/id.rs similarity index 97% rename from crates/distribution-types/src/id.rs rename to crates/uv-distribution-types/src/id.rs index 989e566e7..43fb355e4 100644 --- a/crates/distribution-types/src/id.rs +++ b/crates/uv-distribution-types/src/id.rs @@ -1,12 +1,12 @@ use std::fmt::{Display, Formatter}; use std::path::PathBuf; -use cache_key::{CanonicalUrl, RepositoryUrl}; use url::Url; +use uv_cache_key::{CanonicalUrl, RepositoryUrl}; -use pep440_rs::Version; -use pypi_types::HashDigest; use uv_normalize::PackageName; +use uv_pep440::Version; +use uv_pypi_types::HashDigest; /// A unique identifier for a package. A package can either be identified by a name (e.g., `black`) /// or a URL (e.g., `git+https://github.com/psf/black`). diff --git a/crates/distribution-types/src/index_url.rs b/crates/uv-distribution-types/src/index_url.rs similarity index 99% rename from crates/distribution-types/src/index_url.rs rename to crates/uv-distribution-types/src/index_url.rs index 19175c608..cd3eb8ad1 100644 --- a/crates/distribution-types/src/index_url.rs +++ b/crates/uv-distribution-types/src/index_url.rs @@ -9,7 +9,7 @@ use std::sync::{Arc, LazyLock, RwLock}; use thiserror::Error; use url::{ParseError, Url}; -use pep508_rs::{VerbatimUrl, VerbatimUrlError}; +use uv_pep508::{VerbatimUrl, VerbatimUrlError}; use crate::Verbatim; diff --git a/crates/distribution-types/src/installed.rs b/crates/uv-distribution-types/src/installed.rs similarity index 96% rename from crates/distribution-types/src/installed.rs rename to crates/uv-distribution-types/src/installed.rs index bc576d8c1..dee8570d6 100644 --- a/crates/distribution-types/src/installed.rs +++ b/crates/uv-distribution-types/src/installed.rs @@ -7,12 +7,12 @@ use fs_err as fs; use tracing::warn; use url::Url; -use distribution_filename::EggInfoFilename; -use pep440_rs::Version; -use pypi_types::DirectUrl; use uv_cache_info::CacheInfo; +use uv_distribution_filename::EggInfoFilename; use uv_fs::Simplified; use uv_normalize::PackageName; +use uv_pep440::Version; +use uv_pypi_types::DirectUrl; use crate::{DistributionMetadata, InstalledMetadata, InstalledVersion, Name, VersionOrUrlRef}; @@ -285,13 +285,13 @@ impl InstalledDist { } /// Read the `METADATA` file from a `.dist-info` directory. - pub fn metadata(&self) -> Result { + pub fn metadata(&self) -> Result { match self { Self::Registry(_) | Self::Url(_) => { let path = self.path().join("METADATA"); let contents = fs::read(&path)?; // TODO(zanieb): Update this to use thiserror so we can unpack parse errors downstream - pypi_types::ResolutionMetadata::parse_metadata(&contents).with_context(|| { + uv_pypi_types::ResolutionMetadata::parse_metadata(&contents).with_context(|| { format!( "Failed to parse `METADATA` file at: {}", path.user_display() @@ -306,7 +306,7 @@ impl InstalledDist { _ => unreachable!(), }; let contents = fs::read(path.as_ref())?; - pypi_types::ResolutionMetadata::parse_metadata(&contents).with_context(|| { + uv_pypi_types::ResolutionMetadata::parse_metadata(&contents).with_context(|| { format!( "Failed to parse `PKG-INFO` file at: {}", path.user_display() @@ -447,7 +447,7 @@ impl InstalledMetadata for InstalledDist { } } -fn read_metadata(path: &Path) -> Option { +fn read_metadata(path: &Path) -> Option { let content = match fs::read(path) { Ok(content) => content, Err(err) => { @@ -455,7 +455,7 @@ fn read_metadata(path: &Path) -> Option { return None; } }; - let metadata = match pypi_types::Metadata10::parse_pkg_info(&content) { + let metadata = match uv_pypi_types::Metadata10::parse_pkg_info(&content) { Ok(metadata) => metadata, Err(err) => { warn!("Failed to parse metadata for {path:?}: {err}"); diff --git a/crates/distribution-types/src/lib.rs b/crates/uv-distribution-types/src/lib.rs similarity index 99% rename from crates/distribution-types/src/lib.rs rename to crates/uv-distribution-types/src/lib.rs index 7c48fb38e..a77d05185 100644 --- a/crates/distribution-types/src/lib.rs +++ b/crates/uv-distribution-types/src/lib.rs @@ -39,13 +39,13 @@ use std::str::FromStr; use url::Url; -use distribution_filename::{DistExtension, SourceDistExtension, WheelFilename}; -use pep440_rs::Version; -use pep508_rs::{Pep508Url, VerbatimUrl}; -use pypi_types::{ParsedUrl, VerbatimParsedUrl}; +use uv_distribution_filename::{DistExtension, SourceDistExtension, WheelFilename}; use uv_fs::normalize_absolute_path; use uv_git::GitUrl; use uv_normalize::PackageName; +use uv_pep440::Version; +use uv_pep508::{Pep508Url, VerbatimUrl}; +use uv_pypi_types::{ParsedUrl, VerbatimParsedUrl}; pub use crate::annotation::*; pub use crate::any::*; @@ -983,11 +983,11 @@ impl RemoteSource for Dist { impl Identifier for Url { fn distribution_id(&self) -> DistributionId { - DistributionId::Url(cache_key::CanonicalUrl::new(self)) + DistributionId::Url(uv_cache_key::CanonicalUrl::new(self)) } fn resource_id(&self) -> ResourceId { - ResourceId::Url(cache_key::RepositoryUrl::new(self)) + ResourceId::Url(uv_cache_key::RepositoryUrl::new(self)) } } diff --git a/crates/distribution-types/src/prioritized_distribution.rs b/crates/uv-distribution-types/src/prioritized_distribution.rs similarity index 99% rename from crates/distribution-types/src/prioritized_distribution.rs rename to crates/uv-distribution-types/src/prioritized_distribution.rs index 27bc7be2d..5a6aa2cd8 100644 --- a/crates/distribution-types/src/prioritized_distribution.rs +++ b/crates/uv-distribution-types/src/prioritized_distribution.rs @@ -1,9 +1,9 @@ -use distribution_filename::BuildTag; use std::fmt::{Display, Formatter}; +use uv_distribution_filename::BuildTag; -use pep440_rs::VersionSpecifiers; -use platform_tags::{IncompatibleTag, TagPriority}; -use pypi_types::{HashDigest, Yanked}; +use uv_pep440::VersionSpecifiers; +use uv_platform_tags::{IncompatibleTag, TagPriority}; +use uv_pypi_types::{HashDigest, Yanked}; use crate::{ InstalledDist, RegistryBuiltDist, RegistryBuiltWheel, RegistrySourceDist, ResolvedDistRef, diff --git a/crates/distribution-types/src/resolution.rs b/crates/uv-distribution-types/src/resolution.rs similarity index 94% rename from crates/distribution-types/src/resolution.rs rename to crates/uv-distribution-types/src/resolution.rs index 8501d4a30..f8b51b160 100644 --- a/crates/distribution-types/src/resolution.rs +++ b/crates/uv-distribution-types/src/resolution.rs @@ -1,8 +1,8 @@ -use distribution_filename::DistExtension; -use pep508_rs::MarkerTree; -use pypi_types::{HashDigest, Requirement, RequirementSource}; use std::collections::BTreeMap; +use uv_distribution_filename::DistExtension; use uv_normalize::{ExtraName, GroupName, PackageName}; +use uv_pep508::MarkerTree; +use uv_pypi_types::{HashDigest, Requirement, RequirementSource}; use crate::{BuiltDist, Diagnostic, Dist, Name, ResolvedDist, SourceDist}; @@ -185,8 +185,8 @@ impl From<&ResolvedDist> for Requirement { let source = match resolved_dist { ResolvedDist::Installable(dist) => match dist { Dist::Built(BuiltDist::Registry(wheels)) => RequirementSource::Registry { - specifier: pep440_rs::VersionSpecifiers::from( - pep440_rs::VersionSpecifier::equals_version( + specifier: uv_pep440::VersionSpecifiers::from( + uv_pep440::VersionSpecifier::equals_version( wheels.best_wheel().filename.version.clone(), ), ), @@ -208,8 +208,8 @@ impl From<&ResolvedDist> for Requirement { ext: DistExtension::Wheel, }, Dist::Source(SourceDist::Registry(sdist)) => RequirementSource::Registry { - specifier: pep440_rs::VersionSpecifiers::from( - pep440_rs::VersionSpecifier::equals_version(sdist.version.clone()), + specifier: uv_pep440::VersionSpecifiers::from( + uv_pep440::VersionSpecifier::equals_version(sdist.version.clone()), ), index: None, }, @@ -243,8 +243,8 @@ impl From<&ResolvedDist> for Requirement { }, }, ResolvedDist::Installed(dist) => RequirementSource::Registry { - specifier: pep440_rs::VersionSpecifiers::from( - pep440_rs::VersionSpecifier::equals_version(dist.version().clone()), + specifier: uv_pep440::VersionSpecifiers::from( + uv_pep440::VersionSpecifier::equals_version(dist.version().clone()), ), index: None, }, diff --git a/crates/distribution-types/src/resolved.rs b/crates/uv-distribution-types/src/resolved.rs similarity index 99% rename from crates/distribution-types/src/resolved.rs rename to crates/uv-distribution-types/src/resolved.rs index 5cf73dbaa..b5bb587f3 100644 --- a/crates/distribution-types/src/resolved.rs +++ b/crates/uv-distribution-types/src/resolved.rs @@ -1,7 +1,7 @@ use std::fmt::{Display, Formatter}; -use pep508_rs::PackageName; -use pypi_types::Yanked; +use uv_pep508::PackageName; +use uv_pypi_types::Yanked; use crate::{ BuiltDist, Dist, DistributionId, DistributionMetadata, Identifier, IndexUrl, InstalledDist, diff --git a/crates/distribution-types/src/specified_requirement.rs b/crates/uv-distribution-types/src/specified_requirement.rs similarity index 96% rename from crates/distribution-types/src/specified_requirement.rs rename to crates/uv-distribution-types/src/specified_requirement.rs index f9bc2fc2d..97a096ea9 100644 --- a/crates/distribution-types/src/specified_requirement.rs +++ b/crates/uv-distribution-types/src/specified_requirement.rs @@ -1,9 +1,9 @@ use std::borrow::Cow; use std::fmt::{Display, Formatter}; -use pep508_rs::{MarkerEnvironment, UnnamedRequirement}; -use pypi_types::{Hashes, ParsedUrl, Requirement, RequirementSource}; use uv_normalize::ExtraName; +use uv_pep508::{MarkerEnvironment, UnnamedRequirement}; +use uv_pypi_types::{Hashes, ParsedUrl, Requirement, RequirementSource}; use crate::VerbatimParsedUrl; @@ -33,7 +33,7 @@ pub struct UnresolvedRequirementSpecification { /// resolve the requirement name. /// /// Analog to `RequirementsTxtRequirement` but with `distribution_types::Requirement` instead of -/// `pep508_rs::Requirement`. +/// `uv_pep508::Requirement`. #[derive(Hash, Debug, Clone, Eq, PartialEq)] pub enum UnresolvedRequirement { /// The uv-specific superset over PEP 508 requirements specifier incorporating diff --git a/crates/distribution-types/src/traits.rs b/crates/uv-distribution-types/src/traits.rs similarity index 98% rename from crates/distribution-types/src/traits.rs rename to crates/uv-distribution-types/src/traits.rs index ebd9c2ada..de3eb0dda 100644 --- a/crates/distribution-types/src/traits.rs +++ b/crates/uv-distribution-types/src/traits.rs @@ -1,7 +1,7 @@ use std::borrow::Cow; -use pep508_rs::VerbatimUrl; use uv_normalize::PackageName; +use uv_pep508::VerbatimUrl; use crate::error::Error; use crate::{ @@ -20,7 +20,7 @@ pub trait Name { /// Metadata that can be resolved from a requirements specification alone (i.e., prior to building /// or installing the distribution). pub trait DistributionMetadata: Name { - /// Return a [`pep440_rs::Version`], for registry-based distributions, or a [`url::Url`], + /// Return a [`uv_pep440::Version`], for registry-based distributions, or a [`url::Url`], /// for URL-based distributions. fn version_or_url(&self) -> VersionOrUrlRef; diff --git a/crates/uv-distribution/Cargo.toml b/crates/uv-distribution/Cargo.toml index 868673c10..631066b51 100644 --- a/crates/uv-distribution/Cargo.toml +++ b/crates/uv-distribution/Cargo.toml @@ -13,22 +13,22 @@ license = { workspace = true } workspace = true [dependencies] -cache-key = { workspace = true } -distribution-filename = { workspace = true } -distribution-types = { workspace = true } -pep440_rs = { workspace = true } -pep508_rs = { workspace = true } -platform-tags = { workspace = true } -pypi-types = { workspace = true } uv-cache = { workspace = true } uv-cache-info = { workspace = true } +uv-cache-key = { workspace = true } uv-client = { workspace = true } uv-configuration = { workspace = true } +uv-distribution-filename = { workspace = true } +uv-distribution-types = { workspace = true } uv-extract = { workspace = true } uv-fs = { workspace = true, features = ["tokio"] } uv-git = { workspace = true } uv-metadata = { workspace = true } uv-normalize = { workspace = true } +uv-pep440 = { workspace = true } +uv-pep508 = { workspace = true } +uv-platform-tags = { workspace = true } +uv-pypi-types = { workspace = true } uv-types = { workspace = true } uv-warnings = { workspace = true } uv-workspace = { workspace = true } diff --git a/crates/uv-distribution/src/archive.rs b/crates/uv-distribution/src/archive.rs index eb4258bf7..cde4b2204 100644 --- a/crates/uv-distribution/src/archive.rs +++ b/crates/uv-distribution/src/archive.rs @@ -1,6 +1,6 @@ -use distribution_types::Hashed; -use pypi_types::HashDigest; use uv_cache::{ArchiveId, Cache}; +use uv_distribution_types::Hashed; +use uv_pypi_types::HashDigest; /// An archive (unzipped wheel) that exists in the local cache. #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] diff --git a/crates/uv-distribution/src/distribution_database.rs b/crates/uv-distribution/src/distribution_database.rs index 8b4b56f4e..7350de08f 100644 --- a/crates/uv-distribution/src/distribution_database.rs +++ b/crates/uv-distribution/src/distribution_database.rs @@ -14,19 +14,19 @@ use tokio_util::compat::FuturesAsyncReadCompatExt; use tracing::{debug, info_span, instrument, warn, Instrument}; use url::Url; -use distribution_filename::WheelFilename; -use distribution_types::{ - BuildableSource, BuiltDist, Dist, FileLocation, HashPolicy, Hashed, Name, SourceDist, -}; -use platform_tags::Tags; -use pypi_types::HashDigest; use uv_cache::{ArchiveId, CacheBucket, CacheEntry, WheelCache}; use uv_cache_info::{CacheInfo, Timestamp}; use uv_client::{ CacheControl, CachedClientError, Connectivity, DataWithCachePolicy, RegistryClient, }; +use uv_distribution_filename::WheelFilename; +use uv_distribution_types::{ + BuildableSource, BuiltDist, Dist, FileLocation, HashPolicy, Hashed, Name, SourceDist, +}; use uv_extract::hash::Hasher; use uv_fs::write_atomic; +use uv_platform_tags::Tags; +use uv_pypi_types::HashDigest; use uv_types::BuildContext; use crate::archive::Archive; @@ -148,7 +148,7 @@ impl<'a, Context: BuildContext> DistributionDatabase<'a, Context> { let wheel = wheels.best_wheel(); let url = match &wheel.file.url { FileLocation::RelativeUrl(base, url) => { - pypi_types::base_url_join_relative(base, url)? + uv_pypi_types::base_url_join_relative(base, url)? } FileLocation::AbsoluteUrl(url) => url.to_url(), }; diff --git a/crates/uv-distribution/src/download.rs b/crates/uv-distribution/src/download.rs index e5a3175d8..35810793b 100644 --- a/crates/uv-distribution/src/download.rs +++ b/crates/uv-distribution/src/download.rs @@ -1,10 +1,10 @@ use std::path::{Path, PathBuf}; use crate::Error; -use distribution_filename::WheelFilename; -use distribution_types::{CachedDist, Dist, Hashed}; -use pypi_types::{HashDigest, ResolutionMetadata}; +use uv_distribution_filename::WheelFilename; +use uv_distribution_types::{CachedDist, Dist, Hashed}; use uv_metadata::read_flat_wheel_metadata; +use uv_pypi_types::{HashDigest, ResolutionMetadata}; use uv_cache_info::CacheInfo; diff --git a/crates/uv-distribution/src/error.rs b/crates/uv-distribution/src/error.rs index 36fa85333..01f4cd6b0 100644 --- a/crates/uv-distribution/src/error.rs +++ b/crates/uv-distribution/src/error.rs @@ -6,12 +6,12 @@ use url::Url; use zip::result::ZipError; use crate::metadata::MetadataError; -use distribution_filename::WheelFilenameError; -use pep440_rs::Version; -use pypi_types::{HashDigest, ParsedUrlError}; use uv_client::WrappedReqwestError; +use uv_distribution_filename::WheelFilenameError; use uv_fs::Simplified; use uv_normalize::PackageName; +use uv_pep440::Version; +use uv_pypi_types::{HashDigest, ParsedUrlError}; #[derive(Debug, thiserror::Error)] pub enum Error { @@ -26,7 +26,7 @@ pub enum Error { #[error(transparent)] ParsedUrl(#[from] ParsedUrlError), #[error(transparent)] - JoinRelativeUrl(#[from] pypi_types::JoinRelativeError), + JoinRelativeUrl(#[from] uv_pypi_types::JoinRelativeError), #[error("Expected a file URL, but received: {0}")] NonFileUrl(Url), #[error(transparent)] @@ -65,7 +65,7 @@ pub enum Error { #[error("Package metadata version `{metadata}` does not match given version `{given}`")] VersionMismatch { given: Version, metadata: Version }, #[error("Failed to parse metadata from built wheel")] - Metadata(#[from] pypi_types::MetadataError), + Metadata(#[from] uv_pypi_types::MetadataError), #[error("Failed to read metadata: `{}`", _0.user_display())] WheelMetadata(PathBuf, #[source] Box), #[error("Failed to read zip archive from built wheel")] @@ -81,13 +81,13 @@ pub enum Error { #[error("The source distribution is missing a `requires.txt` file")] MissingRequiresTxt, #[error("Failed to extract static metadata from `PKG-INFO`")] - PkgInfo(#[source] pypi_types::MetadataError), + PkgInfo(#[source] uv_pypi_types::MetadataError), #[error("Failed to extract metadata from `requires.txt`")] - RequiresTxt(#[source] pypi_types::MetadataError), + RequiresTxt(#[source] uv_pypi_types::MetadataError), #[error("The source distribution is missing a `pyproject.toml` file")] MissingPyprojectToml, #[error("Failed to extract static metadata from `pyproject.toml`")] - PyprojectToml(#[source] pypi_types::MetadataError), + PyprojectToml(#[source] uv_pypi_types::MetadataError), #[error("Unsupported scheme in URL: {0}")] UnsupportedScheme(String), #[error(transparent)] diff --git a/crates/uv-distribution/src/index/built_wheel_index.rs b/crates/uv-distribution/src/index/built_wheel_index.rs index 2138d7f73..45a04d939 100644 --- a/crates/uv-distribution/src/index/built_wheel_index.rs +++ b/crates/uv-distribution/src/index/built_wheel_index.rs @@ -1,14 +1,15 @@ use crate::index::cached_wheel::CachedWheel; use crate::source::{HttpRevisionPointer, LocalRevisionPointer, HTTP_REVISION, LOCAL_REVISION}; use crate::Error; -use distribution_types::{ - DirectUrlSourceDist, DirectorySourceDist, GitSourceDist, Hashed, PathSourceDist, -}; -use platform_tags::Tags; use uv_cache::{Cache, CacheBucket, CacheShard, WheelCache}; use uv_cache_info::CacheInfo; +use uv_cache_key::cache_digest; use uv_configuration::ConfigSettings; +use uv_distribution_types::{ + DirectUrlSourceDist, DirectorySourceDist, GitSourceDist, Hashed, PathSourceDist, +}; use uv_fs::symlinks; +use uv_platform_tags::Tags; use uv_types::HashStrategy; /// A local index of built distributions for a specific source distribution. @@ -65,7 +66,7 @@ impl<'a> BuiltWheelIndex<'a> { let cache_shard = if self.build_configuration.is_empty() { cache_shard } else { - cache_shard.shard(cache_key::cache_digest(self.build_configuration)) + cache_shard.shard(cache_digest(self.build_configuration)) }; Ok(self.find(&cache_shard)) @@ -102,7 +103,7 @@ impl<'a> BuiltWheelIndex<'a> { let cache_shard = if self.build_configuration.is_empty() { cache_shard } else { - cache_shard.shard(cache_key::cache_digest(self.build_configuration)) + cache_shard.shard(cache_digest(self.build_configuration)) }; Ok(self @@ -150,7 +151,7 @@ impl<'a> BuiltWheelIndex<'a> { let cache_shard = if self.build_configuration.is_empty() { cache_shard } else { - cache_shard.shard(cache_key::cache_digest(self.build_configuration)) + cache_shard.shard(cache_digest(self.build_configuration)) }; Ok(self @@ -176,7 +177,7 @@ impl<'a> BuiltWheelIndex<'a> { let cache_shard = if self.build_configuration.is_empty() { cache_shard } else { - cache_shard.shard(cache_key::cache_digest(self.build_configuration)) + cache_shard.shard(cache_digest(self.build_configuration)) }; self.find(&cache_shard) diff --git a/crates/uv-distribution/src/index/cached_wheel.rs b/crates/uv-distribution/src/index/cached_wheel.rs index 6fe2cca5b..bdddcf250 100644 --- a/crates/uv-distribution/src/index/cached_wheel.rs +++ b/crates/uv-distribution/src/index/cached_wheel.rs @@ -2,12 +2,12 @@ use std::path::Path; use crate::archive::Archive; use crate::{HttpArchivePointer, LocalArchivePointer}; -use distribution_filename::WheelFilename; -use distribution_types::{CachedDirectUrlDist, CachedRegistryDist, Hashed}; -use pep508_rs::VerbatimUrl; -use pypi_types::HashDigest; use uv_cache::{Cache, CacheBucket, CacheEntry}; use uv_cache_info::CacheInfo; +use uv_distribution_filename::WheelFilename; +use uv_distribution_types::{CachedDirectUrlDist, CachedRegistryDist, Hashed}; +use uv_pep508::VerbatimUrl; +use uv_pypi_types::HashDigest; #[derive(Debug, Clone)] pub struct CachedWheel { diff --git a/crates/uv-distribution/src/index/registry_wheel_index.rs b/crates/uv-distribution/src/index/registry_wheel_index.rs index 709a07a48..f751a3fea 100644 --- a/crates/uv-distribution/src/index/registry_wheel_index.rs +++ b/crates/uv-distribution/src/index/registry_wheel_index.rs @@ -2,11 +2,11 @@ use std::collections::hash_map::Entry; use rustc_hash::FxHashMap; -use distribution_types::{CachedRegistryDist, Hashed, IndexLocations, IndexUrl}; -use platform_tags::Tags; use uv_cache::{Cache, CacheBucket, WheelCache}; +use uv_distribution_types::{CachedRegistryDist, Hashed, IndexLocations, IndexUrl}; use uv_fs::{directories, files, symlinks}; use uv_normalize::PackageName; +use uv_platform_tags::Tags; use uv_types::HashStrategy; use crate::index::cached_wheel::CachedWheel; diff --git a/crates/uv-distribution/src/locks.rs b/crates/uv-distribution/src/locks.rs index 0e3deda4a..934b97dba 100644 --- a/crates/uv-distribution/src/locks.rs +++ b/crates/uv-distribution/src/locks.rs @@ -3,7 +3,7 @@ use std::rc::Rc; use rustc_hash::FxHashMap; use tokio::sync::Mutex; -use distribution_types::{Identifier, ResourceId}; +use uv_distribution_types::{Identifier, ResourceId}; /// A set of locks used to prevent concurrent access to the same resource. #[derive(Debug, Default)] diff --git a/crates/uv-distribution/src/metadata/lowering.rs b/crates/uv-distribution/src/metadata/lowering.rs index ee604a2f0..8a1716693 100644 --- a/crates/uv-distribution/src/metadata/lowering.rs +++ b/crates/uv-distribution/src/metadata/lowering.rs @@ -5,12 +5,12 @@ use std::path::{Path, PathBuf}; use thiserror::Error; use url::Url; -use distribution_filename::DistExtension; -use pep440_rs::VersionSpecifiers; -use pep508_rs::{MarkerTree, VerbatimUrl, VersionOrUrl}; -use pypi_types::{ParsedUrlError, Requirement, RequirementSource, VerbatimParsedUrl}; +use uv_distribution_filename::DistExtension; use uv_git::GitReference; use uv_normalize::PackageName; +use uv_pep440::VersionSpecifiers; +use uv_pep508::{MarkerTree, VerbatimUrl, VersionOrUrl}; +use uv_pypi_types::{ParsedUrlError, Requirement, RequirementSource, VerbatimParsedUrl}; use uv_warnings::warn_user_once; use uv_workspace::pyproject::{PyProjectToml, Source, Sources}; use uv_workspace::Workspace; @@ -29,7 +29,7 @@ enum Origin { impl LoweredRequirement { /// Combine `project.dependencies` or `project.optional-dependencies` with `tool.uv.sources`. pub(crate) fn from_requirement<'data>( - requirement: pep508_rs::Requirement, + requirement: uv_pep508::Requirement, project_name: &'data PackageName, project_dir: &'data Path, project_sources: &'data BTreeMap, @@ -229,10 +229,10 @@ impl LoweredRequirement { ) } - /// Lower a [`pep508_rs::Requirement`] in a non-workspace setting (for example, in a PEP 723 + /// Lower a [`uv_pep508::Requirement`] in a non-workspace setting (for example, in a PEP 723 /// script, which runs in an isolated context). pub fn from_non_workspace_requirement<'data>( - requirement: pep508_rs::Requirement, + requirement: uv_pep508::Requirement, dir: &'data Path, sources: &'data BTreeMap, ) -> impl Iterator> + 'data { @@ -360,7 +360,7 @@ pub enum LoweringError { #[error(transparent)] InvalidUrl(#[from] url::ParseError), #[error(transparent)] - InvalidVerbatimUrl(#[from] pep508_rs::VerbatimUrlError), + InvalidVerbatimUrl(#[from] uv_pep508::VerbatimUrlError), #[error("Can't combine URLs from both `project.dependencies` and `tool.uv.sources`")] ConflictingUrls, #[error("Fragments are not allowed in URLs: `{0}`")] @@ -444,7 +444,7 @@ fn url_source(url: Url, subdirectory: Option) -> Result, + requirement: &uv_pep508::Requirement, index: String, ) -> Result { match &requirement.version_or_url { diff --git a/crates/uv-distribution/src/metadata/mod.rs b/crates/uv-distribution/src/metadata/mod.rs index ceefd4738..6f18baa0e 100644 --- a/crates/uv-distribution/src/metadata/mod.rs +++ b/crates/uv-distribution/src/metadata/mod.rs @@ -3,10 +3,10 @@ use std::path::Path; use thiserror::Error; -use pep440_rs::{Version, VersionSpecifiers}; -use pypi_types::{HashDigest, ResolutionMetadata}; use uv_configuration::SourceStrategy; use uv_normalize::{ExtraName, GroupName, PackageName}; +use uv_pep440::{Version, VersionSpecifiers}; +use uv_pypi_types::{HashDigest, ResolutionMetadata}; use uv_workspace::WorkspaceError; pub use crate::metadata::lowering::LoweredRequirement; @@ -32,10 +32,10 @@ pub struct Metadata { pub name: PackageName, pub version: Version, // Optional fields - pub requires_dist: Vec, + pub requires_dist: Vec, pub requires_python: Option, pub provides_extras: Vec, - pub dev_dependencies: BTreeMap>, + pub dev_dependencies: BTreeMap>, } impl Metadata { @@ -48,7 +48,7 @@ impl Metadata { requires_dist: metadata .requires_dist .into_iter() - .map(pypi_types::Requirement::from) + .map(uv_pypi_types::Requirement::from) .collect(), requires_python: metadata.requires_python, provides_extras: metadata.provides_extras, @@ -70,7 +70,7 @@ impl Metadata { provides_extras, dev_dependencies, } = RequiresDist::from_project_maybe_workspace( - pypi_types::RequiresDist { + uv_pypi_types::RequiresDist { name: metadata.name, requires_dist: metadata.requires_dist, provides_extras: metadata.provides_extras, diff --git a/crates/uv-distribution/src/metadata/requires_dist.rs b/crates/uv-distribution/src/metadata/requires_dist.rs index cb504e59e..7c3564b54 100644 --- a/crates/uv-distribution/src/metadata/requires_dist.rs +++ b/crates/uv-distribution/src/metadata/requires_dist.rs @@ -11,21 +11,21 @@ use uv_workspace::{DiscoveryOptions, ProjectWorkspace}; #[derive(Debug, Clone)] pub struct RequiresDist { pub name: PackageName, - pub requires_dist: Vec, + pub requires_dist: Vec, pub provides_extras: Vec, - pub dev_dependencies: BTreeMap>, + pub dev_dependencies: BTreeMap>, } impl RequiresDist { /// Lower without considering `tool.uv` in `pyproject.toml`, used for index and other archive /// dependencies. - pub fn from_metadata23(metadata: pypi_types::RequiresDist) -> Self { + pub fn from_metadata23(metadata: uv_pypi_types::RequiresDist) -> Self { Self { name: metadata.name, requires_dist: metadata .requires_dist .into_iter() - .map(pypi_types::Requirement::from) + .map(uv_pypi_types::Requirement::from) .collect(), provides_extras: metadata.provides_extras, dev_dependencies: BTreeMap::default(), @@ -35,7 +35,7 @@ impl RequiresDist { /// Lower by considering `tool.uv` in `pyproject.toml` if present, used for Git and directory /// dependencies. pub async fn from_project_maybe_workspace( - metadata: pypi_types::RequiresDist, + metadata: uv_pypi_types::RequiresDist, install_path: &Path, sources: SourceStrategy, ) -> Result { @@ -52,7 +52,7 @@ impl RequiresDist { } fn from_project_workspace( - metadata: pypi_types::RequiresDist, + metadata: uv_pypi_types::RequiresDist, project_workspace: &ProjectWorkspace, source_strategy: SourceStrategy, ) -> Result { @@ -103,7 +103,7 @@ impl RequiresDist { .collect::, _>>()?, SourceStrategy::Disabled => dev_dependencies .into_iter() - .map(pypi_types::Requirement::from) + .map(uv_pypi_types::Requirement::from) .collect(), }; if dev_dependencies.is_empty() { @@ -135,7 +135,7 @@ impl RequiresDist { .collect::, _>>()?, SourceStrategy::Disabled => requires_dist .into_iter() - .map(pypi_types::Requirement::from) + .map(uv_pypi_types::Requirement::from) .collect(), }; @@ -188,7 +188,7 @@ mod test { }, ) .await?; - let requires_dist = pypi_types::RequiresDist::parse_pyproject_toml(contents)?; + let requires_dist = uv_pypi_types::RequiresDist::parse_pyproject_toml(contents)?; Ok(RequiresDist::from_project_workspace( requires_dist, &project_workspace, diff --git a/crates/uv-distribution/src/reporter.rs b/crates/uv-distribution/src/reporter.rs index d519783bf..e8e8b40d5 100644 --- a/crates/uv-distribution/src/reporter.rs +++ b/crates/uv-distribution/src/reporter.rs @@ -2,8 +2,8 @@ use std::sync::Arc; use url::Url; -use distribution_types::BuildableSource; -use pep508_rs::PackageName; +use uv_distribution_types::BuildableSource; +use uv_pep508::PackageName; pub trait Reporter: Send + Sync { /// Callback to invoke when a source distribution build is kicked off. diff --git a/crates/uv-distribution/src/source/built_wheel_metadata.rs b/crates/uv-distribution/src/source/built_wheel_metadata.rs index 7a14f0d98..919f06d4f 100644 --- a/crates/uv-distribution/src/source/built_wheel_metadata.rs +++ b/crates/uv-distribution/src/source/built_wheel_metadata.rs @@ -1,13 +1,13 @@ use std::path::PathBuf; use std::str::FromStr; -use distribution_filename::WheelFilename; -use distribution_types::Hashed; -use platform_tags::Tags; -use pypi_types::HashDigest; use uv_cache::CacheShard; use uv_cache_info::CacheInfo; +use uv_distribution_filename::WheelFilename; +use uv_distribution_types::Hashed; use uv_fs::files; +use uv_platform_tags::Tags; +use uv_pypi_types::HashDigest; /// The information about the wheel we either just built or got from the cache. #[derive(Debug, Clone)] diff --git a/crates/uv-distribution/src/source/mod.rs b/crates/uv-distribution/src/source/mod.rs index 70af8ab81..72e83a37d 100644 --- a/crates/uv-distribution/src/source/mod.rs +++ b/crates/uv-distribution/src/source/mod.rs @@ -12,28 +12,29 @@ use crate::reporter::Facade; use crate::source::built_wheel_metadata::BuiltWheelMetadata; use crate::source::revision::Revision; use crate::{Reporter, RequiresDist}; -use distribution_filename::{SourceDistExtension, WheelFilename}; -use distribution_types::{ - BuildableSource, DirectorySourceUrl, FileLocation, GitSourceUrl, HashPolicy, Hashed, - PathSourceUrl, RemoteSource, SourceDist, SourceUrl, -}; use fs_err::tokio as fs; use futures::{FutureExt, TryStreamExt}; -use platform_tags::Tags; -use pypi_types::{HashDigest, Metadata12, RequiresTxt, ResolutionMetadata}; use reqwest::Response; use tokio_util::compat::FuturesAsyncReadCompatExt; use tracing::{debug, info_span, instrument, warn, Instrument}; use url::Url; use uv_cache::{Cache, CacheBucket, CacheEntry, CacheShard, Removal, WheelCache}; use uv_cache_info::CacheInfo; +use uv_cache_key::cache_digest; use uv_client::{ CacheControl, CachedClientError, Connectivity, DataWithCachePolicy, RegistryClient, }; use uv_configuration::{BuildKind, BuildOutput}; +use uv_distribution_filename::{SourceDistExtension, WheelFilename}; +use uv_distribution_types::{ + BuildableSource, DirectorySourceUrl, FileLocation, GitSourceUrl, HashPolicy, Hashed, + PathSourceUrl, RemoteSource, SourceDist, SourceUrl, +}; use uv_extract::hash::Hasher; use uv_fs::{rename_with_retry, write_atomic, LockedFile}; use uv_metadata::read_archive_metadata; +use uv_platform_tags::Tags; +use uv_pypi_types::{HashDigest, Metadata12, RequiresTxt, ResolutionMetadata}; use uv_types::{BuildContext, SourceBuildTrait}; use zip::ZipArchive; @@ -94,7 +95,7 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> { let url = match &dist.file.url { FileLocation::RelativeUrl(base, url) => { - pypi_types::base_url_join_relative(base, url)? + uv_pypi_types::base_url_join_relative(base, url)? } FileLocation::AbsoluteUrl(url) => url.to_url(), }; @@ -253,7 +254,7 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> { let url = match &dist.file.url { FileLocation::RelativeUrl(base, url) => { - pypi_types::base_url_join_relative(base, url)? + uv_pypi_types::base_url_join_relative(base, url)? } FileLocation::AbsoluteUrl(url) => url.to_url(), }; @@ -432,7 +433,7 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> { let cache_shard = if config_settings.is_empty() { cache_shard } else { - cache_shard.shard(cache_key::cache_digest(config_settings)) + cache_shard.shard(cache_digest(config_settings)) }; // If the cache contains a compatible wheel, return it. @@ -566,7 +567,7 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> { let cache_shard = if config_settings.is_empty() { cache_shard } else { - cache_shard.shard(cache_key::cache_digest(config_settings)) + cache_shard.shard(cache_digest(config_settings)) }; // Otherwise, we either need to build the metadata. @@ -727,7 +728,7 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> { let cache_shard = if config_settings.is_empty() { cache_shard } else { - cache_shard.shard(cache_key::cache_digest(config_settings)) + cache_shard.shard(cache_digest(config_settings)) }; // If the cache contains a compatible wheel, return it. @@ -858,7 +859,7 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> { let cache_shard = if config_settings.is_empty() { cache_shard } else { - cache_shard.shard(cache_key::cache_digest(config_settings)) + cache_shard.shard(cache_digest(config_settings)) }; // Otherwise, we need to build a wheel. @@ -982,7 +983,7 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> { let cache_shard = if config_settings.is_empty() { cache_shard } else { - cache_shard.shard(cache_key::cache_digest(config_settings)) + cache_shard.shard(cache_digest(config_settings)) }; // If the cache contains a compatible wheel, return it. @@ -1113,7 +1114,7 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> { let cache_shard = if config_settings.is_empty() { cache_shard } else { - cache_shard.shard(cache_key::cache_digest(config_settings)) + cache_shard.shard(cache_digest(config_settings)) }; // Otherwise, we need to build a wheel. @@ -1231,7 +1232,7 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> { let cache_shard = if config_settings.is_empty() { cache_shard } else { - cache_shard.shard(cache_key::cache_digest(config_settings)) + cache_shard.shard(cache_digest(config_settings)) }; // If the cache contains a compatible wheel, return it. @@ -1365,7 +1366,7 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> { let cache_shard = if config_settings.is_empty() { cache_shard } else { - cache_shard.shard(cache_key::cache_digest(config_settings)) + cache_shard.shard(cache_digest(config_settings)) }; // Otherwise, we need to build a wheel. @@ -1699,10 +1700,10 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> { Err( err @ (Error::MissingPyprojectToml | Error::PyprojectToml( - pypi_types::MetadataError::Pep508Error(_) - | pypi_types::MetadataError::DynamicField(_) - | pypi_types::MetadataError::FieldNotFound(_) - | pypi_types::MetadataError::PoetrySyntax, + uv_pypi_types::MetadataError::Pep508Error(_) + | uv_pypi_types::MetadataError::DynamicField(_) + | uv_pypi_types::MetadataError::FieldNotFound(_) + | uv_pypi_types::MetadataError::PoetrySyntax, )), ) => { debug!("No static `pyproject.toml` available for: {source} ({err:?})"); @@ -1729,10 +1730,10 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> { Err( err @ (Error::MissingPkgInfo | Error::PkgInfo( - pypi_types::MetadataError::Pep508Error(_) - | pypi_types::MetadataError::DynamicField(_) - | pypi_types::MetadataError::FieldNotFound(_) - | pypi_types::MetadataError::UnsupportedMetadataVersion(_), + uv_pypi_types::MetadataError::Pep508Error(_) + | uv_pypi_types::MetadataError::DynamicField(_) + | uv_pypi_types::MetadataError::FieldNotFound(_) + | uv_pypi_types::MetadataError::UnsupportedMetadataVersion(_), )), ) => { debug!("No static `PKG-INFO` available for: {source} ({err:?})"); @@ -1755,14 +1756,14 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> { | Error::MissingRequiresTxt | Error::MissingPkgInfo | Error::RequiresTxt( - pypi_types::MetadataError::Pep508Error(_) - | pypi_types::MetadataError::RequiresTxtContents(_), + uv_pypi_types::MetadataError::Pep508Error(_) + | uv_pypi_types::MetadataError::RequiresTxtContents(_), ) | Error::PkgInfo( - pypi_types::MetadataError::Pep508Error(_) - | pypi_types::MetadataError::DynamicField(_) - | pypi_types::MetadataError::FieldNotFound(_) - | pypi_types::MetadataError::UnsupportedMetadataVersion(_), + uv_pypi_types::MetadataError::Pep508Error(_) + | uv_pypi_types::MetadataError::DynamicField(_) + | uv_pypi_types::MetadataError::FieldNotFound(_) + | uv_pypi_types::MetadataError::UnsupportedMetadataVersion(_), )), ) => { debug!("No static `egg-info` available for: {source} ({err:?})"); @@ -2110,7 +2111,7 @@ async fn read_pyproject_toml( } /// Return the [`pypi_types::RequiresDist`] from a `pyproject.toml`, if it can be statically extracted. -async fn read_requires_dist(project_root: &Path) -> Result { +async fn read_requires_dist(project_root: &Path) -> Result { // Read the `pyproject.toml` file. let pyproject_toml = project_root.join("pyproject.toml"); let content = match fs::read_to_string(pyproject_toml).await { @@ -2122,8 +2123,8 @@ async fn read_requires_dist(project_root: &Path) -> Result { reader: R, diff --git a/crates/uv-extract/src/stream.rs b/crates/uv-extract/src/stream.rs index 17cf36cd9..2ff9278d8 100644 --- a/crates/uv-extract/src/stream.rs +++ b/crates/uv-extract/src/stream.rs @@ -2,11 +2,11 @@ use std::path::Path; use std::pin::Pin; use crate::Error; -use distribution_filename::SourceDistExtension; use futures::StreamExt; use rustc_hash::FxHashSet; use tokio_util::compat::{FuturesAsyncReadCompatExt, TokioAsyncReadCompatExt}; use tracing::warn; +use uv_distribution_filename::SourceDistExtension; const DEFAULT_BUF_SIZE: usize = 128 * 1024; diff --git a/crates/uv-git/Cargo.toml b/crates/uv-git/Cargo.toml index df655253c..c311cf794 100644 --- a/crates/uv-git/Cargo.toml +++ b/crates/uv-git/Cargo.toml @@ -13,7 +13,7 @@ license = { workspace = true } workspace = true [dependencies] -cache-key = { workspace = true } +uv-cache-key = { workspace = true } uv-fs = { workspace = true, features = ["tokio"] } uv-auth = { workspace = true } diff --git a/crates/uv-git/src/credentials.rs b/crates/uv-git/src/credentials.rs index 20ee12c6a..1a583f51c 100644 --- a/crates/uv-git/src/credentials.rs +++ b/crates/uv-git/src/credentials.rs @@ -1,9 +1,9 @@ -use cache_key::RepositoryUrl; use std::collections::HashMap; use std::sync::{Arc, LazyLock, RwLock}; use tracing::trace; use url::Url; use uv_auth::Credentials; +use uv_cache_key::RepositoryUrl; /// Global authentication cache for a uv invocation. /// diff --git a/crates/uv-git/src/resolver.rs b/crates/uv-git/src/resolver.rs index 364d3ab05..4d3461983 100644 --- a/crates/uv-git/src/resolver.rs +++ b/crates/uv-git/src/resolver.rs @@ -4,11 +4,11 @@ use std::sync::Arc; use tracing::debug; -use cache_key::RepositoryUrl; use dashmap::mapref::one::Ref; use dashmap::DashMap; use fs_err::tokio as fs; use reqwest_middleware::ClientWithMiddleware; +use uv_cache_key::{cache_digest, RepositoryUrl}; use uv_fs::LockedFile; use crate::{Fetch, GitReference, GitSha, GitSource, GitUrl, Reporter}; @@ -65,7 +65,7 @@ impl GitResolver { fs::create_dir_all(&lock_dir).await?; let repository_url = RepositoryUrl::new(url.repository()); let _lock = LockedFile::acquire( - lock_dir.join(cache_key::cache_digest(&repository_url)), + lock_dir.join(cache_digest(&repository_url)), &repository_url, ) .await?; diff --git a/crates/uv-git/src/source.rs b/crates/uv-git/src/source.rs index c4ffbe9b8..bf3b7bd9b 100644 --- a/crates/uv-git/src/source.rs +++ b/crates/uv-git/src/source.rs @@ -10,7 +10,7 @@ use reqwest_middleware::ClientWithMiddleware; use tracing::{debug, instrument}; use url::Url; -use cache_key::{cache_digest, RepositoryUrl}; +use uv_cache_key::{cache_digest, RepositoryUrl}; use crate::git::GitRemote; use crate::{GitOid, GitSha, GitUrl, GIT_STORE}; diff --git a/crates/install-wheel-rs/Cargo.toml b/crates/uv-install-wheel/Cargo.toml similarity index 88% rename from crates/install-wheel-rs/Cargo.toml rename to crates/uv-install-wheel/Cargo.toml index 8a381d8a3..e0b8f2dac 100644 --- a/crates/install-wheel-rs/Cargo.toml +++ b/crates/uv-install-wheel/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "install-wheel-rs" +name = "uv-install-wheel" version = "0.0.1" publish = false description = "Takes a wheel and installs it." @@ -20,13 +20,13 @@ workspace = true name = "install_wheel_rs" [dependencies] -distribution-filename = { workspace = true } -pep440_rs = { workspace = true } -platform-tags = { workspace = true } -pypi-types = { workspace = true } uv-cache-info = { workspace = true } +uv-distribution-filename = { workspace = true } uv-fs = { workspace = true } uv-normalize = { workspace = true } +uv-pep440 = { workspace = true } +uv-platform-tags = { workspace = true } +uv-pypi-types = { workspace = true } uv-warnings = { workspace = true } clap = { workspace = true, optional = true, features = ["derive"] } diff --git a/crates/install-wheel-rs/src/lib.rs b/crates/uv-install-wheel/src/lib.rs similarity index 94% rename from crates/install-wheel-rs/src/lib.rs rename to crates/uv-install-wheel/src/lib.rs index eae7b03c2..72c589f62 100644 --- a/crates/install-wheel-rs/src/lib.rs +++ b/crates/uv-install-wheel/src/lib.rs @@ -7,12 +7,12 @@ use platform_info::PlatformInfoError; use thiserror::Error; use zip::result::ZipError; -use pep440_rs::Version; -use platform_tags::{Arch, Os}; -use pypi_types::Scheme; pub use uninstall::{uninstall_egg, uninstall_legacy_editable, uninstall_wheel, Uninstall}; use uv_fs::Simplified; use uv_normalize::PackageName; +use uv_pep440::Version; +use uv_platform_tags::{Arch, Os}; +use uv_pypi_types::Scheme; pub use wheel::{parse_wheel_file, read_record_file, LibKind}; pub mod linker; @@ -55,7 +55,7 @@ pub enum Error { InvalidWheel(String), /// Doesn't follow file name schema #[error(transparent)] - InvalidWheelFileName(#[from] distribution_filename::WheelFilenameError), + InvalidWheelFileName(#[from] uv_distribution_filename::WheelFilenameError), /// The caller must add the name of the zip file (See note on type). #[error("Failed to read {0} from zip file")] Zip(String, #[source] ZipError), @@ -90,7 +90,7 @@ pub enum Error { #[error("Invalid package name")] InvalidName(#[from] uv_normalize::InvalidNameError), #[error("Invalid package version")] - InvalidVersion(#[from] pep440_rs::VersionParseError), + InvalidVersion(#[from] uv_pep440::VersionParseError), #[error("Wheel package name does not match filename: {0} != {1}")] MismatchedName(PackageName, PackageName), #[error("Wheel version does not match filename: {0} != {1}")] diff --git a/crates/install-wheel-rs/src/linker.rs b/crates/uv-install-wheel/src/linker.rs similarity index 99% rename from crates/install-wheel-rs/src/linker.rs rename to crates/uv-install-wheel/src/linker.rs index c4f3ee85f..569aeb33e 100644 --- a/crates/install-wheel-rs/src/linker.rs +++ b/crates/uv-install-wheel/src/linker.rs @@ -11,16 +11,16 @@ use crate::wheel::{ LibKind, }; use crate::{Error, Layout}; -use distribution_filename::WheelFilename; use fs_err as fs; use fs_err::{DirEntry, File}; -use pypi_types::{DirectUrl, Metadata12}; use reflink_copy as reflink; use rustc_hash::FxHashMap; use serde::{Deserialize, Serialize}; use tempfile::tempdir_in; use tracing::{debug, instrument}; use uv_cache_info::CacheInfo; +use uv_distribution_filename::WheelFilename; +use uv_pypi_types::{DirectUrl, Metadata12}; use uv_warnings::warn_user_once; use walkdir::WalkDir; diff --git a/crates/install-wheel-rs/src/record.rs b/crates/uv-install-wheel/src/record.rs similarity index 100% rename from crates/install-wheel-rs/src/record.rs rename to crates/uv-install-wheel/src/record.rs diff --git a/crates/install-wheel-rs/src/script.rs b/crates/uv-install-wheel/src/script.rs similarity index 100% rename from crates/install-wheel-rs/src/script.rs rename to crates/uv-install-wheel/src/script.rs diff --git a/crates/install-wheel-rs/src/uninstall.rs b/crates/uv-install-wheel/src/uninstall.rs similarity index 100% rename from crates/install-wheel-rs/src/uninstall.rs rename to crates/uv-install-wheel/src/uninstall.rs diff --git a/crates/install-wheel-rs/src/wheel.rs b/crates/uv-install-wheel/src/wheel.rs similarity index 99% rename from crates/install-wheel-rs/src/wheel.rs rename to crates/uv-install-wheel/src/wheel.rs index 783afcf49..8d518b9e0 100644 --- a/crates/install-wheel-rs/src/wheel.rs +++ b/crates/uv-install-wheel/src/wheel.rs @@ -10,13 +10,13 @@ use data_encoding::BASE64URL_NOPAD; use fs_err as fs; use fs_err::{DirEntry, File}; use mailparse::parse_headers; -use pypi_types::DirectUrl; use rustc_hash::FxHashMap; use sha2::{Digest, Sha256}; use tracing::{instrument, warn}; use uv_cache_info::CacheInfo; use uv_fs::{relative_to, Simplified}; use uv_normalize::PackageName; +use uv_pypi_types::DirectUrl; use walkdir::WalkDir; use zip::write::FileOptions; use zip::ZipWriter; diff --git a/crates/uv-installer/Cargo.toml b/crates/uv-installer/Cargo.toml index 8a001b224..502bd88f2 100644 --- a/crates/uv-installer/Cargo.toml +++ b/crates/uv-installer/Cargo.toml @@ -13,21 +13,21 @@ license = { workspace = true } workspace = true [dependencies] -cache-key = { workspace = true } -distribution-types = { workspace = true } -install-wheel-rs = { workspace = true, default-features = false } -pep440_rs = { workspace = true } -pep508_rs = { workspace = true } -platform-tags = { workspace = true } -pypi-types = { workspace = true } uv-cache = { workspace = true } uv-cache-info = { workspace = true } +uv-cache-key = { workspace = true } uv-configuration = { workspace = true } uv-distribution = { workspace = true } +uv-distribution-types = { workspace = true } uv-extract = { workspace = true } uv-fs = { workspace = true } -uv-python = { workspace = true } +uv-install-wheel = { workspace = true, default-features = false } uv-normalize = { workspace = true } +uv-pep440 = { workspace = true } +uv-pep508 = { workspace = true } +uv-platform-tags = { workspace = true } +uv-pypi-types = { workspace = true } +uv-python = { workspace = true } uv-types = { workspace = true } uv-warnings = { workspace = true } diff --git a/crates/uv-installer/src/installer.rs b/crates/uv-installer/src/installer.rs index 191e536a1..89c7e93d6 100644 --- a/crates/uv-installer/src/installer.rs +++ b/crates/uv-installer/src/installer.rs @@ -5,8 +5,8 @@ use std::convert; use tokio::sync::oneshot; use tracing::instrument; -use distribution_types::CachedDist; use uv_cache::Cache; +use uv_distribution_types::CachedDist; use uv_python::PythonEnvironment; pub struct Installer<'a> { @@ -146,7 +146,7 @@ fn install( wheel .parsed_url()? .as_ref() - .map(pypi_types::DirectUrl::try_from) + .map(uv_pypi_types::DirectUrl::try_from) .transpose()? .as_ref(), if wheel.cache_info().is_empty() { diff --git a/crates/uv-installer/src/plan.rs b/crates/uv-installer/src/plan.rs index b42630ac4..b1241355d 100644 --- a/crates/uv-installer/src/plan.rs +++ b/crates/uv-installer/src/plan.rs @@ -1,19 +1,19 @@ use anyhow::{bail, Result}; use tracing::debug; -use distribution_types::{ - BuiltDist, CachedDirectUrlDist, CachedDist, Dist, Error, Hashed, IndexLocations, InstalledDist, - Name, Resolution, ResolvedDist, SourceDist, -}; -use platform_tags::Tags; -use pypi_types::Requirement; use uv_cache::{Cache, CacheBucket, WheelCache}; use uv_cache_info::{CacheInfo, Timestamp}; use uv_configuration::{BuildOptions, ConfigSettings, Reinstall}; use uv_distribution::{ BuiltWheelIndex, HttpArchivePointer, LocalArchivePointer, RegistryWheelIndex, }; +use uv_distribution_types::{ + BuiltDist, CachedDirectUrlDist, CachedDist, Dist, Error, Hashed, IndexLocations, InstalledDist, + Name, Resolution, ResolvedDist, SourceDist, +}; use uv_fs::Simplified; +use uv_platform_tags::Tags; +use uv_pypi_types::Requirement; use uv_python::PythonEnvironment; use uv_types::HashStrategy; diff --git a/crates/uv-installer/src/preparer.rs b/crates/uv-installer/src/preparer.rs index 7980e63e3..8c3bc2787 100644 --- a/crates/uv-installer/src/preparer.rs +++ b/crates/uv-installer/src/preparer.rs @@ -2,18 +2,18 @@ use std::cmp::Reverse; use std::sync::Arc; use futures::{stream::FuturesUnordered, FutureExt, Stream, TryFutureExt, TryStreamExt}; -use pep508_rs::PackageName; use tokio::task::JoinError; use tracing::{debug, instrument}; use url::Url; +use uv_pep508::PackageName; -use distribution_types::{ - BuildableSource, CachedDist, Dist, Hashed, Identifier, Name, RemoteSource, -}; -use platform_tags::Tags; use uv_cache::Cache; use uv_configuration::BuildOptions; use uv_distribution::{DistributionDatabase, LocalWheel}; +use uv_distribution_types::{ + BuildableSource, CachedDist, Dist, Hashed, Identifier, Name, RemoteSource, +}; +use uv_platform_tags::Tags; use uv_types::{BuildContext, HashStrategy, InFlight}; #[derive(thiserror::Error, Debug)] diff --git a/crates/uv-installer/src/satisfies.rs b/crates/uv-installer/src/satisfies.rs index c6d8afe75..329fadc56 100644 --- a/crates/uv-installer/src/satisfies.rs +++ b/crates/uv-installer/src/satisfies.rs @@ -4,10 +4,10 @@ use same_file::is_same_file; use tracing::{debug, trace}; use url::Url; -use cache_key::{CanonicalUrl, RepositoryUrl}; -use distribution_types::{InstalledDirectUrlDist, InstalledDist}; -use pypi_types::{DirInfo, DirectUrl, RequirementSource, VcsInfo, VcsKind}; use uv_cache_info::CacheInfo; +use uv_cache_key::{CanonicalUrl, RepositoryUrl}; +use uv_distribution_types::{InstalledDirectUrlDist, InstalledDist}; +use uv_pypi_types::{DirInfo, DirectUrl, RequirementSource, VcsInfo, VcsKind}; #[derive(Debug, Copy, Clone)] pub(crate) enum RequirementSatisfaction { diff --git a/crates/uv-installer/src/site_packages.rs b/crates/uv-installer/src/site_packages.rs index 56939a288..953e302a9 100644 --- a/crates/uv-installer/src/site_packages.rs +++ b/crates/uv-installer/src/site_packages.rs @@ -7,14 +7,14 @@ use fs_err as fs; use rustc_hash::{FxBuildHasher, FxHashMap, FxHashSet}; use url::Url; -use distribution_types::{ +use uv_distribution_types::{ Diagnostic, InstalledDist, Name, NameRequirementSpecification, UnresolvedRequirement, UnresolvedRequirementSpecification, }; -use pep440_rs::{Version, VersionSpecifiers}; -use pypi_types::{Requirement, ResolverMarkerEnvironment, VerbatimParsedUrl}; use uv_fs::Simplified; use uv_normalize::PackageName; +use uv_pep440::{Version, VersionSpecifiers}; +use uv_pypi_types::{Requirement, ResolverMarkerEnvironment, VerbatimParsedUrl}; use uv_python::{Interpreter, PythonEnvironment}; use uv_types::InstalledPackagesProvider; use uv_warnings::warn_user; @@ -250,10 +250,10 @@ impl SitePackages { } [installed] => { match &dependency.version_or_url { - None | Some(pep508_rs::VersionOrUrl::Url(_)) => { + None | Some(uv_pep508::VersionOrUrl::Url(_)) => { // Nothing to do (accept any installed version). } - Some(pep508_rs::VersionOrUrl::VersionSpecifier( + Some(uv_pep508::VersionOrUrl::VersionSpecifier( version_specifier, )) => { // The installed version doesn't satisfy the requirement. @@ -423,7 +423,7 @@ pub enum SitePackagesDiagnostic { /// The package that is missing a dependency. package: PackageName, /// The dependency that is missing. - requirement: pep508_rs::Requirement, + requirement: uv_pep508::Requirement, }, IncompatibleDependency { /// The package that has an incompatible dependency. @@ -431,7 +431,7 @@ pub enum SitePackagesDiagnostic { /// The version of the package that is installed. version: Version, /// The dependency that is incompatible. - requirement: pep508_rs::Requirement, + requirement: uv_pep508::Requirement, }, DuplicatePackage { /// The package that has multiple installed distributions. diff --git a/crates/uv-installer/src/uninstall.rs b/crates/uv-installer/src/uninstall.rs index 257432b40..9f54908c3 100644 --- a/crates/uv-installer/src/uninstall.rs +++ b/crates/uv-installer/src/uninstall.rs @@ -1,4 +1,4 @@ -use distribution_types::{InstalledDist, InstalledEggInfoFile}; +use uv_distribution_types::{InstalledDist, InstalledEggInfoFile}; /// Uninstall a package from the specified Python environment. pub async fn uninstall( diff --git a/crates/uv-metadata/Cargo.toml b/crates/uv-metadata/Cargo.toml index 2e45a2755..c782a8df5 100644 --- a/crates/uv-metadata/Cargo.toml +++ b/crates/uv-metadata/Cargo.toml @@ -10,9 +10,9 @@ authors.workspace = true license.workspace = true [dependencies] -distribution-filename = { workspace = true } -pypi-types = { workspace = true } +uv-distribution-filename = { workspace = true } uv-normalize = { workspace = true } +uv-pypi-types = { workspace = true } async_zip = { workspace = true } fs-err = { workspace = true } diff --git a/crates/uv-metadata/src/lib.rs b/crates/uv-metadata/src/lib.rs index c16be3801..edf1003cf 100644 --- a/crates/uv-metadata/src/lib.rs +++ b/crates/uv-metadata/src/lib.rs @@ -3,15 +3,15 @@ //! This module reads all fields exhaustively. The fields are defined in the [Core metadata //! specification](https://packaging.python.org/en/latest/specifications/core-metadata/). -use distribution_filename::WheelFilename; -use pypi_types::ResolutionMetadata; use std::io; use std::io::{Read, Seek}; use std::path::Path; use thiserror::Error; use tokio::io::AsyncReadExt; use tokio_util::compat::{FuturesAsyncReadCompatExt, TokioAsyncReadCompatExt}; +use uv_distribution_filename::WheelFilename; use uv_normalize::{DistInfoName, InvalidNameError}; +use uv_pypi_types::ResolutionMetadata; use zip::ZipArchive; /// The caller is responsible for attaching the path or url we failed to read. @@ -32,7 +32,7 @@ pub enum Error { #[error("The .dist-info directory name contains invalid characters")] InvalidName(#[from] InvalidNameError), #[error("The metadata at {0} is invalid")] - InvalidMetadata(String, Box), + InvalidMetadata(String, Box), #[error("Failed to read from zip file")] Zip(#[from] zip::result::ZipError), #[error("Failed to read from zip file")] @@ -277,8 +277,8 @@ pub fn read_flat_wheel_metadata( #[cfg(test)] mod test { use super::find_archive_dist_info; - use distribution_filename::WheelFilename; use std::str::FromStr; + use uv_distribution_filename::WheelFilename; #[test] fn test_dot_in_name() { diff --git a/crates/once-map/Cargo.toml b/crates/uv-once-map/Cargo.toml similarity index 94% rename from crates/once-map/Cargo.toml rename to crates/uv-once-map/Cargo.toml index 9e31e9e44..03b877bf7 100644 --- a/crates/once-map/Cargo.toml +++ b/crates/uv-once-map/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "once-map" +name = "uv-once-map" version = "0.0.1" edition = { workspace = true } rust-version = { workspace = true } diff --git a/crates/once-map/src/lib.rs b/crates/uv-once-map/src/lib.rs similarity index 100% rename from crates/once-map/src/lib.rs rename to crates/uv-once-map/src/lib.rs diff --git a/crates/pep440-rs/CHANGELOG.md b/crates/uv-pep440/CHANGELOG.md similarity index 100% rename from crates/pep440-rs/CHANGELOG.md rename to crates/uv-pep440/CHANGELOG.md diff --git a/crates/pep440-rs/Cargo.toml b/crates/uv-pep440/Cargo.toml similarity index 95% rename from crates/pep440-rs/Cargo.toml rename to crates/uv-pep440/Cargo.toml index 18a9895df..47dd3b26d 100644 --- a/crates/pep440-rs/Cargo.toml +++ b/crates/uv-pep440/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "pep440_rs" +name = "uv-pep440" version = "0.7.0" description = "A library for python version numbers and specifiers, implementing PEP 440" license = "Apache-2.0 OR BSD-2-Clause" @@ -12,7 +12,7 @@ repository = { workspace = true } authors = { workspace = true } [lib] -name = "pep440_rs" +name = "uv_pep440" crate-type = ["rlib", "cdylib"] [lints] diff --git a/crates/pep440-rs/License-Apache b/crates/uv-pep440/License-Apache similarity index 100% rename from crates/pep440-rs/License-Apache rename to crates/uv-pep440/License-Apache diff --git a/crates/pep440-rs/License-BSD b/crates/uv-pep440/License-BSD similarity index 100% rename from crates/pep440-rs/License-BSD rename to crates/uv-pep440/License-BSD diff --git a/crates/pep440-rs/Readme.md b/crates/uv-pep440/Readme.md similarity index 100% rename from crates/pep440-rs/Readme.md rename to crates/uv-pep440/Readme.md diff --git a/crates/pep440-rs/src/lib.rs b/crates/uv-pep440/src/lib.rs similarity index 97% rename from crates/pep440-rs/src/lib.rs rename to crates/uv-pep440/src/lib.rs index 650fb1843..e04b52f69 100644 --- a/crates/pep440-rs/src/lib.rs +++ b/crates/uv-pep440/src/lib.rs @@ -3,7 +3,7 @@ //! //! ```rust //! use std::str::FromStr; -//! use pep440_rs::{VersionSpecifiers, Version, VersionSpecifier}; +//! use uv_pep440::{VersionSpecifiers, Version, VersionSpecifier}; //! //! let version = Version::from_str("1.19").unwrap(); //! let version_specifier = VersionSpecifier::from_str("== 1.*").unwrap(); diff --git a/crates/pep440-rs/src/version.rs b/crates/uv-pep440/src/version.rs similarity index 99% rename from crates/pep440-rs/src/version.rs rename to crates/uv-pep440/src/version.rs index b8f42bdc3..7c9f32540 100644 --- a/crates/pep440-rs/src/version.rs +++ b/crates/uv-pep440/src/version.rs @@ -262,7 +262,7 @@ impl std::fmt::Display for OperatorParseError { /// /// ```rust /// use std::str::FromStr; -/// use pep440_rs::Version; +/// use uv_pep440::Version; /// /// let version = Version::from_str("1.19").unwrap(); /// ``` diff --git a/crates/pep440-rs/src/version_specifier.rs b/crates/uv-pep440/src/version_specifier.rs similarity index 99% rename from crates/pep440-rs/src/version_specifier.rs rename to crates/uv-pep440/src/version_specifier.rs index fa8572f82..b8785e653 100644 --- a/crates/pep440-rs/src/version_specifier.rs +++ b/crates/uv-pep440/src/version_specifier.rs @@ -15,7 +15,7 @@ use crate::{ /// /// ```rust /// # use std::str::FromStr; -/// # use pep440_rs::{VersionSpecifiers, Version, Operator}; +/// # use uv_pep440::{VersionSpecifiers, Version, Operator}; /// /// let version = Version::from_str("1.19").unwrap(); /// let version_specifiers = VersionSpecifiers::from_str(">=1.16, <2.0").unwrap(); @@ -193,7 +193,7 @@ impl std::error::Error for VersionSpecifiersParseError {} /// /// ```rust /// use std::str::FromStr; -/// use pep440_rs::{Version, VersionSpecifier}; +/// use uv_pep440::{Version, VersionSpecifier}; /// /// let version = Version::from_str("1.19").unwrap(); /// let version_specifier = VersionSpecifier::from_str("== 1.*").unwrap(); diff --git a/crates/pep508-rs/Cargo.toml b/crates/uv-pep508/Cargo.toml similarity index 94% rename from crates/pep508-rs/Cargo.toml rename to crates/uv-pep508/Cargo.toml index c86419f7b..e2f93592c 100644 --- a/crates/pep508-rs/Cargo.toml +++ b/crates/uv-pep508/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "pep508_rs" +name = "uv-pep508" version = "0.6.0" description = "A library for python dependency specifiers, better known as PEP 508" include = ["/src", "Changelog.md", "License-Apache", "License-BSD", "Readme.md", "pyproject.toml"] @@ -13,20 +13,24 @@ repository = { workspace = true } authors = { workspace = true } [lib] -name = "pep508_rs" +name = "uv_pep508" crate-type = ["cdylib", "rlib"] [lints] workspace = true [dependencies] +uv-fs = { workspace = true } +uv-normalize = { workspace = true } +uv-pep440 = { workspace = true } +uv-pubgrub = { workspace = true } + boxcar = { workspace = true } -itertools = { workspace = true } indexmap = { workspace = true } +itertools = { workspace = true } pubgrub = { workspace = true } -rustc-hash = { workspace = true } -pep440_rs = { workspace = true } regex = { workspace = true } +rustc-hash = { workspace = true } schemars = { workspace = true, optional = true } serde = { workspace = true, features = ["derive", "rc"] } serde_json = { workspace = true, optional = true } @@ -35,9 +39,6 @@ thiserror = { workspace = true } tracing = { workspace = true, optional = true } unicode-width = { workspace = true } url = { workspace = true, features = ["serde"] } -uv-fs = { workspace = true } -uv-normalize = { workspace = true } -uv-pubgrub = { workspace = true } [dev-dependencies] insta = { version = "1.40.0" } @@ -46,7 +47,7 @@ serde_json = { version = "1.0.128" } testing_logger = { version = "0.1.1" } [features] -tracing = ["dep:tracing", "pep440_rs/tracing"] +tracing = ["dep:tracing", "uv-pep440/tracing"] schemars = ["dep:schemars"] # PEP 508 allows only URLs such as `foo @ https://example.org/foo` or `foo @ file:///home/ferris/foo`, and # arguably does not allow relative paths in file URLs (`foo @ file://./foo`, diff --git a/crates/pep508-rs/Changelog.md b/crates/uv-pep508/Changelog.md similarity index 100% rename from crates/pep508-rs/Changelog.md rename to crates/uv-pep508/Changelog.md diff --git a/crates/pep508-rs/License-Apache b/crates/uv-pep508/License-Apache similarity index 100% rename from crates/pep508-rs/License-Apache rename to crates/uv-pep508/License-Apache diff --git a/crates/pep508-rs/License-BSD b/crates/uv-pep508/License-BSD similarity index 100% rename from crates/pep508-rs/License-BSD rename to crates/uv-pep508/License-BSD diff --git a/crates/pep508-rs/Readme.md b/crates/uv-pep508/Readme.md similarity index 100% rename from crates/pep508-rs/Readme.md rename to crates/uv-pep508/Readme.md diff --git a/crates/pep508-rs/src/cursor.rs b/crates/uv-pep508/src/cursor.rs similarity index 100% rename from crates/pep508-rs/src/cursor.rs rename to crates/uv-pep508/src/cursor.rs diff --git a/crates/pep508-rs/src/lib.rs b/crates/uv-pep508/src/lib.rs similarity index 99% rename from crates/pep508-rs/src/lib.rs rename to crates/uv-pep508/src/lib.rs index e0f83f6a3..af3c335be 100644 --- a/crates/pep508-rs/src/lib.rs +++ b/crates/uv-pep508/src/lib.rs @@ -5,7 +5,7 @@ //! //! ``` //! use std::str::FromStr; -//! use pep508_rs::{Requirement, VerbatimUrl}; +//! use uv_pep508::{Requirement, VerbatimUrl}; //! use uv_normalize::ExtraName; //! //! let marker = r#"requests [security,tests] >= 2.8.1, == 2.8.* ; python_version > "3.8""#; @@ -35,10 +35,10 @@ pub use marker::{ StringMarkerTree, StringVersion, VersionMarkerTree, }; pub use origin::RequirementOrigin; -use pep440_rs::{Version, VersionSpecifier, VersionSpecifiers}; #[cfg(feature = "non-pep508-extensions")] pub use unnamed::{UnnamedRequirement, UnnamedRequirementUrl}; pub use uv_normalize::{ExtraName, InvalidNameError, PackageName}; +use uv_pep440::{Version, VersionSpecifier, VersionSpecifiers}; pub use verbatim_url::{ expand_env_vars, split_scheme, strip_host, Scheme, VerbatimUrl, VerbatimUrlError, }; @@ -1006,8 +1006,8 @@ mod tests { use insta::assert_snapshot; use url::Url; - use pep440_rs::{Operator, Version, VersionPattern, VersionSpecifier}; use uv_normalize::{ExtraName, InvalidNameError, PackageName}; + use uv_pep440::{Operator, Version, VersionPattern, VersionSpecifier}; use crate::cursor::Cursor; use crate::marker::{parse, MarkerExpression, MarkerTree, MarkerValueVersion}; @@ -1106,7 +1106,7 @@ mod tests { marker: MarkerTree::expression(MarkerExpression::Version { key: MarkerValueVersion::PythonFullVersion, specifier: VersionSpecifier::from_pattern( - pep440_rs::Operator::LessThan, + uv_pep440::Operator::LessThan, "2.7".parse().unwrap(), ) .unwrap(), @@ -1356,7 +1356,7 @@ mod tests { let mut a = MarkerTree::expression(MarkerExpression::Version { key: MarkerValueVersion::PythonVersion, specifier: VersionSpecifier::from_pattern( - pep440_rs::Operator::Equal, + uv_pep440::Operator::Equal, "2.7".parse().unwrap(), ) .unwrap(), diff --git a/crates/pep508-rs/src/marker/algebra.rs b/crates/uv-pep508/src/marker/algebra.rs similarity index 99% rename from crates/pep508-rs/src/marker/algebra.rs rename to crates/uv-pep508/src/marker/algebra.rs index 96e705ca8..e9a68a85b 100644 --- a/crates/pep508-rs/src/marker/algebra.rs +++ b/crates/uv-pep508/src/marker/algebra.rs @@ -51,11 +51,11 @@ use std::sync::Mutex; use std::sync::MutexGuard; use itertools::Either; -use pep440_rs::Operator; -use pep440_rs::{Version, VersionSpecifier}; use pubgrub::Range; use rustc_hash::FxHashMap; use std::sync::LazyLock; +use uv_pep440::Operator; +use uv_pep440::{Version, VersionSpecifier}; use uv_pubgrub::PubGrubSpecifier; use crate::marker::MarkerValueExtra; diff --git a/crates/pep508-rs/src/marker/environment.rs b/crates/uv-pep508/src/marker/environment.rs similarity index 99% rename from crates/pep508-rs/src/marker/environment.rs rename to crates/uv-pep508/src/marker/environment.rs index 7fa056952..7eae49e8d 100644 --- a/crates/pep508-rs/src/marker/environment.rs +++ b/crates/uv-pep508/src/marker/environment.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use pep440_rs::{Version, VersionParseError}; +use uv_pep440::{Version, VersionParseError}; use crate::{MarkerValueString, MarkerValueVersion, StringVersion}; diff --git a/crates/pep508-rs/src/marker/mod.rs b/crates/uv-pep508/src/marker/mod.rs similarity index 100% rename from crates/pep508-rs/src/marker/mod.rs rename to crates/uv-pep508/src/marker/mod.rs diff --git a/crates/pep508-rs/src/marker/parse.rs b/crates/uv-pep508/src/marker/parse.rs similarity index 99% rename from crates/pep508-rs/src/marker/parse.rs rename to crates/uv-pep508/src/marker/parse.rs index bf5b7a410..1524860f5 100644 --- a/crates/pep508-rs/src/marker/parse.rs +++ b/crates/uv-pep508/src/marker/parse.rs @@ -1,7 +1,7 @@ use std::str::FromStr; -use pep440_rs::{Version, VersionPattern, VersionSpecifier}; use uv_normalize::ExtraName; +use uv_pep440::{Version, VersionPattern, VersionSpecifier}; use crate::cursor::Cursor; use crate::marker::MarkerValueExtra; diff --git a/crates/pep508-rs/src/marker/simplify.rs b/crates/uv-pep508/src/marker/simplify.rs similarity index 99% rename from crates/pep508-rs/src/marker/simplify.rs rename to crates/uv-pep508/src/marker/simplify.rs index 15219d1d6..3c10d9a9e 100644 --- a/crates/pep508-rs/src/marker/simplify.rs +++ b/crates/uv-pep508/src/marker/simplify.rs @@ -3,9 +3,9 @@ use std::ops::Bound; use indexmap::IndexMap; use itertools::Itertools; -use pep440_rs::{Version, VersionSpecifier}; use pubgrub::Range; use rustc_hash::FxBuildHasher; +use uv_pep440::{Version, VersionSpecifier}; use crate::{ExtraOperator, MarkerExpression, MarkerOperator, MarkerTree, MarkerTreeKind}; diff --git a/crates/pep508-rs/src/marker/tree.rs b/crates/uv-pep508/src/marker/tree.rs similarity index 99% rename from crates/pep508-rs/src/marker/tree.rs rename to crates/uv-pep508/src/marker/tree.rs index 4d17cdff3..55902a69a 100644 --- a/crates/pep508-rs/src/marker/tree.rs +++ b/crates/uv-pep508/src/marker/tree.rs @@ -5,10 +5,10 @@ use std::ops::{Bound, Deref}; use std::str::FromStr; use itertools::Itertools; -use pep440_rs::{Version, VersionParseError, VersionSpecifier}; use pubgrub::Range; use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use uv_normalize::ExtraName; +use uv_pep440::{Version, VersionParseError, VersionSpecifier}; use crate::cursor::Cursor; use crate::marker::parse; @@ -218,15 +218,15 @@ pub enum MarkerOperator { impl MarkerOperator { /// Compare two versions, returning `None` for `in` and `not in`. - pub(crate) fn to_pep440_operator(self) -> Option { + pub(crate) fn to_pep440_operator(self) -> Option { match self { - Self::Equal => Some(pep440_rs::Operator::Equal), - Self::NotEqual => Some(pep440_rs::Operator::NotEqual), - Self::GreaterThan => Some(pep440_rs::Operator::GreaterThan), - Self::GreaterEqual => Some(pep440_rs::Operator::GreaterThanEqual), - Self::LessThan => Some(pep440_rs::Operator::LessThan), - Self::LessEqual => Some(pep440_rs::Operator::LessThanEqual), - Self::TildeEqual => Some(pep440_rs::Operator::TildeEqual), + Self::Equal => Some(uv_pep440::Operator::Equal), + Self::NotEqual => Some(uv_pep440::Operator::NotEqual), + Self::GreaterThan => Some(uv_pep440::Operator::GreaterThan), + Self::GreaterEqual => Some(uv_pep440::Operator::GreaterThanEqual), + Self::LessThan => Some(uv_pep440::Operator::LessThan), + Self::LessEqual => Some(uv_pep440::Operator::LessThanEqual), + Self::TildeEqual => Some(uv_pep440::Operator::TildeEqual), _ => None, } } @@ -560,7 +560,7 @@ impl Display for MarkerExpression { match self { MarkerExpression::Version { key, specifier } => { let (op, version) = (specifier.operator(), specifier.version()); - if op == &pep440_rs::Operator::EqualStar || op == &pep440_rs::Operator::NotEqualStar + if op == &uv_pep440::Operator::EqualStar || op == &uv_pep440::Operator::NotEqualStar { return write!(f, "{key} {op} '{version}.*'"); } @@ -1676,8 +1676,8 @@ mod test { use std::str::FromStr; use insta::assert_snapshot; - use pep440_rs::Version; use uv_normalize::ExtraName; + use uv_pep440::Version; use crate::marker::{MarkerEnvironment, MarkerEnvironmentBuilder}; use crate::{MarkerExpression, MarkerOperator, MarkerTree, MarkerValueString}; diff --git a/crates/pep508-rs/src/origin.rs b/crates/uv-pep508/src/origin.rs similarity index 100% rename from crates/pep508-rs/src/origin.rs rename to crates/uv-pep508/src/origin.rs diff --git a/crates/pep508-rs/src/unnamed.rs b/crates/uv-pep508/src/unnamed.rs similarity index 100% rename from crates/pep508-rs/src/unnamed.rs rename to crates/uv-pep508/src/unnamed.rs diff --git a/crates/pep508-rs/src/verbatim_url.rs b/crates/uv-pep508/src/verbatim_url.rs similarity index 100% rename from crates/pep508-rs/src/verbatim_url.rs rename to crates/uv-pep508/src/verbatim_url.rs diff --git a/crates/platform-tags/Cargo.toml b/crates/uv-platform-tags/Cargo.toml similarity index 94% rename from crates/platform-tags/Cargo.toml rename to crates/uv-platform-tags/Cargo.toml index 420b7e341..0879e62ae 100644 --- a/crates/platform-tags/Cargo.toml +++ b/crates/uv-platform-tags/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "platform-tags" +name = "uv-platform-tags" version = "0.0.1" edition = { workspace = true } rust-version = { workspace = true } diff --git a/crates/platform-tags/src/lib.rs b/crates/uv-platform-tags/src/lib.rs similarity index 100% rename from crates/platform-tags/src/lib.rs rename to crates/uv-platform-tags/src/lib.rs diff --git a/crates/platform-tags/src/platform.rs b/crates/uv-platform-tags/src/platform.rs similarity index 100% rename from crates/platform-tags/src/platform.rs rename to crates/uv-platform-tags/src/platform.rs diff --git a/crates/platform-tags/src/tags.rs b/crates/uv-platform-tags/src/tags.rs similarity index 100% rename from crates/platform-tags/src/tags.rs rename to crates/uv-platform-tags/src/tags.rs diff --git a/crates/uv-pubgrub/Cargo.toml b/crates/uv-pubgrub/Cargo.toml index b8e96fd33..907856145 100644 --- a/crates/uv-pubgrub/Cargo.toml +++ b/crates/uv-pubgrub/Cargo.toml @@ -8,7 +8,7 @@ description = "Common uv pubgrub types." workspace = true [dependencies] -pep440_rs = { workspace = true } +uv-pep440 = { workspace = true } itertools = { workspace = true } thiserror = { workspace = true } diff --git a/crates/uv-pubgrub/src/lib.rs b/crates/uv-pubgrub/src/lib.rs index c0f2bed84..bf07a3639 100644 --- a/crates/uv-pubgrub/src/lib.rs +++ b/crates/uv-pubgrub/src/lib.rs @@ -4,7 +4,7 @@ use itertools::Itertools; use pubgrub::Range; use thiserror::Error; -use pep440_rs::{Operator, Prerelease, Version, VersionSpecifier, VersionSpecifiers}; +use uv_pep440::{Operator, Prerelease, Version, VersionSpecifier, VersionSpecifiers}; #[derive(Debug, Error)] pub enum PubGrubSpecifierError { diff --git a/crates/uv-publish/Cargo.toml b/crates/uv-publish/Cargo.toml index ba8b6a8ee..9348924bf 100644 --- a/crates/uv-publish/Cargo.toml +++ b/crates/uv-publish/Cargo.toml @@ -10,12 +10,12 @@ authors.workspace = true license.workspace = true [dependencies] -distribution-filename = { workspace = true } -pypi-types = { workspace = true } uv-client = { workspace = true } uv-configuration = { workspace = true } +uv-distribution-filename = { workspace = true } uv-fs = { workspace = true } uv-metadata = { workspace = true } +uv-pypi-types = { workspace = true } uv-warnings = { workspace = true } async-compression = { workspace = true } diff --git a/crates/uv-publish/src/lib.rs b/crates/uv-publish/src/lib.rs index b54a0c624..4276d5b7e 100644 --- a/crates/uv-publish/src/lib.rs +++ b/crates/uv-publish/src/lib.rs @@ -3,12 +3,10 @@ mod trusted_publishing; use crate::trusted_publishing::TrustedPublishingError; use base64::prelude::BASE64_STANDARD; use base64::Engine; -use distribution_filename::{DistFilename, SourceDistExtension, SourceDistFilename}; use fs_err::File; use futures::TryStreamExt; use glob::{glob, GlobError, PatternError}; use itertools::Itertools; -use pypi_types::{Metadata23, MetadataError}; use reqwest::header::AUTHORIZATION; use reqwest::multipart::Part; use reqwest::{Body, Response, StatusCode}; @@ -28,8 +26,10 @@ use tracing::{debug, enabled, trace, warn, Level}; use url::Url; use uv_client::UvRetryableStrategy; use uv_configuration::{KeyringProviderType, TrustedPublishing}; +use uv_distribution_filename::{DistFilename, SourceDistExtension, SourceDistFilename}; use uv_fs::{ProgressReader, Simplified}; use uv_metadata::read_metadata_async_seek; +use uv_pypi_types::{Metadata23, MetadataError}; use uv_warnings::warn_user_once; pub use trusted_publishing::TrustedPublishingToken; @@ -620,13 +620,13 @@ async fn handle_response(registry: &Url, response: Response) -> Result Deserialize<'de> for LenientVersionSpecifiers { mod tests { use std::str::FromStr; - use pep440_rs::VersionSpecifiers; - use pep508_rs::Requirement; + use uv_pep440::VersionSpecifiers; + use uv_pep508::Requirement; use crate::LenientVersionSpecifiers; diff --git a/crates/pypi-types/src/lib.rs b/crates/uv-pypi-types/src/lib.rs similarity index 100% rename from crates/pypi-types/src/lib.rs rename to crates/uv-pypi-types/src/lib.rs diff --git a/crates/pypi-types/src/marker_environment.rs b/crates/uv-pypi-types/src/marker_environment.rs similarity index 97% rename from crates/pypi-types/src/marker_environment.rs rename to crates/uv-pypi-types/src/marker_environment.rs index 063ceb41c..849ccf251 100644 --- a/crates/pypi-types/src/marker_environment.rs +++ b/crates/uv-pypi-types/src/marker_environment.rs @@ -1,6 +1,6 @@ use tracing::debug; -use pep508_rs::MarkerEnvironment; +use uv_pep508::MarkerEnvironment; /// A wrapper type around [`MarkerEnvironment`] that ensures the Python version markers are /// release-only, to match the resolver's semantics. diff --git a/crates/pypi-types/src/metadata/metadata10.rs b/crates/uv-pypi-types/src/metadata/metadata10.rs similarity index 100% rename from crates/pypi-types/src/metadata/metadata10.rs rename to crates/uv-pypi-types/src/metadata/metadata10.rs diff --git a/crates/pypi-types/src/metadata/metadata12.rs b/crates/uv-pypi-types/src/metadata/metadata12.rs similarity index 98% rename from crates/pypi-types/src/metadata/metadata12.rs rename to crates/uv-pypi-types/src/metadata/metadata12.rs index 4ca5f8874..90998dd59 100644 --- a/crates/pypi-types/src/metadata/metadata12.rs +++ b/crates/uv-pypi-types/src/metadata/metadata12.rs @@ -1,9 +1,9 @@ use crate::metadata::{parse_version, Headers}; use crate::{LenientVersionSpecifiers, MetadataError}; -use pep440_rs::{Version, VersionSpecifiers}; use serde::Deserialize; use std::str::FromStr; use uv_normalize::PackageName; +use uv_pep440::{Version, VersionSpecifiers}; /// A subset of the full cure metadata specification, only including the /// fields that have been consistent across all versions of the specification later than 1.2. diff --git a/crates/pypi-types/src/metadata/metadata23.rs b/crates/uv-pypi-types/src/metadata/metadata23.rs similarity index 100% rename from crates/pypi-types/src/metadata/metadata23.rs rename to crates/uv-pypi-types/src/metadata/metadata23.rs diff --git a/crates/pypi-types/src/metadata/metadata_resolver.rs b/crates/uv-pypi-types/src/metadata/metadata_resolver.rs similarity index 98% rename from crates/pypi-types/src/metadata/metadata_resolver.rs rename to crates/uv-pypi-types/src/metadata/metadata_resolver.rs index 8dfb25f10..da68a2e46 100644 --- a/crates/pypi-types/src/metadata/metadata_resolver.rs +++ b/crates/uv-pypi-types/src/metadata/metadata_resolver.rs @@ -6,9 +6,9 @@ use itertools::Itertools; use serde::{Deserialize, Serialize}; use tracing::warn; -use pep440_rs::{Version, VersionSpecifiers}; -use pep508_rs::Requirement; use uv_normalize::{ExtraName, PackageName}; +use uv_pep440::{Version, VersionSpecifiers}; +use uv_pep508::Requirement; use crate::lenient_requirement::LenientRequirement; use crate::metadata::pyproject_toml::parse_pyproject_toml; @@ -160,9 +160,9 @@ impl ResolutionMetadata { mod tests { use super::*; use crate::MetadataError; - use pep440_rs::Version; use std::str::FromStr; use uv_normalize::PackageName; + use uv_pep440::Version; #[test] fn test_parse_metadata() { diff --git a/crates/pypi-types/src/metadata/mod.rs b/crates/uv-pypi-types/src/metadata/mod.rs similarity index 97% rename from crates/pypi-types/src/metadata/mod.rs rename to crates/uv-pypi-types/src/metadata/mod.rs index 9087fb3d4..26d1bc1a2 100644 --- a/crates/pypi-types/src/metadata/mod.rs +++ b/crates/uv-pypi-types/src/metadata/mod.rs @@ -7,11 +7,11 @@ mod requires_txt; use crate::VerbatimParsedUrl; use mailparse::{MailHeaderMap, MailParseError}; -use pep440_rs::{VersionParseError, VersionSpecifiersParseError}; -use pep508_rs::Pep508Error; use std::str::Utf8Error; use thiserror::Error; use uv_normalize::InvalidNameError; +use uv_pep440::{VersionParseError, VersionSpecifiersParseError}; +use uv_pep508::Pep508Error; pub use metadata10::Metadata10; pub use metadata12::Metadata12; diff --git a/crates/pypi-types/src/metadata/pyproject_toml.rs b/crates/uv-pypi-types/src/metadata/pyproject_toml.rs similarity index 99% rename from crates/pypi-types/src/metadata/pyproject_toml.rs rename to crates/uv-pypi-types/src/metadata/pyproject_toml.rs index cf3d0bb5a..1371a3498 100644 --- a/crates/pypi-types/src/metadata/pyproject_toml.rs +++ b/crates/uv-pypi-types/src/metadata/pyproject_toml.rs @@ -4,12 +4,12 @@ use crate::{ }; use indexmap::IndexMap; use itertools::Itertools; -use pep440_rs::{Version, VersionSpecifiers}; -use pep508_rs::Requirement; use serde::de::IntoDeserializer; use serde::{Deserialize, Serialize}; use std::str::FromStr; use uv_normalize::{ExtraName, PackageName}; +use uv_pep440::{Version, VersionSpecifiers}; +use uv_pep508::Requirement; /// Extract the metadata from a `pyproject.toml` file, as specified in PEP 621. pub(crate) fn parse_pyproject_toml(contents: &str) -> Result { @@ -228,9 +228,9 @@ impl RequiresDist { mod tests { use crate::metadata::pyproject_toml::parse_pyproject_toml; use crate::MetadataError; - use pep440_rs::Version; use std::str::FromStr; use uv_normalize::PackageName; + use uv_pep440::Version; #[test] fn test_parse_pyproject_toml() { diff --git a/crates/pypi-types/src/metadata/requires_txt.rs b/crates/uv-pypi-types/src/metadata/requires_txt.rs similarity index 98% rename from crates/pypi-types/src/metadata/requires_txt.rs rename to crates/uv-pypi-types/src/metadata/requires_txt.rs index 3ec3f61d7..083e0a9ba 100644 --- a/crates/pypi-types/src/metadata/requires_txt.rs +++ b/crates/uv-pypi-types/src/metadata/requires_txt.rs @@ -1,10 +1,10 @@ use crate::{LenientRequirement, MetadataError, VerbatimParsedUrl}; -use pep508_rs::marker::MarkerValueExtra; -use pep508_rs::{ExtraOperator, MarkerExpression, MarkerTree, Requirement}; use serde::Deserialize; use std::io::BufRead; use std::str::FromStr; use uv_normalize::ExtraName; +use uv_pep508::marker::MarkerValueExtra; +use uv_pep508::{ExtraOperator, MarkerExpression, MarkerTree, Requirement}; /// `requires.txt` metadata as defined in . /// diff --git a/crates/pypi-types/src/parsed_url.rs b/crates/uv-pypi-types/src/parsed_url.rs similarity index 99% rename from crates/pypi-types/src/parsed_url.rs rename to crates/uv-pypi-types/src/parsed_url.rs index 40437156c..ecc1031b5 100644 --- a/crates/pypi-types/src/parsed_url.rs +++ b/crates/uv-pypi-types/src/parsed_url.rs @@ -1,10 +1,10 @@ -use distribution_filename::{DistExtension, ExtensionError}; -use pep508_rs::{Pep508Url, UnnamedRequirementUrl, VerbatimUrl, VerbatimUrlError}; use std::fmt::{Display, Formatter}; use std::path::{Path, PathBuf}; use thiserror::Error; use url::{ParseError, Url}; +use uv_distribution_filename::{DistExtension, ExtensionError}; use uv_git::{GitReference, GitSha, GitUrl, OidParseError}; +use uv_pep508::{Pep508Url, UnnamedRequirementUrl, VerbatimUrl, VerbatimUrlError}; use crate::{ArchiveInfo, DirInfo, DirectUrl, VcsInfo, VcsKind}; diff --git a/crates/pypi-types/src/requirement.rs b/crates/uv-pypi-types/src/requirement.rs similarity index 97% rename from crates/pypi-types/src/requirement.rs rename to crates/uv-pypi-types/src/requirement.rs index 2d1854e2f..499b77411 100644 --- a/crates/pypi-types/src/requirement.rs +++ b/crates/uv-pypi-types/src/requirement.rs @@ -3,17 +3,17 @@ use std::io; use std::path::{Path, PathBuf}; use std::str::FromStr; -use distribution_filename::DistExtension; use thiserror::Error; use url::Url; +use uv_distribution_filename::DistExtension; -use pep440_rs::VersionSpecifiers; -use pep508_rs::{ - marker, MarkerEnvironment, MarkerTree, RequirementOrigin, VerbatimUrl, VersionOrUrl, -}; use uv_fs::{relative_to, PortablePathBuf, CWD}; use uv_git::{GitReference, GitSha, GitUrl}; use uv_normalize::{ExtraName, PackageName}; +use uv_pep440::VersionSpecifiers; +use uv_pep508::{ + marker, MarkerEnvironment, MarkerTree, RequirementOrigin, VerbatimUrl, VersionOrUrl, +}; use crate::{ Hashes, ParsedArchiveUrl, ParsedDirectoryUrl, ParsedGitUrl, ParsedPathUrl, ParsedUrl, @@ -23,7 +23,7 @@ use crate::{ #[derive(Debug, Error)] pub enum RequirementError { #[error(transparent)] - VerbatimUrlError(#[from] pep508_rs::VerbatimUrlError), + VerbatimUrlError(#[from] uv_pep508::VerbatimUrlError), #[error(transparent)] ParsedUrlError(#[from] ParsedUrlError), #[error(transparent)] @@ -125,10 +125,10 @@ impl Requirement { } } -impl From for pep508_rs::Requirement { - /// Convert a [`Requirement`] to a [`pep508_rs::Requirement`]. +impl From for uv_pep508::Requirement { + /// Convert a [`Requirement`] to a [`uv_pep508::Requirement`]. fn from(requirement: Requirement) -> Self { - pep508_rs::Requirement { + uv_pep508::Requirement { name: requirement.name, extras: requirement.extras, marker: requirement.marker, @@ -146,10 +146,10 @@ impl From for pep508_rs::Requirement { } } -impl From for pep508_rs::Requirement { - /// Convert a [`Requirement`] to a [`pep508_rs::Requirement`]. +impl From for uv_pep508::Requirement { + /// Convert a [`Requirement`] to a [`uv_pep508::Requirement`]. fn from(requirement: Requirement) -> Self { - pep508_rs::Requirement { + uv_pep508::Requirement { name: requirement.name, extras: requirement.extras, marker: requirement.marker, @@ -222,9 +222,9 @@ impl From for pep508_rs::Requirement { } } -impl From> for Requirement { - /// Convert a [`pep508_rs::Requirement`] to a [`Requirement`]. - fn from(requirement: pep508_rs::Requirement) -> Self { +impl From> for Requirement { + /// Convert a [`uv_pep508::Requirement`] to a [`Requirement`]. + fn from(requirement: uv_pep508::Requirement) -> Self { let source = match requirement.version_or_url { None => RequirementSource::Registry { specifier: VersionSpecifiers::empty(), @@ -830,7 +830,7 @@ pub fn redact_git_credentials(url: &mut Url) { mod tests { use std::path::PathBuf; - use pep508_rs::{MarkerTree, VerbatimUrl}; + use uv_pep508::{MarkerTree, VerbatimUrl}; use crate::{Requirement, RequirementSource}; diff --git a/crates/pypi-types/src/scheme.rs b/crates/uv-pypi-types/src/scheme.rs similarity index 100% rename from crates/pypi-types/src/scheme.rs rename to crates/uv-pypi-types/src/scheme.rs diff --git a/crates/pypi-types/src/simple_json.rs b/crates/uv-pypi-types/src/simple_json.rs similarity index 99% rename from crates/pypi-types/src/simple_json.rs rename to crates/uv-pypi-types/src/simple_json.rs index 134736c43..5d6868e8d 100644 --- a/crates/pypi-types/src/simple_json.rs +++ b/crates/uv-pypi-types/src/simple_json.rs @@ -1,8 +1,8 @@ use std::str::FromStr; use jiff::Timestamp; -use pep440_rs::{VersionSpecifiers, VersionSpecifiersParseError}; use serde::{Deserialize, Deserializer, Serialize}; +use uv_pep440::{VersionSpecifiers, VersionSpecifiersParseError}; use crate::lenient_requirement::LenientVersionSpecifiers; diff --git a/crates/pypi-types/src/supported_environments.rs b/crates/uv-pypi-types/src/supported_environments.rs similarity index 98% rename from crates/pypi-types/src/supported_environments.rs rename to crates/uv-pypi-types/src/supported_environments.rs index 226e506ff..4c1da8d2d 100644 --- a/crates/pypi-types/src/supported_environments.rs +++ b/crates/uv-pypi-types/src/supported_environments.rs @@ -2,7 +2,7 @@ use std::str::FromStr; use serde::ser::SerializeSeq; -use pep508_rs::MarkerTree; +use uv_pep508::MarkerTree; /// A list of supported marker environments. #[derive(Debug, Default, Clone, Eq, PartialEq)] diff --git a/crates/uv-python/Cargo.toml b/crates/uv-python/Cargo.toml index 9bd7363ec..190d8d322 100644 --- a/crates/uv-python/Cargo.toml +++ b/crates/uv-python/Cargo.toml @@ -13,18 +13,18 @@ license = { workspace = true } workspace = true [dependencies] -cache-key = { workspace = true } -distribution-filename = { workspace = true } -install-wheel-rs = { workspace = true } -pep440_rs = { workspace = true } -pep508_rs = { workspace = true } -platform-tags = { workspace = true } -pypi-types = { workspace = true } uv-cache = { workspace = true } uv-cache-info = { workspace = true } +uv-cache-key = { workspace = true } uv-client = { workspace = true } +uv-distribution-filename = { workspace = true } uv-extract = { workspace = true } uv-fs = { workspace = true } +uv-install-wheel = { workspace = true } +uv-pep440 = { workspace = true } +uv-pep508 = { workspace = true } +uv-platform-tags = { workspace = true } +uv-pypi-types = { workspace = true } uv-state = { workspace = true } uv-warnings = { workspace = true } diff --git a/crates/uv-python/src/discovery.rs b/crates/uv-python/src/discovery.rs index a0ff76405..3abb06021 100644 --- a/crates/uv-python/src/discovery.rs +++ b/crates/uv-python/src/discovery.rs @@ -9,9 +9,9 @@ use thiserror::Error; use tracing::{debug, instrument, trace}; use which::{which, which_all}; -use pep440_rs::{Prerelease, Version, VersionSpecifier, VersionSpecifiers}; use uv_cache::Cache; use uv_fs::Simplified; +use uv_pep440::{Prerelease, Version, VersionSpecifier, VersionSpecifiers}; use uv_warnings::warn_user_once; use crate::downloads::PythonDownloadRequest; @@ -2203,8 +2203,8 @@ mod tests { use std::{path::PathBuf, str::FromStr}; use assert_fs::{prelude::*, TempDir}; - use pep440_rs::{Prerelease, PrereleaseKind, VersionSpecifiers}; use test_log::test; + use uv_pep440::{Prerelease, PrereleaseKind, VersionSpecifiers}; use crate::{ discovery::{PythonRequest, VersionRequest}, diff --git a/crates/uv-python/src/downloads.rs b/crates/uv-python/src/downloads.rs index 319a2af62..cdf5e5227 100644 --- a/crates/uv-python/src/downloads.rs +++ b/crates/uv-python/src/downloads.rs @@ -1,7 +1,5 @@ -use distribution_filename::{ExtensionError, SourceDistExtension}; use futures::TryStreamExt; use owo_colors::OwoColorize; -use pypi_types::{HashAlgorithm, HashDigest}; use std::fmt::Display; use std::io; use std::path::{Path, PathBuf}; @@ -15,8 +13,10 @@ use tokio_util::either::Either; use tracing::{debug, instrument}; use url::Url; use uv_client::WrappedReqwestError; +use uv_distribution_filename::{ExtensionError, SourceDistExtension}; use uv_extract::hash::Hasher; use uv_fs::{rename_with_retry, Simplified}; +use uv_pypi_types::{HashAlgorithm, HashDigest}; use crate::implementation::{ Error as ImplementationError, ImplementationName, LenientImplementationName, diff --git a/crates/uv-python/src/environment.rs b/crates/uv-python/src/environment.rs index aa887444d..1dff7d3dc 100644 --- a/crates/uv-python/src/environment.rs +++ b/crates/uv-python/src/environment.rs @@ -5,6 +5,7 @@ use std::fmt; use std::path::{Path, PathBuf}; use std::sync::Arc; use uv_cache::Cache; +use uv_cache_key::cache_digest; use uv_fs::{LockedFile, Simplified}; use crate::discovery::find_python_installation; @@ -287,7 +288,7 @@ impl PythonEnvironment { } else { // Otherwise, use a global lockfile. LockedFile::acquire( - env::temp_dir().join(format!("uv-{}.lock", cache_key::cache_digest(&self.0.root))), + env::temp_dir().join(format!("uv-{}.lock", cache_digest(&self.0.root))), self.0.root.user_display(), ) .await diff --git a/crates/uv-python/src/installation.rs b/crates/uv-python/src/installation.rs index fcbd4579e..0ab0854db 100644 --- a/crates/uv-python/src/installation.rs +++ b/crates/uv-python/src/installation.rs @@ -4,9 +4,9 @@ use std::str::FromStr; use tracing::{debug, info}; -use pep440_rs::Version; use uv_cache::Cache; use uv_client::BaseClientBuilder; +use uv_pep440::Version; use crate::discovery::{ find_best_python_installation, find_python_installation, EnvironmentPreference, PythonRequest, diff --git a/crates/uv-python/src/interpreter.rs b/crates/uv-python/src/interpreter.rs index 4457f14cc..61dbd8bcd 100644 --- a/crates/uv-python/src/interpreter.rs +++ b/crates/uv-python/src/interpreter.rs @@ -11,16 +11,16 @@ use serde::{Deserialize, Serialize}; use thiserror::Error; use tracing::{trace, warn}; -use cache_key::cache_digest; use install_wheel_rs::Layout; -use pep440_rs::Version; -use pep508_rs::{MarkerEnvironment, StringVersion}; -use platform_tags::Platform; -use platform_tags::{Tags, TagsError}; -use pypi_types::{ResolverMarkerEnvironment, Scheme}; use uv_cache::{Cache, CacheBucket, CachedByTimestamp, Freshness}; use uv_cache_info::Timestamp; +use uv_cache_key::cache_digest; use uv_fs::{write_atomic_sync, PythonExt, Simplified}; +use uv_pep440::Version; +use uv_pep508::{MarkerEnvironment, StringVersion}; +use uv_platform_tags::Platform; +use uv_platform_tags::{Tags, TagsError}; +use uv_pypi_types::{ResolverMarkerEnvironment, Scheme}; use crate::implementation::LenientImplementationName; use crate::platform::{Arch, Libc, Os}; @@ -802,8 +802,8 @@ mod tests { use indoc::{formatdoc, indoc}; use tempfile::tempdir; - use pep440_rs::Version; use uv_cache::Cache; + use uv_pep440::Version; use crate::Interpreter; diff --git a/crates/uv-python/src/platform.rs b/crates/uv-python/src/platform.rs index 62d4bfe24..be55f22a9 100644 --- a/crates/uv-python/src/platform.rs +++ b/crates/uv-python/src/platform.rs @@ -144,53 +144,55 @@ impl Deref for Os { } } -impl From<&platform_tags::Arch> for Arch { - fn from(value: &platform_tags::Arch) -> Self { +impl From<&uv_platform_tags::Arch> for Arch { + fn from(value: &uv_platform_tags::Arch) -> Self { match value { - platform_tags::Arch::Aarch64 => Self(target_lexicon::Architecture::Aarch64( + uv_platform_tags::Arch::Aarch64 => Self(target_lexicon::Architecture::Aarch64( target_lexicon::Aarch64Architecture::Aarch64, )), - platform_tags::Arch::Armv6L => Self(target_lexicon::Architecture::Arm( + uv_platform_tags::Arch::Armv6L => Self(target_lexicon::Architecture::Arm( target_lexicon::ArmArchitecture::Armv6, )), - platform_tags::Arch::Armv7L => Self(target_lexicon::Architecture::Arm( + uv_platform_tags::Arch::Armv7L => Self(target_lexicon::Architecture::Arm( target_lexicon::ArmArchitecture::Armv7, )), - platform_tags::Arch::S390X => Self(target_lexicon::Architecture::S390x), - platform_tags::Arch::Powerpc64 => Self(target_lexicon::Architecture::Powerpc64), - platform_tags::Arch::Powerpc64Le => Self(target_lexicon::Architecture::Powerpc64le), - platform_tags::Arch::X86 => Self(target_lexicon::Architecture::X86_32( + uv_platform_tags::Arch::S390X => Self(target_lexicon::Architecture::S390x), + uv_platform_tags::Arch::Powerpc64 => Self(target_lexicon::Architecture::Powerpc64), + uv_platform_tags::Arch::Powerpc64Le => Self(target_lexicon::Architecture::Powerpc64le), + uv_platform_tags::Arch::X86 => Self(target_lexicon::Architecture::X86_32( target_lexicon::X86_32Architecture::I686, )), - platform_tags::Arch::X86_64 => Self(target_lexicon::Architecture::X86_64), + uv_platform_tags::Arch::X86_64 => Self(target_lexicon::Architecture::X86_64), } } } -impl From<&platform_tags::Os> for Libc { - fn from(value: &platform_tags::Os) -> Self { +impl From<&uv_platform_tags::Os> for Libc { + fn from(value: &uv_platform_tags::Os) -> Self { match value { - platform_tags::Os::Manylinux { .. } => Self::Some(target_lexicon::Environment::Gnu), - platform_tags::Os::Musllinux { .. } => Self::Some(target_lexicon::Environment::Musl), + uv_platform_tags::Os::Manylinux { .. } => Self::Some(target_lexicon::Environment::Gnu), + uv_platform_tags::Os::Musllinux { .. } => Self::Some(target_lexicon::Environment::Musl), _ => Self::None, } } } -impl From<&platform_tags::Os> for Os { - fn from(value: &platform_tags::Os) -> Self { +impl From<&uv_platform_tags::Os> for Os { + fn from(value: &uv_platform_tags::Os) -> Self { match value { - platform_tags::Os::Dragonfly { .. } => Self(target_lexicon::OperatingSystem::Dragonfly), - platform_tags::Os::FreeBsd { .. } => Self(target_lexicon::OperatingSystem::Freebsd), - platform_tags::Os::Haiku { .. } => Self(target_lexicon::OperatingSystem::Haiku), - platform_tags::Os::Illumos { .. } => Self(target_lexicon::OperatingSystem::Illumos), - platform_tags::Os::Macos { .. } => Self(target_lexicon::OperatingSystem::Darwin), - platform_tags::Os::Manylinux { .. } | platform_tags::Os::Musllinux { .. } => { + uv_platform_tags::Os::Dragonfly { .. } => { + Self(target_lexicon::OperatingSystem::Dragonfly) + } + uv_platform_tags::Os::FreeBsd { .. } => Self(target_lexicon::OperatingSystem::Freebsd), + uv_platform_tags::Os::Haiku { .. } => Self(target_lexicon::OperatingSystem::Haiku), + uv_platform_tags::Os::Illumos { .. } => Self(target_lexicon::OperatingSystem::Illumos), + uv_platform_tags::Os::Macos { .. } => Self(target_lexicon::OperatingSystem::Darwin), + uv_platform_tags::Os::Manylinux { .. } | uv_platform_tags::Os::Musllinux { .. } => { Self(target_lexicon::OperatingSystem::Linux) } - platform_tags::Os::NetBsd { .. } => Self(target_lexicon::OperatingSystem::Netbsd), - platform_tags::Os::OpenBsd { .. } => Self(target_lexicon::OperatingSystem::Openbsd), - platform_tags::Os::Windows => Self(target_lexicon::OperatingSystem::Windows), + uv_platform_tags::Os::NetBsd { .. } => Self(target_lexicon::OperatingSystem::Netbsd), + uv_platform_tags::Os::OpenBsd { .. } => Self(target_lexicon::OperatingSystem::Openbsd), + uv_platform_tags::Os::Windows => Self(target_lexicon::OperatingSystem::Windows), } } } diff --git a/crates/uv-python/src/prefix.rs b/crates/uv-python/src/prefix.rs index b88dc00f2..e0b9568b0 100644 --- a/crates/uv-python/src/prefix.rs +++ b/crates/uv-python/src/prefix.rs @@ -1,6 +1,6 @@ use std::path::{Path, PathBuf}; -use pypi_types::Scheme; +use uv_pypi_types::Scheme; /// A `--prefix` directory into which packages can be installed, separate from a virtual environment /// or system Python interpreter. diff --git a/crates/uv-python/src/python_version.rs b/crates/uv-python/src/python_version.rs index 6c4a99487..b64f6ba6f 100644 --- a/crates/uv-python/src/python_version.rs +++ b/crates/uv-python/src/python_version.rs @@ -2,8 +2,8 @@ use std::fmt::{Display, Formatter}; use std::ops::Deref; use std::str::FromStr; -use pep440_rs::Version; -use pep508_rs::{MarkerEnvironment, StringVersion}; +use uv_pep440::Version; +use uv_pep508::{MarkerEnvironment, StringVersion}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct PythonVersion(StringVersion); @@ -171,7 +171,7 @@ impl PythonVersion { mod tests { use std::str::FromStr; - use pep440_rs::{Prerelease, PrereleaseKind, Version}; + use uv_pep440::{Prerelease, PrereleaseKind, Version}; use crate::PythonVersion; diff --git a/crates/uv-python/src/target.rs b/crates/uv-python/src/target.rs index 4e6156007..dbca407de 100644 --- a/crates/uv-python/src/target.rs +++ b/crates/uv-python/src/target.rs @@ -1,6 +1,6 @@ use std::path::{Path, PathBuf}; -use pypi_types::Scheme; +use uv_pypi_types::Scheme; /// A `--target` directory into which packages can be installed, separate from a virtual environment /// or system Python interpreter. diff --git a/crates/uv-python/src/virtualenv.rs b/crates/uv-python/src/virtualenv.rs index 474273955..6fcfac188 100644 --- a/crates/uv-python/src/virtualenv.rs +++ b/crates/uv-python/src/virtualenv.rs @@ -4,8 +4,8 @@ use std::{ }; use fs_err as fs; -use pypi_types::Scheme; use thiserror::Error; +use uv_pypi_types::Scheme; /// The layout of a virtual environment. #[derive(Debug)] diff --git a/crates/requirements-txt/Cargo.toml b/crates/uv-requirements-txt/Cargo.toml similarity index 88% rename from crates/requirements-txt/Cargo.toml rename to crates/uv-requirements-txt/Cargo.toml index d9e8fafb1..86d72cf0b 100644 --- a/crates/requirements-txt/Cargo.toml +++ b/crates/uv-requirements-txt/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "requirements-txt" +name = "uv-requirements-txt" version = "0.0.1" edition = { workspace = true } rust-version = { workspace = true } @@ -13,9 +13,9 @@ license = { workspace = true } workspace = true [dependencies] -distribution-types = { workspace = true } -pep508_rs = { workspace = true } -pypi-types = { workspace = true } +uv-distribution-types = { workspace = true } +uv-pep508 = { workspace = true } +uv-pypi-types = { workspace = true } uv-client = { workspace = true } uv-fs = { workspace = true } uv-normalize = { workspace = true } diff --git a/crates/requirements-txt/src/lib.rs b/crates/uv-requirements-txt/src/lib.rs similarity index 99% rename from crates/requirements-txt/src/lib.rs rename to crates/uv-requirements-txt/src/lib.rs index 93f71731d..83bd2cccf 100644 --- a/crates/requirements-txt/src/lib.rs +++ b/crates/uv-requirements-txt/src/lib.rs @@ -44,14 +44,14 @@ use tracing::instrument; use unscanny::{Pattern, Scanner}; use url::Url; -use distribution_types::{UnresolvedRequirement, UnresolvedRequirementSpecification}; -use pep508_rs::{expand_env_vars, Pep508Error, RequirementOrigin, VerbatimUrl}; -use pypi_types::{Requirement, VerbatimParsedUrl}; #[cfg(feature = "http")] use uv_client::BaseClient; use uv_client::BaseClientBuilder; use uv_configuration::{NoBinary, NoBuild, PackageNameSpecifier}; +use uv_distribution_types::{UnresolvedRequirement, UnresolvedRequirementSpecification}; use uv_fs::Simplified; +use uv_pep508::{expand_env_vars, Pep508Error, RequirementOrigin, VerbatimUrl}; +use uv_pypi_types::{Requirement, VerbatimParsedUrl}; use uv_warnings::warn_user; use crate::requirement::EditableError; @@ -135,7 +135,7 @@ pub struct RequirementsTxt { /// The actual requirements with the hashes. pub requirements: Vec, /// Constraints included with `-c`. - pub constraints: Vec>, + pub constraints: Vec>, /// Editables with `-e`. pub editables: Vec, /// The index URL, specified with `--index-url`. @@ -831,7 +831,7 @@ pub enum RequirementsTxtParserError { end: usize, }, VerbatimUrl { - source: pep508_rs::VerbatimUrlError, + source: uv_pep508::VerbatimUrlError, url: String, start: usize, end: usize, diff --git a/crates/requirements-txt/src/requirement.rs b/crates/uv-requirements-txt/src/requirement.rs similarity index 93% rename from crates/requirements-txt/src/requirement.rs rename to crates/uv-requirements-txt/src/requirement.rs index e466d4a99..308c9432d 100644 --- a/crates/requirements-txt/src/requirement.rs +++ b/crates/uv-requirements-txt/src/requirement.rs @@ -1,10 +1,10 @@ use std::path::Path; -use pep508_rs::{ +use uv_normalize::PackageName; +use uv_pep508::{ Pep508Error, Pep508ErrorSource, RequirementOrigin, TracingReporter, UnnamedRequirement, }; -use pypi_types::{ParsedDirectoryUrl, ParsedUrl, VerbatimParsedUrl}; -use uv_normalize::PackageName; +use uv_pypi_types::{ParsedDirectoryUrl, ParsedUrl, VerbatimParsedUrl}; #[derive(Debug, thiserror::Error)] pub enum EditableError { @@ -35,13 +35,13 @@ pub enum EditableError { /// A requirement specifier in a `requirements.txt` file. /// -/// Analog to `UnresolvedRequirement` but with `pep508_rs::Requirement` instead of +/// Analog to `UnresolvedRequirement` but with `uv_pep508::Requirement` instead of /// `distribution_types::Requirement`. #[derive(Hash, Debug, Clone, Eq, PartialEq)] pub enum RequirementsTxtRequirement { /// The uv-specific superset over PEP 508 requirements specifier incorporating /// `tool.uv.sources`. - Named(pep508_rs::Requirement), + Named(uv_pep508::Requirement), /// A PEP 508-like, direct URL dependency specifier. Unnamed(UnnamedRequirement), } @@ -69,7 +69,7 @@ impl RequirementsTxtRequirement { return Err(EditableError::MissingVersion(requirement.name)); }; - let pep508_rs::VersionOrUrl::Url(url) = version_or_url else { + let uv_pep508::VersionOrUrl::Url(url) = version_or_url else { return Err(EditableError::Versioned(requirement.name)); }; @@ -86,8 +86,8 @@ impl RequirementsTxtRequirement { } }; - Ok(Self::Named(pep508_rs::Requirement { - version_or_url: Some(pep508_rs::VersionOrUrl::Url(VerbatimParsedUrl { + Ok(Self::Named(uv_pep508::Requirement { + version_or_url: Some(uv_pep508::VersionOrUrl::Url(VerbatimParsedUrl { verbatim: url.verbatim, parsed_url: ParsedUrl::Directory(ParsedDirectoryUrl { editable: true, @@ -134,7 +134,7 @@ impl RequirementsTxtRequirement { editable: bool, ) -> Result>> { // Attempt to parse as a PEP 508-compliant requirement. - match pep508_rs::Requirement::parse(input, &working_dir) { + match uv_pep508::Requirement::parse(input, &working_dir) { Ok(requirement) => { // As a special-case, interpret `dagster` as `./dagster` if we're in editable mode. if editable && requirement.version_or_url.is_none() { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-basic.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-basic.txt.snap similarity index 99% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-basic.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-basic.txt.snap index 7e4e91716..0856eedc5 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-basic.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-basic.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-constraints-a.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-constraints-a.txt.snap similarity index 98% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-constraints-a.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-constraints-a.txt.snap index 23936a97f..a86e9ce1e 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-constraints-a.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-constraints-a.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-constraints-b.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-constraints-b.txt.snap similarity index 97% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-constraints-b.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-constraints-b.txt.snap index 37181b2c7..d90bf92f1 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-constraints-b.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-constraints-b.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-empty.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-empty.txt.snap similarity index 83% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-empty.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-empty.txt.snap index 0a143a451..3f2d86769 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-empty.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-empty.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-for-poetry.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-for-poetry.txt.snap similarity index 98% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-for-poetry.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-for-poetry.txt.snap index 81116f5ac..5c683b650 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-for-poetry.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-for-poetry.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-include-a.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-include-a.txt.snap similarity index 97% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-include-a.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-include-a.txt.snap index 600237f91..bb190b738 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-include-a.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-include-a.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-include-b.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-include-b.txt.snap similarity index 94% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-include-b.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-include-b.txt.snap index 4fcb6d137..19477047a 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-include-b.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-include-b.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-poetry-with-hashes.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-poetry-with-hashes.txt.snap similarity index 99% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-poetry-with-hashes.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-poetry-with-hashes.txt.snap index 787234282..15b5120a5 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-poetry-with-hashes.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-poetry-with-hashes.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-small.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-small.txt.snap similarity index 97% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-small.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-small.txt.snap index c946cc2ca..c60e7d36f 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-small.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-small.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-whitespace.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-whitespace.txt.snap similarity index 98% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-whitespace.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-whitespace.txt.snap index b4800fd93..b59788026 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-whitespace.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__line-endings-whitespace.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-basic.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-basic.txt.snap similarity index 99% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-basic.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-basic.txt.snap index 7e4e91716..0856eedc5 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-basic.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-basic.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-constraints-a.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-constraints-a.txt.snap similarity index 98% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-constraints-a.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-constraints-a.txt.snap index 23936a97f..a86e9ce1e 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-constraints-a.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-constraints-a.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-constraints-b.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-constraints-b.txt.snap similarity index 97% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-constraints-b.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-constraints-b.txt.snap index 37181b2c7..d90bf92f1 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-constraints-b.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-constraints-b.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-empty.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-empty.txt.snap similarity index 83% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-empty.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-empty.txt.snap index 0a143a451..3f2d86769 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-empty.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-empty.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-for-poetry.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-for-poetry.txt.snap similarity index 98% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-for-poetry.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-for-poetry.txt.snap index 81116f5ac..5c683b650 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-for-poetry.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-for-poetry.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-include-a.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-include-a.txt.snap similarity index 97% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-include-a.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-include-a.txt.snap index 600237f91..bb190b738 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-include-a.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-include-a.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-include-b.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-include-b.txt.snap similarity index 94% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-include-b.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-include-b.txt.snap index 4fcb6d137..19477047a 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-include-b.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-include-b.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-poetry-with-hashes.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-poetry-with-hashes.txt.snap similarity index 99% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-poetry-with-hashes.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-poetry-with-hashes.txt.snap index 787234282..15b5120a5 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-poetry-with-hashes.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-poetry-with-hashes.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-small.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-small.txt.snap similarity index 97% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-small.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-small.txt.snap index c946cc2ca..c60e7d36f 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-small.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-small.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-unix-bare-url.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-bare-url.txt.snap similarity index 99% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-unix-bare-url.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-bare-url.txt.snap index 7689453b6..b0ebd7157 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-unix-bare-url.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-bare-url.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-unix-editable.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-editable.txt.snap similarity index 99% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-unix-editable.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-editable.txt.snap index 48cc8b402..4971b1e2e 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-unix-editable.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-editable.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-unix-hash.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-hash.txt.snap similarity index 89% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-unix-hash.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-hash.txt.snap index c023fcaa8..3efe6a9a9 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-unix-hash.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-hash.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxtFileError { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-unix-semicolon.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-semicolon.txt.snap similarity index 90% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-unix-semicolon.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-semicolon.txt.snap index b35272fb7..ef175cff2 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-unix-semicolon.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-unix-semicolon.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxtFileError { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-whitespace.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-whitespace.txt.snap similarity index 98% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-whitespace.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-whitespace.txt.snap index b4800fd93..b59788026 100644 --- a/crates/requirements-txt/src/snapshots/requirements_txt__test__line-endings-whitespace.txt.snap +++ b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-whitespace.txt.snap @@ -1,5 +1,5 @@ --- -source: crates/requirements-txt/src/lib.rs +source: crates/uv-requirements-txt/src/lib.rs expression: actual --- RequirementsTxt { diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-windows-bare-url.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-windows-bare-url.txt.snap similarity index 100% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-windows-bare-url.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-windows-bare-url.txt.snap diff --git a/crates/requirements-txt/src/snapshots/requirements_txt__test__parse-windows-editable.txt.snap b/crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-windows-editable.txt.snap similarity index 100% rename from crates/requirements-txt/src/snapshots/requirements_txt__test__parse-windows-editable.txt.snap rename to crates/uv-requirements-txt/src/snapshots/uv_requirements_txt__test__parse-windows-editable.txt.snap diff --git a/crates/requirements-txt/test-data/requirements-txt/bare-url.txt b/crates/uv-requirements-txt/test-data/requirements-txt/bare-url.txt similarity index 100% rename from crates/requirements-txt/test-data/requirements-txt/bare-url.txt rename to crates/uv-requirements-txt/test-data/requirements-txt/bare-url.txt diff --git a/crates/requirements-txt/test-data/requirements-txt/basic.txt b/crates/uv-requirements-txt/test-data/requirements-txt/basic.txt similarity index 100% rename from crates/requirements-txt/test-data/requirements-txt/basic.txt rename to crates/uv-requirements-txt/test-data/requirements-txt/basic.txt diff --git a/crates/requirements-txt/test-data/requirements-txt/constraints-a.txt b/crates/uv-requirements-txt/test-data/requirements-txt/constraints-a.txt similarity index 100% rename from crates/requirements-txt/test-data/requirements-txt/constraints-a.txt rename to crates/uv-requirements-txt/test-data/requirements-txt/constraints-a.txt diff --git a/crates/requirements-txt/test-data/requirements-txt/constraints-b.txt b/crates/uv-requirements-txt/test-data/requirements-txt/constraints-b.txt similarity index 100% rename from crates/requirements-txt/test-data/requirements-txt/constraints-b.txt rename to crates/uv-requirements-txt/test-data/requirements-txt/constraints-b.txt diff --git a/crates/requirements-txt/test-data/requirements-txt/editable.txt b/crates/uv-requirements-txt/test-data/requirements-txt/editable.txt similarity index 100% rename from crates/requirements-txt/test-data/requirements-txt/editable.txt rename to crates/uv-requirements-txt/test-data/requirements-txt/editable.txt diff --git a/crates/requirements-txt/test-data/requirements-txt/empty.txt b/crates/uv-requirements-txt/test-data/requirements-txt/empty.txt similarity index 100% rename from crates/requirements-txt/test-data/requirements-txt/empty.txt rename to crates/uv-requirements-txt/test-data/requirements-txt/empty.txt diff --git a/crates/requirements-txt/test-data/requirements-txt/for-poetry.txt b/crates/uv-requirements-txt/test-data/requirements-txt/for-poetry.txt similarity index 100% rename from crates/requirements-txt/test-data/requirements-txt/for-poetry.txt rename to crates/uv-requirements-txt/test-data/requirements-txt/for-poetry.txt diff --git a/crates/requirements-txt/test-data/requirements-txt/hash.txt b/crates/uv-requirements-txt/test-data/requirements-txt/hash.txt similarity index 100% rename from crates/requirements-txt/test-data/requirements-txt/hash.txt rename to crates/uv-requirements-txt/test-data/requirements-txt/hash.txt diff --git a/crates/requirements-txt/test-data/requirements-txt/include-a.txt b/crates/uv-requirements-txt/test-data/requirements-txt/include-a.txt similarity index 100% rename from crates/requirements-txt/test-data/requirements-txt/include-a.txt rename to crates/uv-requirements-txt/test-data/requirements-txt/include-a.txt diff --git a/crates/requirements-txt/test-data/requirements-txt/include-b.txt b/crates/uv-requirements-txt/test-data/requirements-txt/include-b.txt similarity index 100% rename from crates/requirements-txt/test-data/requirements-txt/include-b.txt rename to crates/uv-requirements-txt/test-data/requirements-txt/include-b.txt diff --git a/crates/requirements-txt/test-data/requirements-txt/poetry-with-hashes.txt b/crates/uv-requirements-txt/test-data/requirements-txt/poetry-with-hashes.txt similarity index 100% rename from crates/requirements-txt/test-data/requirements-txt/poetry-with-hashes.txt rename to crates/uv-requirements-txt/test-data/requirements-txt/poetry-with-hashes.txt diff --git a/crates/requirements-txt/test-data/requirements-txt/semicolon.txt b/crates/uv-requirements-txt/test-data/requirements-txt/semicolon.txt similarity index 100% rename from crates/requirements-txt/test-data/requirements-txt/semicolon.txt rename to crates/uv-requirements-txt/test-data/requirements-txt/semicolon.txt diff --git a/crates/requirements-txt/test-data/requirements-txt/small.txt b/crates/uv-requirements-txt/test-data/requirements-txt/small.txt similarity index 100% rename from crates/requirements-txt/test-data/requirements-txt/small.txt rename to crates/uv-requirements-txt/test-data/requirements-txt/small.txt diff --git a/crates/requirements-txt/test-data/requirements-txt/whitespace.txt b/crates/uv-requirements-txt/test-data/requirements-txt/whitespace.txt similarity index 100% rename from crates/requirements-txt/test-data/requirements-txt/whitespace.txt rename to crates/uv-requirements-txt/test-data/requirements-txt/whitespace.txt diff --git a/crates/uv-requirements/Cargo.toml b/crates/uv-requirements/Cargo.toml index ffb928c96..2bff81ff5 100644 --- a/crates/uv-requirements/Cargo.toml +++ b/crates/uv-requirements/Cargo.toml @@ -13,19 +13,19 @@ license.workspace = true workspace = true [dependencies] -cache-key = { workspace = true } -distribution-filename = { workspace = true } -distribution-types = { workspace = true } -pep508_rs = { workspace = true } -pypi-types = { workspace = true } -requirements-txt = { workspace = true, features = ["http"] } +uv-cache-key = { workspace = true } uv-client = { workspace = true } uv-configuration = { workspace = true } uv-console = { workspace = true } uv-distribution = { workspace = true } +uv-distribution-filename = { workspace = true } +uv-distribution-types = { workspace = true } uv-fs = { workspace = true } uv-git = { workspace = true } uv-normalize = { workspace = true } +uv-pep508 = { workspace = true } +uv-pypi-types = { workspace = true } +uv-requirements-txt = { workspace = true, features = ["http"] } uv-resolver = { workspace = true, features = ["clap"] } uv-types = { workspace = true } uv-warnings = { workspace = true } diff --git a/crates/uv-requirements/src/lookahead.rs b/crates/uv-requirements/src/lookahead.rs index 3415e3707..4e332586c 100644 --- a/crates/uv-requirements/src/lookahead.rs +++ b/crates/uv-requirements/src/lookahead.rs @@ -6,12 +6,12 @@ use rustc_hash::FxHashSet; use thiserror::Error; use tracing::trace; -use distribution_types::{BuiltDist, Dist, DistributionMetadata, GitSourceDist, SourceDist}; -use pypi_types::{Requirement, RequirementSource}; use uv_configuration::{Constraints, Overrides}; use uv_distribution::{DistributionDatabase, Reporter}; +use uv_distribution_types::{BuiltDist, Dist, DistributionMetadata, GitSourceDist, SourceDist}; use uv_git::GitUrl; use uv_normalize::GroupName; +use uv_pypi_types::{Requirement, RequirementSource}; use uv_resolver::{InMemoryIndex, MetadataResponse, ResolverMarkers}; use uv_types::{BuildContext, HashStrategy, RequestedRequirements}; @@ -24,7 +24,7 @@ pub enum LookaheadError { #[error("Failed to build: `{0}`")] Build(SourceDist, #[source] uv_distribution::Error), #[error(transparent)] - UnsupportedUrl(#[from] distribution_types::Error), + UnsupportedUrl(#[from] uv_distribution_types::Error), } /// A resolver for resolving lookahead requirements from direct URLs. @@ -247,7 +247,7 @@ impl<'a, Context: BuildContext> LookaheadResolver<'a, Context> { } /// Convert a [`Requirement`] into a [`Dist`], if it is a direct URL. -fn required_dist(requirement: &Requirement) -> Result, distribution_types::Error> { +fn required_dist(requirement: &Requirement) -> Result, uv_distribution_types::Error> { Ok(Some(match &requirement.source { RequirementSource::Registry { .. } => return Ok(None), RequirementSource::Url { diff --git a/crates/uv-requirements/src/source_tree.rs b/crates/uv-requirements/src/source_tree.rs index 556e7dec4..245710f47 100644 --- a/crates/uv-requirements/src/source_tree.rs +++ b/crates/uv-requirements/src/source_tree.rs @@ -7,13 +7,15 @@ use futures::stream::FuturesOrdered; use futures::TryStreamExt; use url::Url; -use distribution_types::{BuildableSource, DirectorySourceUrl, HashPolicy, SourceUrl, VersionId}; -use pep508_rs::RequirementOrigin; -use pypi_types::Requirement; use uv_configuration::ExtrasSpecification; use uv_distribution::{DistributionDatabase, Reporter, RequiresDist}; +use uv_distribution_types::{ + BuildableSource, DirectorySourceUrl, HashPolicy, SourceUrl, VersionId, +}; use uv_fs::Simplified; use uv_normalize::{ExtraName, PackageName}; +use uv_pep508::RequirementOrigin; +use uv_pypi_types::Requirement; use uv_resolver::{InMemoryIndex, MetadataResponse}; use uv_types::{BuildContext, HashStrategy}; diff --git a/crates/uv-requirements/src/specification.rs b/crates/uv-requirements/src/specification.rs index d1943e5e1..e456acaaa 100644 --- a/crates/uv-requirements/src/specification.rs +++ b/crates/uv-requirements/src/specification.rs @@ -33,19 +33,19 @@ use anyhow::{Context, Result}; use rustc_hash::FxHashSet; use tracing::instrument; -use cache_key::CanonicalUrl; -use distribution_types::{ +use uv_cache_key::CanonicalUrl; +use uv_client::BaseClientBuilder; +use uv_configuration::{NoBinary, NoBuild}; +use uv_distribution_types::{ FlatIndexLocation, IndexUrl, NameRequirementSpecification, UnresolvedRequirement, UnresolvedRequirementSpecification, }; -use pep508_rs::{MarkerTree, UnnamedRequirement, UnnamedRequirementUrl}; -use pypi_types::Requirement; -use pypi_types::VerbatimParsedUrl; -use requirements_txt::{RequirementsTxt, RequirementsTxtRequirement}; -use uv_client::BaseClientBuilder; -use uv_configuration::{NoBinary, NoBuild}; use uv_fs::{Simplified, CWD}; use uv_normalize::{ExtraName, PackageName}; +use uv_pep508::{MarkerTree, UnnamedRequirement, UnnamedRequirementUrl}; +use uv_pypi_types::Requirement; +use uv_pypi_types::VerbatimParsedUrl; +use uv_requirements_txt::{RequirementsTxt, RequirementsTxtRequirement}; use uv_workspace::pyproject::PyProjectToml; use crate::RequirementsSource; diff --git a/crates/uv-requirements/src/unnamed.rs b/crates/uv-requirements/src/unnamed.rs index 3a1603ea5..cece00a6f 100644 --- a/crates/uv-requirements/src/unnamed.rs +++ b/crates/uv-requirements/src/unnamed.rs @@ -9,16 +9,16 @@ use serde::Deserialize; use tracing::debug; use url::Host; -use distribution_filename::{DistExtension, SourceDistFilename, WheelFilename}; -use distribution_types::{ +use uv_distribution::{DistributionDatabase, Reporter}; +use uv_distribution_filename::{DistExtension, SourceDistFilename, WheelFilename}; +use uv_distribution_types::{ BuildableSource, DirectSourceUrl, DirectorySourceUrl, GitSourceUrl, PathSourceUrl, RemoteSource, SourceUrl, VersionId, }; -use pep508_rs::{UnnamedRequirement, VersionOrUrl}; -use pypi_types::{Metadata10, Requirement}; -use pypi_types::{ParsedUrl, VerbatimParsedUrl}; -use uv_distribution::{DistributionDatabase, Reporter}; use uv_normalize::PackageName; +use uv_pep508::{UnnamedRequirement, VersionOrUrl}; +use uv_pypi_types::{Metadata10, Requirement}; +use uv_pypi_types::{ParsedUrl, VerbatimParsedUrl}; use uv_resolver::{InMemoryIndex, MetadataResponse}; use uv_types::{BuildContext, HashStrategy}; @@ -28,10 +28,10 @@ pub enum NamedRequirementsError { Distribution(#[from] uv_distribution::Error), #[error(transparent)] - DistributionTypes(#[from] distribution_types::Error), + DistributionTypes(#[from] uv_distribution_types::Error), #[error(transparent)] - WheelFilename(#[from] distribution_filename::WheelFilenameError), + WheelFilename(#[from] uv_distribution_filename::WheelFilenameError), } /// Like [`RequirementsSpecification`], but with concrete names for all requirements. @@ -97,7 +97,7 @@ impl<'a, Context: BuildContext> NamedRequirementsResolver<'a, Context> { hasher: &HashStrategy, index: &InMemoryIndex, database: &DistributionDatabase<'a, Context>, - ) -> Result, NamedRequirementsError> { + ) -> Result, NamedRequirementsError> { // If the requirement is a wheel, extract the package name from the wheel filename. // // Ex) `anyio-4.3.0-py3-none-any.whl` @@ -106,7 +106,7 @@ impl<'a, Context: BuildContext> NamedRequirementsResolver<'a, Context> { .is_some_and(|ext| ext.eq_ignore_ascii_case("whl")) { let filename = WheelFilename::from_str(&requirement.url.verbatim.filename()?)?; - return Ok(pep508_rs::Requirement { + return Ok(uv_pep508::Requirement { name: filename.name, extras: requirement.extras, version_or_url: Some(VersionOrUrl::Url(requirement.url)), @@ -144,7 +144,7 @@ impl<'a, Context: BuildContext> NamedRequirementsResolver<'a, Context> { requirement.url.verbatim ); } else { - return Ok(pep508_rs::Requirement { + return Ok(uv_pep508::Requirement { name: filename.name, extras: requirement.extras, version_or_url: Some(VersionOrUrl::Url(requirement.url)), @@ -168,7 +168,7 @@ impl<'a, Context: BuildContext> NamedRequirementsResolver<'a, Context> { path = parsed_directory_url.install_path.display(), name = metadata.name ); - return Ok(pep508_rs::Requirement { + return Ok(uv_pep508::Requirement { name: metadata.name, extras: requirement.extras, version_or_url: Some(VersionOrUrl::Url(requirement.url)), @@ -190,7 +190,7 @@ impl<'a, Context: BuildContext> NamedRequirementsResolver<'a, Context> { path = parsed_directory_url.install_path.display(), name = project.name ); - return Ok(pep508_rs::Requirement { + return Ok(uv_pep508::Requirement { name: project.name, extras: requirement.extras, version_or_url: Some(VersionOrUrl::Url(requirement.url)), @@ -208,7 +208,7 @@ impl<'a, Context: BuildContext> NamedRequirementsResolver<'a, Context> { path = parsed_directory_url.install_path.display(), name = name ); - return Ok(pep508_rs::Requirement { + return Ok(uv_pep508::Requirement { name, extras: requirement.extras, version_or_url: Some(VersionOrUrl::Url(requirement.url)), @@ -238,7 +238,7 @@ impl<'a, Context: BuildContext> NamedRequirementsResolver<'a, Context> { path = parsed_directory_url.install_path.display(), name = name ); - return Ok(pep508_rs::Requirement { + return Ok(uv_pep508::Requirement { name, extras: requirement.extras, version_or_url: Some(VersionOrUrl::Url(requirement.url)), @@ -319,7 +319,7 @@ impl<'a, Context: BuildContext> NamedRequirementsResolver<'a, Context> { } }; - Ok(pep508_rs::Requirement { + Ok(uv_pep508::Requirement { name, extras: requirement.extras, version_or_url: Some(VersionOrUrl::Url(requirement.url)), diff --git a/crates/uv-requirements/src/upgrade.rs b/crates/uv-requirements/src/upgrade.rs index 6d9bd7777..ce662d65c 100644 --- a/crates/uv-requirements/src/upgrade.rs +++ b/crates/uv-requirements/src/upgrade.rs @@ -2,11 +2,11 @@ use std::path::Path; use anyhow::Result; -use requirements_txt::RequirementsTxt; use uv_client::{BaseClientBuilder, Connectivity}; use uv_configuration::Upgrade; use uv_fs::CWD; use uv_git::ResolvedRepositoryReference; +use uv_requirements_txt::RequirementsTxt; use uv_resolver::{Lock, Preference, PreferenceError}; #[derive(Debug, Default)] diff --git a/crates/uv-resolver/Cargo.toml b/crates/uv-resolver/Cargo.toml index db86ae55c..a50aaae47 100644 --- a/crates/uv-resolver/Cargo.toml +++ b/crates/uv-resolver/Cargo.toml @@ -13,24 +13,24 @@ license = { workspace = true } workspace = true [dependencies] -cache-key = { workspace = true } -distribution-filename = { workspace = true } -distribution-types = { workspace = true } -once-map = { workspace = true } -pep440_rs = { workspace = true } -pep508_rs = { workspace = true } -platform-tags = { workspace = true } -pypi-types = { workspace = true } -requirements-txt = { workspace = true } +uv-cache-key = { workspace = true } uv-client = { workspace = true } uv-configuration = { workspace = true } uv-distribution = { workspace = true } +uv-distribution-filename = { workspace = true } +uv-distribution-types = { workspace = true } uv-fs = { workspace = true, features = ["serde"] } uv-git = { workspace = true } uv-metadata = { workspace = true } uv-normalize = { workspace = true } +uv-once-map = { workspace = true } +uv-pep440 = { workspace = true } +uv-pep508 = { workspace = true } +uv-platform-tags = { workspace = true } uv-pubgrub = { workspace = true } +uv-pypi-types = { workspace = true } uv-python = { workspace = true } +uv-requirements-txt = { workspace = true } uv-types = { workspace = true } uv-warnings = { workspace = true } uv-workspace = { workspace = true } diff --git a/crates/uv-resolver/src/candidate_selector.rs b/crates/uv-resolver/src/candidate_selector.rs index 4deddf414..440227752 100644 --- a/crates/uv-resolver/src/candidate_selector.rs +++ b/crates/uv-resolver/src/candidate_selector.rs @@ -3,12 +3,12 @@ use pubgrub::Range; use std::fmt::{Display, Formatter}; use tracing::{debug, trace}; -use distribution_types::{CompatibleDist, IncompatibleDist, IncompatibleSource}; -use distribution_types::{DistributionMetadata, IncompatibleWheel, Name, PrioritizedDist}; -use pep440_rs::Version; -use pep508_rs::MarkerTree; use uv_configuration::IndexStrategy; +use uv_distribution_types::{CompatibleDist, IncompatibleDist, IncompatibleSource}; +use uv_distribution_types::{DistributionMetadata, IncompatibleWheel, Name, PrioritizedDist}; use uv_normalize::PackageName; +use uv_pep440::Version; +use uv_pep508::MarkerTree; use uv_types::InstalledPackagesProvider; use crate::preferences::Preferences; @@ -578,7 +578,7 @@ impl Name for Candidate<'_> { } impl DistributionMetadata for Candidate<'_> { - fn version_or_url(&self) -> distribution_types::VersionOrUrlRef { - distribution_types::VersionOrUrlRef::Version(self.version) + fn version_or_url(&self) -> uv_distribution_types::VersionOrUrlRef { + uv_distribution_types::VersionOrUrlRef::Version(self.version) } } diff --git a/crates/uv-resolver/src/dependency_provider.rs b/crates/uv-resolver/src/dependency_provider.rs index 0f85d1114..8fd878b3d 100644 --- a/crates/uv-resolver/src/dependency_provider.rs +++ b/crates/uv-resolver/src/dependency_provider.rs @@ -2,7 +2,7 @@ use std::convert::Infallible; use pubgrub::{Dependencies, DependencyProvider, Range}; -use pep440_rs::Version; +use uv_pep440::Version; use crate::pubgrub::{PubGrubPackage, PubGrubPriority}; use crate::resolver::UnavailableReason; diff --git a/crates/uv-resolver/src/error.rs b/crates/uv-resolver/src/error.rs index b5e5bdfc9..efb5d6766 100644 --- a/crates/uv-resolver/src/error.rs +++ b/crates/uv-resolver/src/error.rs @@ -6,11 +6,11 @@ use indexmap::IndexSet; use pubgrub::{DefaultStringReporter, DerivationTree, Derived, External, Range, Reporter}; use rustc_hash::FxHashMap; -use distribution_types::{BuiltDist, IndexLocations, IndexUrl, InstalledDist, SourceDist}; -use pep440_rs::Version; -use pep508_rs::MarkerTree; use tracing::trace; +use uv_distribution_types::{BuiltDist, IndexLocations, IndexUrl, InstalledDist, SourceDist}; use uv_normalize::PackageName; +use uv_pep440::Version; +use uv_pep508::MarkerTree; use crate::candidate_selector::CandidateSelector; use crate::dependency_provider::UvDependencyProvider; @@ -56,10 +56,10 @@ pub enum ResolveError { DisallowedUrl(PackageName, String), #[error(transparent)] - DistributionType(#[from] distribution_types::Error), + DistributionType(#[from] uv_distribution_types::Error), #[error(transparent)] - ParsedUrl(#[from] pypi_types::ParsedUrlError), + ParsedUrl(#[from] uv_pypi_types::ParsedUrlError), #[error("Failed to download `{0}`")] Fetch(Box, #[source] uv_distribution::Error), @@ -81,7 +81,7 @@ pub enum ResolveError { NoSolution(#[from] NoSolutionError), #[error("Attempted to construct an invalid version specifier")] - InvalidVersion(#[from] pep440_rs::VersionSpecifierBuildError), + InvalidVersion(#[from] uv_pep440::VersionSpecifierBuildError), #[error("In `--require-hashes` mode, all requirements must be pinned upfront with `==`, but found: `{0}`")] UnhashedPackage(PackageName), diff --git a/crates/uv-resolver/src/exclusions.rs b/crates/uv-resolver/src/exclusions.rs index 59a4864b2..2222584c9 100644 --- a/crates/uv-resolver/src/exclusions.rs +++ b/crates/uv-resolver/src/exclusions.rs @@ -1,6 +1,6 @@ -use pep508_rs::PackageName; use rustc_hash::FxHashSet; use uv_configuration::{Reinstall, Upgrade}; +use uv_pep508::PackageName; /// Tracks locally installed packages that should not be selected during resolution. #[derive(Debug, Default, Clone)] diff --git a/crates/uv-resolver/src/flat_index.rs b/crates/uv-resolver/src/flat_index.rs index 2025b37d2..44bf28ce6 100644 --- a/crates/uv-resolver/src/flat_index.rs +++ b/crates/uv-resolver/src/flat_index.rs @@ -4,18 +4,18 @@ use std::collections::BTreeMap; use rustc_hash::FxHashMap; use tracing::instrument; -use distribution_filename::{DistFilename, SourceDistFilename, WheelFilename}; -use distribution_types::{ +use uv_client::FlatIndexEntries; +use uv_configuration::BuildOptions; +use uv_distribution_filename::{DistFilename, SourceDistFilename, WheelFilename}; +use uv_distribution_types::{ File, HashComparison, HashPolicy, IncompatibleSource, IncompatibleWheel, IndexUrl, PrioritizedDist, RegistryBuiltWheel, RegistrySourceDist, SourceDistCompatibility, WheelCompatibility, }; -use pep440_rs::Version; -use platform_tags::{TagCompatibility, Tags}; -use pypi_types::HashDigest; -use uv_client::FlatIndexEntries; -use uv_configuration::BuildOptions; use uv_normalize::PackageName; +use uv_pep440::Version; +use uv_platform_tags::{TagCompatibility, Tags}; +use uv_pypi_types::HashDigest; use uv_types::HashStrategy; /// A set of [`PrioritizedDist`] from a `--find-links` entry, indexed by [`PackageName`] diff --git a/crates/uv-resolver/src/fork_urls.rs b/crates/uv-resolver/src/fork_urls.rs index cad2b5925..39edf0e9b 100644 --- a/crates/uv-resolver/src/fork_urls.rs +++ b/crates/uv-resolver/src/fork_urls.rs @@ -2,9 +2,9 @@ use std::collections::hash_map::Entry; use rustc_hash::FxHashMap; -use distribution_types::Verbatim; -use pypi_types::VerbatimParsedUrl; +use uv_distribution_types::Verbatim; use uv_normalize::PackageName; +use uv_pypi_types::VerbatimParsedUrl; use crate::resolver::ResolverMarkers; use crate::ResolveError; diff --git a/crates/uv-resolver/src/graph_ops.rs b/crates/uv-resolver/src/graph_ops.rs index f951f08b9..e09a66c75 100644 --- a/crates/uv-resolver/src/graph_ops.rs +++ b/crates/uv-resolver/src/graph_ops.rs @@ -1,9 +1,9 @@ -use pep508_rs::MarkerTree; use petgraph::graph::NodeIndex; use petgraph::visit::EdgeRef; use petgraph::{Direction, Graph}; use rustc_hash::{FxBuildHasher, FxHashMap}; use std::collections::hash_map::Entry; +use uv_pep508::MarkerTree; /// Determine the markers under which a package is reachable in the dependency tree. /// diff --git a/crates/uv-resolver/src/lock/mod.rs b/crates/uv-resolver/src/lock/mod.rs index 06a0f03d3..f21e01016 100644 --- a/crates/uv-resolver/src/lock/mod.rs +++ b/crates/uv-resolver/src/lock/mod.rs @@ -14,27 +14,27 @@ use std::sync::LazyLock; use toml_edit::{value, Array, ArrayOfTables, InlineTable, Item, Table, Value}; use url::Url; -use cache_key::RepositoryUrl; -use distribution_filename::{DistExtension, ExtensionError, SourceDistExtension, WheelFilename}; -use distribution_types::{ +use uv_cache_key::RepositoryUrl; +use uv_configuration::{BuildOptions, DevSpecification, ExtrasSpecification, InstallOptions}; +use uv_distribution::DistributionDatabase; +use uv_distribution_filename::{DistExtension, ExtensionError, SourceDistExtension, WheelFilename}; +use uv_distribution_types::{ BuiltDist, DependencyMetadata, DirectUrlBuiltDist, DirectUrlSourceDist, DirectorySourceDist, Dist, DistributionMetadata, FileLocation, FlatIndexLocation, GitSourceDist, HashPolicy, IndexLocations, IndexUrl, Name, PathBuiltDist, PathSourceDist, RegistryBuiltDist, RegistryBuiltWheel, RegistrySourceDist, RemoteSource, Resolution, ResolvedDist, StaticMetadata, ToUrlError, UrlString, }; -use pep440_rs::Version; -use pep508_rs::{split_scheme, MarkerEnvironment, MarkerTree, VerbatimUrl, VerbatimUrlError}; -use platform_tags::{TagCompatibility, TagPriority, Tags}; -use pypi_types::{ - redact_git_credentials, HashDigest, ParsedArchiveUrl, ParsedGitUrl, Requirement, - RequirementSource, ResolverMarkerEnvironment, -}; -use uv_configuration::{BuildOptions, DevSpecification, ExtrasSpecification, InstallOptions}; -use uv_distribution::DistributionDatabase; use uv_fs::{relative_to, PortablePath, PortablePathBuf}; use uv_git::{GitReference, GitSha, RepositoryReference, ResolvedRepositoryReference}; use uv_normalize::{ExtraName, GroupName, PackageName}; +use uv_pep440::Version; +use uv_pep508::{split_scheme, MarkerEnvironment, MarkerTree, VerbatimUrl, VerbatimUrlError}; +use uv_platform_tags::{TagCompatibility, TagPriority, Tags}; +use uv_pypi_types::{ + redact_git_credentials, HashDigest, ParsedArchiveUrl, ParsedGitUrl, Requirement, + RequirementSource, ResolverMarkerEnvironment, +}; use uv_types::BuildContext; use uv_workspace::{InstallTarget, Workspace}; @@ -1766,7 +1766,7 @@ impl Package { fn to_source_dist( &self, workspace_root: &Path, - ) -> Result, LockError> { + ) -> Result, LockError> { let sdist = match &self.id.source { Source::Path(path) => { // A direct path source can also be a wheel, so validate the extension. @@ -1779,7 +1779,7 @@ impl Package { install_path: workspace_root.join(path), ext, }; - distribution_types::SourceDist::Path(path_dist) + uv_distribution_types::SourceDist::Path(path_dist) } Source::Directory(path) => { let dir_dist = DirectorySourceDist { @@ -1789,7 +1789,7 @@ impl Package { editable: false, r#virtual: false, }; - distribution_types::SourceDist::Directory(dir_dist) + uv_distribution_types::SourceDist::Directory(dir_dist) } Source::Editable(path) => { let dir_dist = DirectorySourceDist { @@ -1799,7 +1799,7 @@ impl Package { editable: true, r#virtual: false, }; - distribution_types::SourceDist::Directory(dir_dist) + uv_distribution_types::SourceDist::Directory(dir_dist) } Source::Virtual(path) => { let dir_dist = DirectorySourceDist { @@ -1809,7 +1809,7 @@ impl Package { editable: false, r#virtual: true, }; - distribution_types::SourceDist::Directory(dir_dist) + uv_distribution_types::SourceDist::Directory(dir_dist) } Source::Git(url, git) => { // Remove the fragment and query from the URL; they're already present in the @@ -1837,7 +1837,7 @@ impl Package { git: Box::new(git_url), subdirectory: git.subdirectory.as_ref().map(PathBuf::from), }; - distribution_types::SourceDist::Git(git_dist) + uv_distribution_types::SourceDist::Git(git_dist) } Source::Direct(url, direct) => { // A direct URL source can also be a wheel, so validate the extension. @@ -1857,7 +1857,7 @@ impl Package { ext, url: VerbatimUrl::from_url(url), }; - distribution_types::SourceDist::DirectUrl(direct_dist) + uv_distribution_types::SourceDist::DirectUrl(direct_dist) } Source::Registry(RegistrySource::Url(url)) => { let Some(ref sdist) = self.sdist else { @@ -1874,7 +1874,7 @@ impl Package { id: self.id.clone(), })?; let ext = SourceDistExtension::from_path(filename.as_ref())?; - let file = Box::new(distribution_types::File { + let file = Box::new(uv_distribution_types::File { dist_info_metadata: false, filename: filename.to_string(), hashes: sdist @@ -1897,7 +1897,7 @@ impl Package { index, wheels: vec![], }; - distribution_types::SourceDist::Registry(reg_dist) + uv_distribution_types::SourceDist::Registry(reg_dist) } Source::Registry(RegistrySource::Path(path)) => { let Some(ref sdist) = self.sdist else { @@ -1916,7 +1916,7 @@ impl Package { id: self.id.clone(), })?; let ext = SourceDistExtension::from_path(filename.as_ref())?; - let file = Box::new(distribution_types::File { + let file = Box::new(uv_distribution_types::File { dist_info_metadata: false, filename: filename.to_string(), hashes: sdist @@ -1942,7 +1942,7 @@ impl Package { index, wheels: vec![], }; - distribution_types::SourceDist::Registry(reg_dist) + uv_distribution_types::SourceDist::Registry(reg_dist) } }; @@ -2376,23 +2376,23 @@ impl Source { } fn from_source_dist( - source_dist: &distribution_types::SourceDist, + source_dist: &uv_distribution_types::SourceDist, root: &Path, ) -> Result { match *source_dist { - distribution_types::SourceDist::Registry(ref reg_dist) => { + uv_distribution_types::SourceDist::Registry(ref reg_dist) => { Source::from_registry_source_dist(reg_dist, root) } - distribution_types::SourceDist::DirectUrl(ref direct_dist) => { + uv_distribution_types::SourceDist::DirectUrl(ref direct_dist) => { Ok(Source::from_direct_source_dist(direct_dist)) } - distribution_types::SourceDist::Git(ref git_dist) => { + uv_distribution_types::SourceDist::Git(ref git_dist) => { Ok(Source::from_git_dist(git_dist)) } - distribution_types::SourceDist::Path(ref path_dist) => { + uv_distribution_types::SourceDist::Path(ref path_dist) => { Source::from_path_source_dist(path_dist, root) } - distribution_types::SourceDist::Directory(ref directory) => { + uv_distribution_types::SourceDist::Directory(ref directory) => { Source::from_directory_source_dist(directory, root) } } @@ -2914,23 +2914,23 @@ impl SourceDist { fn from_source_dist( id: &PackageId, - source_dist: &distribution_types::SourceDist, + source_dist: &uv_distribution_types::SourceDist, hashes: &[HashDigest], index: Option<&IndexUrl>, ) -> Result, LockError> { match *source_dist { - distribution_types::SourceDist::Registry(ref reg_dist) => { + uv_distribution_types::SourceDist::Registry(ref reg_dist) => { SourceDist::from_registry_dist(reg_dist, index) } - distribution_types::SourceDist::DirectUrl(ref direct_dist) => { + uv_distribution_types::SourceDist::DirectUrl(ref direct_dist) => { SourceDist::from_direct_dist(id, direct_dist, hashes).map(Some) } // An actual sdist entry in the lockfile is only required when // it's from a registry or a direct URL. Otherwise, it's strictly // redundant with the information in all other kinds of `source`. - distribution_types::SourceDist::Git(_) - | distribution_types::SourceDist::Path(_) - | distribution_types::SourceDist::Directory(_) => Ok(None), + uv_distribution_types::SourceDist::Git(_) + | uv_distribution_types::SourceDist::Path(_) + | uv_distribution_types::SourceDist::Directory(_) => Ok(None), } } @@ -3175,16 +3175,18 @@ impl Wheel { ) -> Result, LockError> { match *dist { Dist::Built(ref built_dist) => Wheel::from_built_dist(built_dist, hashes, index), - Dist::Source(distribution_types::SourceDist::Registry(ref source_dist)) => source_dist - .wheels - .iter() - .filter(|wheel| { - // Reject distributions from registries that don't match the index URL, as can occur with - // `--find-links`. - index.is_some_and(|index| *index == wheel.index) - }) - .map(Wheel::from_registry_wheel) - .collect(), + Dist::Source(uv_distribution_types::SourceDist::Registry(ref source_dist)) => { + source_dist + .wheels + .iter() + .filter(|wheel| { + // Reject distributions from registries that don't match the index URL, as can occur with + // `--find-links`. + index.is_some_and(|index| *index == wheel.index) + }) + .map(Wheel::from_registry_wheel) + .collect() + } Dist::Source(_) => Ok(vec![]), } } @@ -3298,7 +3300,7 @@ impl Wheel { .into()) } }; - let file = Box::new(distribution_types::File { + let file = Box::new(uv_distribution_types::File { dist_info_metadata: false, filename: filename.to_string(), hashes: self.hash.iter().map(|h| h.0.clone()).collect(), @@ -3328,7 +3330,7 @@ impl Wheel { }; let file_url = Url::from_file_path(root.join(index_path).join(file_path)) .map_err(|()| LockErrorKind::PathToUrl)?; - let file = Box::new(distribution_types::File { + let file = Box::new(uv_distribution_types::File { dist_info_metadata: false, filename: filename.to_string(), hashes: self.hash.iter().map(|h| h.0.clone()).collect(), diff --git a/crates/uv-resolver/src/lock/requirements_txt.rs b/crates/uv-resolver/src/lock/requirements_txt.rs index 88892292d..1393a459f 100644 --- a/crates/uv-resolver/src/lock/requirements_txt.rs +++ b/crates/uv-resolver/src/lock/requirements_txt.rs @@ -10,13 +10,13 @@ use petgraph::{Directed, Graph}; use rustc_hash::{FxBuildHasher, FxHashMap, FxHashSet}; use url::Url; -use distribution_filename::{DistExtension, SourceDistExtension}; -use pep508_rs::MarkerTree; -use pypi_types::{ParsedArchiveUrl, ParsedGitUrl}; use uv_configuration::{DevSpecification, EditableMode, ExtrasSpecification, InstallOptions}; +use uv_distribution_filename::{DistExtension, SourceDistExtension}; use uv_fs::Simplified; use uv_git::GitReference; use uv_normalize::{ExtraName, PackageName}; +use uv_pep508::MarkerTree; +use uv_pypi_types::{ParsedArchiveUrl, ParsedGitUrl}; use crate::graph_ops::marker_reachability; use crate::lock::{Package, PackageId, Source}; diff --git a/crates/uv-resolver/src/lock/tree.rs b/crates/uv-resolver/src/lock/tree.rs index f3b273cfa..703fbf199 100644 --- a/crates/uv-resolver/src/lock/tree.rs +++ b/crates/uv-resolver/src/lock/tree.rs @@ -4,8 +4,8 @@ use std::collections::BTreeSet; use itertools::Itertools; use rustc_hash::{FxHashMap, FxHashSet}; -use pypi_types::ResolverMarkerEnvironment; use uv_normalize::{ExtraName, GroupName, PackageName}; +use uv_pypi_types::ResolverMarkerEnvironment; use crate::lock::{Dependency, PackageId}; use crate::Lock; diff --git a/crates/uv-resolver/src/manifest.rs b/crates/uv-resolver/src/manifest.rs index 82de403ed..097ad2fe4 100644 --- a/crates/uv-resolver/src/manifest.rs +++ b/crates/uv-resolver/src/manifest.rs @@ -3,9 +3,9 @@ use std::collections::BTreeSet; use either::Either; -use pypi_types::Requirement; use uv_configuration::{Constraints, Overrides}; use uv_normalize::{GroupName, PackageName}; +use uv_pypi_types::Requirement; use uv_types::RequestedRequirements; use crate::preferences::Preferences; diff --git a/crates/uv-resolver/src/marker.rs b/crates/uv-resolver/src/marker.rs index 944362c1e..842f004b0 100644 --- a/crates/uv-resolver/src/marker.rs +++ b/crates/uv-resolver/src/marker.rs @@ -1,7 +1,7 @@ use crate::requires_python::{LowerBound, RequiresPythonRange, UpperBound}; -use pep440_rs::Version; -use pep508_rs::{MarkerTree, MarkerTreeKind, MarkerValueVersion}; use pubgrub::Range; +use uv_pep440::Version; +use uv_pep508::{MarkerTree, MarkerTreeKind, MarkerValueVersion}; /// Returns the bounding Python versions that can satisfy the [`MarkerTree`], if it's constrained. pub(crate) fn requires_python(tree: &MarkerTree) -> Option { diff --git a/crates/uv-resolver/src/pins.rs b/crates/uv-resolver/src/pins.rs index d471f745a..73623f92c 100644 --- a/crates/uv-resolver/src/pins.rs +++ b/crates/uv-resolver/src/pins.rs @@ -1,6 +1,6 @@ use rustc_hash::FxHashMap; -use distribution_types::{CompatibleDist, ResolvedDist}; +use uv_distribution_types::{CompatibleDist, ResolvedDist}; use uv_normalize::PackageName; use crate::candidate_selector::Candidate; @@ -10,7 +10,7 @@ use crate::candidate_selector::Candidate; /// For example, given `Flask==3.0.0`, the [`FilePins`] would contain a mapping from `Flask` to /// `3.0.0` to the specific wheel or source distribution archive that was pinned for that version. #[derive(Clone, Debug, Default)] -pub(crate) struct FilePins(FxHashMap>); +pub(crate) struct FilePins(FxHashMap>); impl FilePins { /// Pin a candidate package. @@ -25,7 +25,7 @@ impl FilePins { pub(crate) fn get( &self, name: &PackageName, - version: &pep440_rs::Version, + version: &uv_pep440::Version, ) -> Option<&ResolvedDist> { self.0.get(name)?.get(version) } diff --git a/crates/uv-resolver/src/preferences.rs b/crates/uv-resolver/src/preferences.rs index b031045fe..487050eb8 100644 --- a/crates/uv-resolver/src/preferences.rs +++ b/crates/uv-resolver/src/preferences.rs @@ -3,12 +3,12 @@ use std::str::FromStr; use rustc_hash::FxHashMap; use tracing::trace; -use distribution_types::{InstalledDist, InstalledMetadata, InstalledVersion, Name}; -use pep440_rs::{Operator, Version}; -use pep508_rs::{MarkerTree, VersionOrUrl}; -use pypi_types::{HashDigest, HashError}; -use requirements_txt::{RequirementEntry, RequirementsTxtRequirement}; +use uv_distribution_types::{InstalledDist, InstalledMetadata, InstalledVersion, Name}; use uv_normalize::PackageName; +use uv_pep440::{Operator, Version}; +use uv_pep508::{MarkerTree, VersionOrUrl}; +use uv_pypi_types::{HashDigest, HashError}; +use uv_requirements_txt::{RequirementEntry, RequirementsTxtRequirement}; use crate::ResolverMarkers; diff --git a/crates/uv-resolver/src/prerelease.rs b/crates/uv-resolver/src/prerelease.rs index a0e26fc84..c45285877 100644 --- a/crates/uv-resolver/src/prerelease.rs +++ b/crates/uv-resolver/src/prerelease.rs @@ -1,4 +1,4 @@ -use pypi_types::RequirementSource; +use uv_pypi_types::RequirementSource; use uv_normalize::PackageName; @@ -84,7 +84,7 @@ impl PrereleaseStrategy { if specifier .iter() - .any(pep440_rs::VersionSpecifier::any_prerelease) + .any(uv_pep440::VersionSpecifier::any_prerelease) { packages.add(&requirement, ()); } diff --git a/crates/uv-resolver/src/pubgrub/dependencies.rs b/crates/uv-resolver/src/pubgrub/dependencies.rs index 8b5a4c715..5045e94a0 100644 --- a/crates/uv-resolver/src/pubgrub/dependencies.rs +++ b/crates/uv-resolver/src/pubgrub/dependencies.rs @@ -4,12 +4,12 @@ use itertools::Itertools; use pubgrub::Range; use tracing::warn; -use pep440_rs::{Version, VersionSpecifiers}; -use pypi_types::{ +use uv_normalize::{ExtraName, PackageName}; +use uv_pep440::{Version, VersionSpecifiers}; +use uv_pypi_types::{ ParsedArchiveUrl, ParsedDirectoryUrl, ParsedGitUrl, ParsedPathUrl, ParsedUrl, Requirement, RequirementSource, VerbatimParsedUrl, }; -use uv_normalize::{ExtraName, PackageName}; use crate::pubgrub::{PubGrubPackage, PubGrubPackageInner}; use crate::{PubGrubSpecifier, ResolveError}; diff --git a/crates/uv-resolver/src/pubgrub/distribution.rs b/crates/uv-resolver/src/pubgrub/distribution.rs index 3d3ec74c5..c5208f9fb 100644 --- a/crates/uv-resolver/src/pubgrub/distribution.rs +++ b/crates/uv-resolver/src/pubgrub/distribution.rs @@ -1,7 +1,7 @@ -use distribution_types::{DistributionMetadata, Name, VersionOrUrlRef}; -use pep440_rs::Version; -use pypi_types::VerbatimParsedUrl; +use uv_distribution_types::{DistributionMetadata, Name, VersionOrUrlRef}; use uv_normalize::PackageName; +use uv_pep440::Version; +use uv_pypi_types::VerbatimParsedUrl; #[derive(Debug)] pub(crate) enum PubGrubDistribution<'a> { diff --git a/crates/uv-resolver/src/pubgrub/package.rs b/crates/uv-resolver/src/pubgrub/package.rs index 7d6b0a21b..14debbcd6 100644 --- a/crates/uv-resolver/src/pubgrub/package.rs +++ b/crates/uv-resolver/src/pubgrub/package.rs @@ -1,8 +1,8 @@ use std::ops::Deref; use std::sync::Arc; -use pep508_rs::{MarkerTree, MarkerTreeContents}; use uv_normalize::{ExtraName, GroupName, PackageName}; +use uv_pep508::{MarkerTree, MarkerTreeContents}; use crate::python_requirement::PythonRequirement; diff --git a/crates/uv-resolver/src/pubgrub/priority.rs b/crates/uv-resolver/src/pubgrub/priority.rs index 6e63f5ad9..3c7206055 100644 --- a/crates/uv-resolver/src/pubgrub/priority.rs +++ b/crates/uv-resolver/src/pubgrub/priority.rs @@ -4,8 +4,8 @@ use pubgrub::Range; use rustc_hash::FxHashMap; use crate::fork_urls::ForkUrls; -use pep440_rs::Version; use uv_normalize::PackageName; +use uv_pep440::Version; use crate::pubgrub::package::PubGrubPackage; use crate::pubgrub::PubGrubPackageInner; diff --git a/crates/uv-resolver/src/pubgrub/report.rs b/crates/uv-resolver/src/pubgrub/report.rs index f272020bc..decf99087 100644 --- a/crates/uv-resolver/src/pubgrub/report.rs +++ b/crates/uv-resolver/src/pubgrub/report.rs @@ -8,10 +8,10 @@ use owo_colors::OwoColorize; use pubgrub::{DerivationTree, Derived, External, Map, Range, ReportFormatter, Term}; use rustc_hash::FxHashMap; -use distribution_types::{IndexLocations, IndexUrl}; -use pep440_rs::Version; use uv_configuration::IndexStrategy; +use uv_distribution_types::{IndexLocations, IndexUrl}; use uv_normalize::PackageName; +use uv_pep440::Version; use crate::candidate_selector::CandidateSelector; use crate::error::ErrorTree; diff --git a/crates/uv-resolver/src/python_requirement.rs b/crates/uv-resolver/src/python_requirement.rs index 117442ce0..b124635da 100644 --- a/crates/uv-resolver/src/python_requirement.rs +++ b/crates/uv-resolver/src/python_requirement.rs @@ -1,5 +1,5 @@ -use pep440_rs::Version; -use pep508_rs::MarkerTree; +use uv_pep440::Version; +use uv_pep508::MarkerTree; use uv_python::{Interpreter, PythonVersion}; use crate::{RequiresPython, RequiresPythonRange}; diff --git a/crates/uv-resolver/src/redirect.rs b/crates/uv-resolver/src/redirect.rs index bbd586c6e..a4a7652f4 100644 --- a/crates/uv-resolver/src/redirect.rs +++ b/crates/uv-resolver/src/redirect.rs @@ -1,8 +1,8 @@ use url::Url; -use pep508_rs::VerbatimUrl; -use pypi_types::{ParsedGitUrl, ParsedUrl, VerbatimParsedUrl}; use uv_git::{GitReference, GitResolver}; +use uv_pep508::VerbatimUrl; +use uv_pypi_types::{ParsedGitUrl, ParsedUrl, VerbatimParsedUrl}; /// Map a URL to a precise URL, if possible. pub(crate) fn url_to_precise(url: VerbatimParsedUrl, git: &GitResolver) -> VerbatimParsedUrl { @@ -89,7 +89,7 @@ fn apply_redirect(url: &VerbatimUrl, redirect: Url) -> VerbatimUrl { mod tests { use url::Url; - use pep508_rs::VerbatimUrl; + use uv_pep508::VerbatimUrl; use crate::redirect::apply_redirect; diff --git a/crates/uv-resolver/src/requires_python.rs b/crates/uv-resolver/src/requires_python.rs index 31e795779..1e61af401 100644 --- a/crates/uv-resolver/src/requires_python.rs +++ b/crates/uv-resolver/src/requires_python.rs @@ -5,9 +5,9 @@ use std::ops::Deref; use itertools::Itertools; use pubgrub::Range; -use distribution_filename::WheelFilename; -use pep440_rs::{Version, VersionSpecifier, VersionSpecifiers}; -use pep508_rs::{MarkerExpression, MarkerTree, MarkerValueVersion}; +use uv_distribution_filename::WheelFilename; +use uv_pep440::{Version, VersionSpecifier, VersionSpecifiers}; +use uv_pep508::{MarkerExpression, MarkerTree, MarkerValueVersion}; #[derive(thiserror::Error, Debug)] pub enum RequiresPythonError { @@ -708,8 +708,8 @@ mod tests { use std::collections::Bound; use std::str::FromStr; - use distribution_filename::WheelFilename; - use pep440_rs::{Version, VersionSpecifiers}; + use uv_distribution_filename::WheelFilename; + use uv_pep440::{Version, VersionSpecifiers}; use crate::requires_python::{LowerBound, UpperBound}; use crate::RequiresPython; diff --git a/crates/uv-resolver/src/resolution/display.rs b/crates/uv-resolver/src/resolution/display.rs index 61821be2f..a103bd73f 100644 --- a/crates/uv-resolver/src/resolution/display.rs +++ b/crates/uv-resolver/src/resolution/display.rs @@ -5,9 +5,9 @@ use petgraph::visit::EdgeRef; use petgraph::Direction; use rustc_hash::{FxBuildHasher, FxHashMap}; -use distribution_types::{DistributionMetadata, Name, SourceAnnotation, SourceAnnotations}; -use pep508_rs::MarkerTree; +use uv_distribution_types::{DistributionMetadata, Name, SourceAnnotation, SourceAnnotations}; use uv_normalize::PackageName; +use uv_pep508::MarkerTree; use crate::resolution::{RequirementsTxtDist, ResolutionGraphNode}; use crate::{ResolutionGraph, ResolverMarkers}; @@ -210,7 +210,7 @@ impl std::fmt::Display for DisplayResolutionGraph<'_> { let mut dependents = petgraph .edges_directed(index, Direction::Incoming) .map(|edge| &petgraph[edge.source()]) - .map(distribution_types::Name::name) + .map(uv_distribution_types::Name::name) .collect::>(); dependents.sort_unstable(); dependents.dedup(); diff --git a/crates/uv-resolver/src/resolution/graph.rs b/crates/uv-resolver/src/resolution/graph.rs index 459cbf08c..f8d3a8fe9 100644 --- a/crates/uv-resolver/src/resolution/graph.rs +++ b/crates/uv-resolver/src/resolution/graph.rs @@ -1,23 +1,23 @@ use std::collections::BTreeMap; use std::fmt::{Display, Formatter}; -use distribution_types::{ - Dist, DistributionMetadata, Name, ResolutionDiagnostic, ResolvedDist, VersionId, - VersionOrUrlRef, -}; use indexmap::IndexSet; -use pep440_rs::{Version, VersionSpecifier}; -use pep508_rs::{MarkerEnvironment, MarkerTree, MarkerTreeKind, VerbatimUrl}; use petgraph::{ graph::{Graph, NodeIndex}, Directed, Direction, }; -use pypi_types::{HashDigest, ParsedUrlError, Requirement, VerbatimParsedUrl, Yanked}; use rustc_hash::{FxBuildHasher, FxHashMap, FxHashSet}; use uv_configuration::{Constraints, Overrides}; use uv_distribution::Metadata; +use uv_distribution_types::{ + Dist, DistributionMetadata, Name, ResolutionDiagnostic, ResolvedDist, VersionId, + VersionOrUrlRef, +}; use uv_git::GitResolver; use uv_normalize::{ExtraName, GroupName, PackageName}; +use uv_pep440::{Version, VersionSpecifier}; +use uv_pep508::{MarkerEnvironment, MarkerTree, MarkerTreeKind, VerbatimUrl}; +use uv_pypi_types::{HashDigest, ParsedUrlError, Requirement, VerbatimParsedUrl, Yanked}; use crate::graph_ops::marker_reachability; use crate::pins::FilePins; @@ -572,7 +572,7 @@ impl ResolutionGraph { index: &InMemoryIndex, marker_env: &MarkerEnvironment, ) -> Result> { - use pep508_rs::{ + use uv_pep508::{ MarkerExpression, MarkerOperator, MarkerTree, MarkerValueString, MarkerValueVersion, }; @@ -787,7 +787,7 @@ impl std::fmt::Display for ConflictingDistributionError { } } -impl From for distribution_types::Resolution { +impl From for uv_distribution_types::Resolution { fn from(graph: ResolutionGraph) -> Self { Self::new( graph diff --git a/crates/uv-resolver/src/resolution/mod.rs b/crates/uv-resolver/src/resolution/mod.rs index df9e33f8e..0e553edfd 100644 --- a/crates/uv-resolver/src/resolution/mod.rs +++ b/crates/uv-resolver/src/resolution/mod.rs @@ -1,14 +1,14 @@ use std::fmt::Display; -use distribution_types::{ +use uv_distribution::Metadata; +use uv_distribution_types::{ BuiltDist, Dist, DistributionMetadata, IndexUrl, Name, ResolvedDist, SourceDist, VersionOrUrlRef, }; -use pep440_rs::Version; -use pep508_rs::MarkerTree; -use pypi_types::HashDigest; -use uv_distribution::Metadata; use uv_normalize::{ExtraName, GroupName, PackageName}; +use uv_pep440::Version; +use uv_pep508::MarkerTree; +use uv_pypi_types::HashDigest; pub use crate::resolution::display::{AnnotationStyle, DisplayResolutionGraph}; pub(crate) use crate::resolution::graph::ResolutionGraphNode; diff --git a/crates/uv-resolver/src/resolution/requirements_txt.rs b/crates/uv-resolver/src/resolution/requirements_txt.rs index 85c9c0cb4..860bec9f0 100644 --- a/crates/uv-resolver/src/resolution/requirements_txt.rs +++ b/crates/uv-resolver/src/resolution/requirements_txt.rs @@ -4,11 +4,11 @@ use std::path::Path; use itertools::Itertools; -use distribution_types::{DistributionMetadata, Name, ResolvedDist, Verbatim, VersionOrUrlRef}; -use pep440_rs::Version; -use pep508_rs::{split_scheme, MarkerTree, Scheme}; -use pypi_types::HashDigest; +use uv_distribution_types::{DistributionMetadata, Name, ResolvedDist, Verbatim, VersionOrUrlRef}; use uv_normalize::{ExtraName, PackageName}; +use uv_pep440::Version; +use uv_pep508::{split_scheme, MarkerTree, Scheme}; +use uv_pypi_types::HashDigest; use crate::{ requires_python::{RequiresPython, SimplifiedMarkerTree}, diff --git a/crates/uv-resolver/src/resolver/availability.rs b/crates/uv-resolver/src/resolver/availability.rs index 970c4ea1a..26c6a3e52 100644 --- a/crates/uv-resolver/src/resolver/availability.rs +++ b/crates/uv-resolver/src/resolver/availability.rs @@ -1,7 +1,7 @@ use std::fmt::{Display, Formatter}; -use distribution_types::IncompatibleDist; -use pep440_rs::Version; +use uv_distribution_types::IncompatibleDist; +use uv_pep440::Version; /// The reason why a package or a version cannot be used. #[derive(Debug, Clone, Eq, PartialEq)] diff --git a/crates/uv-resolver/src/resolver/batch_prefetch.rs b/crates/uv-resolver/src/resolver/batch_prefetch.rs index c23a9717b..7cf9684fd 100644 --- a/crates/uv-resolver/src/resolver/batch_prefetch.rs +++ b/crates/uv-resolver/src/resolver/batch_prefetch.rs @@ -6,8 +6,8 @@ use rustc_hash::FxHashMap; use tokio::sync::mpsc::Sender; use tracing::{debug, trace}; -use distribution_types::{CompatibleDist, DistributionMetadata, IndexCapabilities}; -use pep440_rs::Version; +use uv_distribution_types::{CompatibleDist, DistributionMetadata, IndexCapabilities}; +use uv_pep440::Version; use crate::candidate_selector::CandidateSelector; use crate::pubgrub::{PubGrubPackage, PubGrubPackageInner}; diff --git a/crates/uv-resolver/src/resolver/fork_map.rs b/crates/uv-resolver/src/resolver/fork_map.rs index 907c36b9b..47003267d 100644 --- a/crates/uv-resolver/src/resolver/fork_map.rs +++ b/crates/uv-resolver/src/resolver/fork_map.rs @@ -1,6 +1,6 @@ -use pep508_rs::{MarkerTree, PackageName}; -use pypi_types::Requirement; use rustc_hash::FxHashMap; +use uv_pep508::{MarkerTree, PackageName}; +use uv_pypi_types::Requirement; use crate::ResolverMarkers; diff --git a/crates/uv-resolver/src/resolver/index.rs b/crates/uv-resolver/src/resolver/index.rs index 24e52c477..9796c7769 100644 --- a/crates/uv-resolver/src/resolver/index.rs +++ b/crates/uv-resolver/src/resolver/index.rs @@ -1,10 +1,10 @@ use std::hash::BuildHasherDefault; use std::sync::Arc; -use distribution_types::VersionId; -use once_map::OnceMap; use rustc_hash::FxHasher; +use uv_distribution_types::VersionId; use uv_normalize::PackageName; +use uv_once_map::OnceMap; use crate::resolver::provider::{MetadataResponse, VersionsResponse}; diff --git a/crates/uv-resolver/src/resolver/locals.rs b/crates/uv-resolver/src/resolver/locals.rs index b4a2a2666..c570c9ad3 100644 --- a/crates/uv-resolver/src/resolver/locals.rs +++ b/crates/uv-resolver/src/resolver/locals.rs @@ -1,10 +1,10 @@ use std::str::FromStr; -use distribution_filename::{SourceDistFilename, WheelFilename}; -use distribution_types::RemoteSource; -use pep440_rs::{Operator, Version, VersionSpecifier, VersionSpecifierBuildError}; -use pep508_rs::PackageName; -use pypi_types::RequirementSource; +use uv_distribution_filename::{SourceDistFilename, WheelFilename}; +use uv_distribution_types::RemoteSource; +use uv_pep440::{Operator, Version, VersionSpecifier, VersionSpecifierBuildError}; +use uv_pep508::PackageName; +use uv_pypi_types::RequirementSource; use crate::resolver::ForkMap; use crate::{DependencyMode, Manifest, ResolverMarkers}; @@ -174,7 +174,7 @@ pub(crate) fn from_source(source: &RequirementSource) -> Option { None } }) - .filter(pep440_rs::Version::is_local), + .filter(uv_pep440::Version::is_local), RequirementSource::Git { .. } => None, RequirementSource::Path { install_path: path, .. @@ -192,7 +192,7 @@ pub(crate) fn from_source(source: &RequirementSource) -> Option { None } }) - .filter(pep440_rs::Version::is_local), + .filter(uv_pep440::Version::is_local), RequirementSource::Directory { .. } => None, } } @@ -204,10 +204,10 @@ mod tests { use anyhow::Result; use url::Url; - use pep440_rs::{Operator, Version, VersionSpecifier, VersionSpecifiers}; - use pep508_rs::VerbatimUrl; - use pypi_types::ParsedUrl; - use pypi_types::RequirementSource; + use uv_pep440::{Operator, Version, VersionSpecifier, VersionSpecifiers}; + use uv_pep508::VerbatimUrl; + use uv_pypi_types::ParsedUrl; + use uv_pypi_types::RequirementSource; use super::{from_source, Locals}; diff --git a/crates/uv-resolver/src/resolver/mod.rs b/crates/uv-resolver/src/resolver/mod.rs index 708e5405e..16a6ea914 100644 --- a/crates/uv-resolver/src/resolver/mod.rs +++ b/crates/uv-resolver/src/resolver/mod.rs @@ -20,23 +20,23 @@ use tokio::sync::oneshot; use tokio_stream::wrappers::ReceiverStream; use tracing::{debug, info, instrument, trace, warn, Level}; -use distribution_types::{ - BuiltDist, CompatibleDist, Dist, DistributionMetadata, IncompatibleDist, IncompatibleSource, - IncompatibleWheel, IndexCapabilities, IndexLocations, InstalledDist, PythonRequirementKind, - RemoteSource, ResolvedDist, ResolvedDistRef, SourceDist, VersionOrUrlRef, -}; pub(crate) use fork_map::{ForkMap, ForkSet}; use locals::Locals; -use pep440_rs::{Version, MIN_VERSION}; -use pep508_rs::MarkerTree; -use platform_tags::Tags; -use pypi_types::{Requirement, ResolutionMetadata, VerbatimParsedUrl}; pub use resolver_markers::ResolverMarkers; pub(crate) use urls::Urls; use uv_configuration::{Constraints, Overrides}; use uv_distribution::{ArchiveMetadata, DistributionDatabase}; +use uv_distribution_types::{ + BuiltDist, CompatibleDist, Dist, DistributionMetadata, IncompatibleDist, IncompatibleSource, + IncompatibleWheel, IndexCapabilities, IndexLocations, InstalledDist, PythonRequirementKind, + RemoteSource, ResolvedDist, ResolvedDistRef, SourceDist, VersionOrUrlRef, +}; use uv_git::GitResolver; use uv_normalize::{ExtraName, GroupName, PackageName}; +use uv_pep440::{Version, MIN_VERSION}; +use uv_pep508::MarkerTree; +use uv_platform_tags::Tags; +use uv_pypi_types::{Requirement, ResolutionMetadata, VerbatimParsedUrl}; use uv_types::{BuildContext, HashStrategy, InstalledPackagesProvider}; use uv_warnings::warn_user_once; diff --git a/crates/uv-resolver/src/resolver/provider.rs b/crates/uv-resolver/src/resolver/provider.rs index a247641ef..7823dffa1 100644 --- a/crates/uv-resolver/src/resolver/provider.rs +++ b/crates/uv-resolver/src/resolver/provider.rs @@ -1,10 +1,10 @@ use std::future::Future; -use distribution_types::Dist; -use platform_tags::Tags; use uv_configuration::BuildOptions; use uv_distribution::{ArchiveMetadata, DistributionDatabase}; +use uv_distribution_types::Dist; use uv_normalize::PackageName; +use uv_platform_tags::Tags; use uv_types::{BuildContext, HashStrategy}; use crate::flat_index::FlatIndex; @@ -35,7 +35,7 @@ pub enum MetadataResponse { /// The wheel metadata was not found. MissingMetadata, /// The wheel metadata was found, but could not be parsed. - InvalidMetadata(Box), + InvalidMetadata(Box), /// The wheel metadata was found, but the metadata was inconsistent. InconsistentMetadata(Box), /// The wheel has an invalid structure. diff --git a/crates/uv-resolver/src/resolver/reporter.rs b/crates/uv-resolver/src/resolver/reporter.rs index a15e09e46..3010ec638 100644 --- a/crates/uv-resolver/src/resolver/reporter.rs +++ b/crates/uv-resolver/src/resolver/reporter.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use url::Url; -use distribution_types::{BuildableSource, VersionOrUrlRef}; +use uv_distribution_types::{BuildableSource, VersionOrUrlRef}; use uv_normalize::PackageName; pub type BuildId = usize; diff --git a/crates/uv-resolver/src/resolver/resolver_markers.rs b/crates/uv-resolver/src/resolver/resolver_markers.rs index da38f0563..c3b63b0c5 100644 --- a/crates/uv-resolver/src/resolver/resolver_markers.rs +++ b/crates/uv-resolver/src/resolver/resolver_markers.rs @@ -1,7 +1,7 @@ use std::fmt::{Display, Formatter}; -use pep508_rs::{MarkerEnvironment, MarkerTree}; -use pypi_types::ResolverMarkerEnvironment; +use uv_pep508::{MarkerEnvironment, MarkerTree}; +use uv_pypi_types::ResolverMarkerEnvironment; #[derive(Debug, Clone)] /// Whether we're solving for a specific environment, universally or for a specific fork. diff --git a/crates/uv-resolver/src/resolver/urls.rs b/crates/uv-resolver/src/resolver/urls.rs index fe8f09040..38065e4ef 100644 --- a/crates/uv-resolver/src/resolver/urls.rs +++ b/crates/uv-resolver/src/resolver/urls.rs @@ -4,12 +4,12 @@ use rustc_hash::FxHashMap; use same_file::is_same_file; use tracing::debug; -use cache_key::CanonicalUrl; -use distribution_types::Verbatim; -use pep508_rs::VerbatimUrl; -use pypi_types::{ParsedDirectoryUrl, ParsedUrl, VerbatimParsedUrl}; +use uv_cache_key::CanonicalUrl; +use uv_distribution_types::Verbatim; use uv_git::GitResolver; use uv_normalize::PackageName; +use uv_pep508::VerbatimUrl; +use uv_pypi_types::{ParsedDirectoryUrl, ParsedUrl, VerbatimParsedUrl}; use crate::{DependencyMode, Manifest, ResolveError, ResolverMarkers}; diff --git a/crates/uv-resolver/src/version_map.rs b/crates/uv-resolver/src/version_map.rs index 1049ebe2f..c54b472df 100644 --- a/crates/uv-resolver/src/version_map.rs +++ b/crates/uv-resolver/src/version_map.rs @@ -3,17 +3,17 @@ use std::collections::btree_map::{BTreeMap, Entry}; use std::sync::OnceLock; use tracing::instrument; -use distribution_filename::{DistFilename, WheelFilename}; -use distribution_types::{ +use uv_client::{OwnedArchive, SimpleMetadata, VersionFiles}; +use uv_configuration::BuildOptions; +use uv_distribution_filename::{DistFilename, WheelFilename}; +use uv_distribution_types::{ HashComparison, IncompatibleSource, IncompatibleWheel, IndexUrl, PrioritizedDist, RegistryBuiltWheel, RegistrySourceDist, SourceDistCompatibility, WheelCompatibility, }; -use pep440_rs::Version; -use platform_tags::{IncompatibleTag, TagCompatibility, Tags}; -use pypi_types::{HashDigest, Yanked}; -use uv_client::{OwnedArchive, SimpleMetadata, VersionFiles}; -use uv_configuration::BuildOptions; use uv_normalize::PackageName; +use uv_pep440::Version; +use uv_platform_tags::{IncompatibleTag, TagCompatibility, Tags}; +use uv_pypi_types::{HashDigest, Yanked}; use uv_types::HashStrategy; use uv_warnings::warn_user_once; diff --git a/crates/uv-resolver/src/yanks.rs b/crates/uv-resolver/src/yanks.rs index 59f27cd18..0ffb1cac5 100644 --- a/crates/uv-resolver/src/yanks.rs +++ b/crates/uv-resolver/src/yanks.rs @@ -2,9 +2,9 @@ use std::sync::Arc; use rustc_hash::{FxHashMap, FxHashSet}; -use pep440_rs::Version; -use pypi_types::RequirementSource; use uv_normalize::PackageName; +use uv_pep440::Version; +use uv_pypi_types::RequirementSource; use crate::{DependencyMode, Manifest, ResolverMarkers}; @@ -31,7 +31,7 @@ impl AllowedYanks { }; if matches!( specifier.operator(), - pep440_rs::Operator::Equal | pep440_rs::Operator::ExactEqual + uv_pep440::Operator::Equal | uv_pep440::Operator::ExactEqual ) { allowed_yanks .entry(requirement.name.clone()) diff --git a/crates/uv-scripts/Cargo.toml b/crates/uv-scripts/Cargo.toml index cf2265d49..1a109dfcb 100644 --- a/crates/uv-scripts/Cargo.toml +++ b/crates/uv-scripts/Cargo.toml @@ -8,9 +8,9 @@ description = "Parse PEP 723-style Python scripts." workspace = true [dependencies] -pep440_rs = { workspace = true } -pep508_rs = { workspace = true } -pypi-types = { workspace = true } +uv-pep440 = { workspace = true } +uv-pep508 = { workspace = true } +uv-pypi-types = { workspace = true } uv-settings = { workspace = true } uv-workspace = { workspace = true } diff --git a/crates/uv-scripts/src/lib.rs b/crates/uv-scripts/src/lib.rs index 9baf174ac..c3e0d4b1c 100644 --- a/crates/uv-scripts/src/lib.rs +++ b/crates/uv-scripts/src/lib.rs @@ -8,9 +8,9 @@ use memchr::memmem::Finder; use serde::Deserialize; use thiserror::Error; -use pep440_rs::VersionSpecifiers; -use pep508_rs::PackageName; -use pypi_types::VerbatimParsedUrl; +use uv_pep440::VersionSpecifiers; +use uv_pep508::PackageName; +use uv_pypi_types::VerbatimParsedUrl; use uv_settings::{GlobalOptions, ResolverInstallerOptions}; use uv_workspace::pyproject::Sources; @@ -159,7 +159,7 @@ impl Pep723Script { #[derive(Debug, Deserialize)] #[serde(rename_all = "kebab-case")] pub struct Pep723Metadata { - pub dependencies: Option>>, + pub dependencies: Option>>, pub requires_python: Option, pub tool: Option, /// The raw unserialized document. diff --git a/crates/uv-settings/Cargo.toml b/crates/uv-settings/Cargo.toml index 1473eb0c7..220fd0082 100644 --- a/crates/uv-settings/Cargo.toml +++ b/crates/uv-settings/Cargo.toml @@ -13,16 +13,16 @@ license = { workspace = true } workspace = true [dependencies] -distribution-types = { workspace = true, features = ["schemars"] } -install-wheel-rs = { workspace = true, features = ["schemars", "clap"] } -pep508_rs = { workspace = true } -pypi-types = { workspace = true } uv-cache-info = { workspace = true, features = ["schemars"] } uv-configuration = { workspace = true, features = ["schemars", "clap"] } +uv-distribution-types = { workspace = true, features = ["schemars"] } uv-fs = { workspace = true } +uv-install-wheel = { workspace = true, features = ["schemars", "clap"] } uv-macros = { workspace = true } uv-normalize = { workspace = true, features = ["schemars"] } uv-options-metadata = { workspace = true } +uv-pep508 = { workspace = true } +uv-pypi-types = { workspace = true } uv-python = { workspace = true, features = ["schemars", "clap"] } uv-resolver = { workspace = true, features = ["schemars", "clap"] } uv-warnings = { workspace = true } diff --git a/crates/uv-settings/src/combine.rs b/crates/uv-settings/src/combine.rs index 32e7261e6..ece27d59c 100644 --- a/crates/uv-settings/src/combine.rs +++ b/crates/uv-settings/src/combine.rs @@ -2,12 +2,12 @@ use std::num::NonZeroUsize; use std::path::PathBuf; use url::Url; -use distribution_types::IndexUrl; use install_wheel_rs::linker::LinkMode; -use pypi_types::SupportedEnvironments; use uv_configuration::{ ConfigSettings, IndexStrategy, KeyringProviderType, TargetTriple, TrustedPublishing, }; +use uv_distribution_types::IndexUrl; +use uv_pypi_types::SupportedEnvironments; use uv_python::{PythonDownloads, PythonPreference, PythonVersion}; use uv_resolver::{AnnotationStyle, ExcludeNewer, PrereleaseMode, ResolutionMode}; diff --git a/crates/uv-settings/src/settings.rs b/crates/uv-settings/src/settings.rs index acd8fa5a9..32f9a8645 100644 --- a/crates/uv-settings/src/settings.rs +++ b/crates/uv-settings/src/settings.rs @@ -1,9 +1,6 @@ use std::{fmt::Debug, num::NonZeroUsize, path::PathBuf}; -use distribution_types::{FlatIndexLocation, IndexUrl, StaticMetadata}; use install_wheel_rs::linker::LinkMode; -use pep508_rs::Requirement; -use pypi_types::{SupportedEnvironments, VerbatimParsedUrl}; use serde::{Deserialize, Serialize}; use url::Url; use uv_cache_info::CacheKey; @@ -11,8 +8,11 @@ use uv_configuration::{ ConfigSettings, IndexStrategy, KeyringProviderType, PackageNameSpecifier, TargetTriple, TrustedHost, TrustedPublishing, }; +use uv_distribution_types::{FlatIndexLocation, IndexUrl, StaticMetadata}; use uv_macros::{CombineOptions, OptionsMetadata}; use uv_normalize::{ExtraName, PackageName}; +use uv_pep508::Requirement; +use uv_pypi_types::{SupportedEnvironments, VerbatimParsedUrl}; use uv_python::{PythonDownloads, PythonPreference, PythonVersion}; use uv_resolver::{AnnotationStyle, ExcludeNewer, PrereleaseMode, ResolutionMode}; diff --git a/crates/uv-tool/Cargo.toml b/crates/uv-tool/Cargo.toml index 6e0986f5b..10261c528 100644 --- a/crates/uv-tool/Cargo.toml +++ b/crates/uv-tool/Cargo.toml @@ -13,13 +13,13 @@ license = { workspace = true } workspace = true [dependencies] -install-wheel-rs = { workspace = true } -pep440_rs = { workspace = true } -pep508_rs = { workspace = true } -pypi-types = { workspace = true } uv-cache = { workspace = true } uv-fs = { workspace = true } +uv-install-wheel = { workspace = true } uv-installer = { workspace = true } +uv-pep440 = { workspace = true } +uv-pep508 = { workspace = true } +uv-pypi-types = { workspace = true } uv-python = { workspace = true } uv-settings = { workspace = true } uv-state = { workspace = true } diff --git a/crates/uv-tool/src/lib.rs b/crates/uv-tool/src/lib.rs index 86c7029cd..5059adb48 100644 --- a/crates/uv-tool/src/lib.rs +++ b/crates/uv-tool/src/lib.rs @@ -2,8 +2,8 @@ use core::fmt; use fs_err as fs; -use pep440_rs::Version; -use pep508_rs::{InvalidNameError, PackageName}; +use uv_pep440::Version; +use uv_pep508::{InvalidNameError, PackageName}; use std::io::{self, Write}; use std::path::{Path, PathBuf}; diff --git a/crates/uv-tool/src/tool.rs b/crates/uv-tool/src/tool.rs index 0eb47b763..ed79a4ca0 100644 --- a/crates/uv-tool/src/tool.rs +++ b/crates/uv-tool/src/tool.rs @@ -6,8 +6,8 @@ use toml_edit::Table; use toml_edit::Value; use toml_edit::{Array, Item}; -use pypi_types::{Requirement, VerbatimParsedUrl}; use uv_fs::PortablePath; +use uv_pypi_types::{Requirement, VerbatimParsedUrl}; use uv_settings::ToolOptions; /// A tool entry. @@ -41,7 +41,7 @@ enum RequirementWire { Requirement(Requirement), /// A PEP 508-compatible requirement. We no longer write these, but there might be receipts out /// there that still use them. - Deprecated(pep508_rs::Requirement), + Deprecated(uv_pep508::Requirement), } impl From for ToolWire { diff --git a/crates/uv-types/Cargo.toml b/crates/uv-types/Cargo.toml index 3ffaeedc6..6b47a31ce 100644 --- a/crates/uv-types/Cargo.toml +++ b/crates/uv-types/Cargo.toml @@ -13,16 +13,16 @@ license = { workspace = true } workspace = true [dependencies] -distribution-types = { workspace = true } -once-map = { workspace = true } -pep440_rs = { workspace = true } -pep508_rs = { workspace = true } -pypi-types = { workspace = true } uv-cache = { workspace = true } uv-configuration = { workspace = true } +uv-distribution-types = { workspace = true } uv-git = { workspace = true } -uv-python = { workspace = true } uv-normalize = { workspace = true } +uv-once-map = { workspace = true } +uv-pep440 = { workspace = true } +uv-pep508 = { workspace = true } +uv-pypi-types = { workspace = true } +uv-python = { workspace = true } anyhow = { workspace = true } rustc-hash = { workspace = true } diff --git a/crates/uv-types/src/builds.rs b/crates/uv-types/src/builds.rs index 5aec6fd37..552660e6c 100644 --- a/crates/uv-types/src/builds.rs +++ b/crates/uv-types/src/builds.rs @@ -1,4 +1,4 @@ -use pep508_rs::PackageName; +use uv_pep508::PackageName; use uv_python::PythonEnvironment; /// Whether to enforce build isolation when building source distributions. diff --git a/crates/uv-types/src/downloads.rs b/crates/uv-types/src/downloads.rs index 28807ee57..1d3acca44 100644 --- a/crates/uv-types/src/downloads.rs +++ b/crates/uv-types/src/downloads.rs @@ -1,5 +1,5 @@ -use distribution_types::{CachedDist, DistributionId}; -use once_map::OnceMap; +use uv_distribution_types::{CachedDist, DistributionId}; +use uv_once_map::OnceMap; #[derive(Default)] pub struct InFlight { diff --git a/crates/uv-types/src/hash.rs b/crates/uv-types/src/hash.rs index 39808a611..8696538f0 100644 --- a/crates/uv-types/src/hash.rs +++ b/crates/uv-types/src/hash.rs @@ -3,15 +3,15 @@ use std::str::FromStr; use std::sync::Arc; use url::Url; -use distribution_types::{ +use uv_configuration::HashCheckingMode; +use uv_distribution_types::{ DistributionMetadata, HashPolicy, Name, Resolution, UnresolvedRequirement, VersionId, }; -use pep440_rs::Version; -use pypi_types::{ +use uv_normalize::PackageName; +use uv_pep440::Version; +use uv_pypi_types::{ HashDigest, HashError, Hashes, Requirement, RequirementSource, ResolverMarkerEnvironment, }; -use uv_configuration::HashCheckingMode; -use uv_normalize::PackageName; #[derive(Debug, Default, Clone)] pub enum HashStrategy { @@ -305,7 +305,7 @@ impl HashStrategy { }; // Must be pinned to a specific version. - if *specifier.operator() != pep440_rs::Operator::Equal { + if *specifier.operator() != uv_pep440::Operator::Equal { return None; } diff --git a/crates/uv-types/src/requirements.rs b/crates/uv-types/src/requirements.rs index 21e4757f0..321e424fb 100644 --- a/crates/uv-types/src/requirements.rs +++ b/crates/uv-types/src/requirements.rs @@ -1,5 +1,5 @@ -use pypi_types::Requirement; use uv_normalize::ExtraName; +use uv_pypi_types::Requirement; /// A set of requirements as requested by a parent requirement. /// diff --git a/crates/uv-types/src/traits.rs b/crates/uv-types/src/traits.rs index 1caa4c121..0d0a6db73 100644 --- a/crates/uv-types/src/traits.rs +++ b/crates/uv-types/src/traits.rs @@ -3,15 +3,15 @@ use std::path::{Path, PathBuf}; use anyhow::Result; -use distribution_types::{ +use uv_cache::Cache; +use uv_configuration::{BuildKind, BuildOptions, BuildOutput, ConfigSettings, SourceStrategy}; +use uv_distribution_types::{ CachedDist, DependencyMetadata, IndexCapabilities, IndexLocations, InstalledDist, Resolution, SourceDist, }; -use pep508_rs::PackageName; -use pypi_types::Requirement; -use uv_cache::Cache; -use uv_configuration::{BuildKind, BuildOptions, BuildOutput, ConfigSettings, SourceStrategy}; use uv_git::GitResolver; +use uv_pep508::PackageName; +use uv_pypi_types::Requirement; use uv_python::PythonEnvironment; /// Avoids cyclic crate dependencies between resolver, installer and builder. diff --git a/crates/uv-virtualenv/Cargo.toml b/crates/uv-virtualenv/Cargo.toml index 7b8e2a969..fed03e0c9 100644 --- a/crates/uv-virtualenv/Cargo.toml +++ b/crates/uv-virtualenv/Cargo.toml @@ -17,9 +17,9 @@ license = { workspace = true } workspace = true [dependencies] -platform-tags = { workspace = true } -pypi-types = { workspace = true } uv-fs = { workspace = true } +uv-platform-tags = { workspace = true } +uv-pypi-types = { workspace = true } uv-python = { workspace = true } uv-version = { workspace = true } diff --git a/crates/uv-virtualenv/src/lib.rs b/crates/uv-virtualenv/src/lib.rs index 5116f152c..2dd164993 100644 --- a/crates/uv-virtualenv/src/lib.rs +++ b/crates/uv-virtualenv/src/lib.rs @@ -3,7 +3,7 @@ use std::path::Path; use thiserror::Error; -use platform_tags::PlatformError; +use uv_platform_tags::PlatformError; use uv_python::{Interpreter, PythonEnvironment}; mod virtualenv; diff --git a/crates/uv-virtualenv/src/virtualenv.rs b/crates/uv-virtualenv/src/virtualenv.rs index 16a0ef60a..d46839707 100644 --- a/crates/uv-virtualenv/src/virtualenv.rs +++ b/crates/uv-virtualenv/src/virtualenv.rs @@ -10,8 +10,8 @@ use fs_err::File; use itertools::Itertools; use tracing::debug; -use pypi_types::Scheme; use uv_fs::{cachedir, Simplified, CWD}; +use uv_pypi_types::Scheme; use uv_python::{Interpreter, VirtualEnvironment}; use uv_version::version; diff --git a/crates/uv-workspace/Cargo.toml b/crates/uv-workspace/Cargo.toml index ba6c1d0a4..fe6125ce2 100644 --- a/crates/uv-workspace/Cargo.toml +++ b/crates/uv-workspace/Cargo.toml @@ -13,15 +13,15 @@ license = { workspace = true } workspace = true [dependencies] -pep440_rs = { workspace = true } -pep508_rs = { workspace = true } -pypi-types = { workspace = true } uv-fs = { workspace = true, features = ["tokio", "schemars"] } uv-git = { workspace = true } uv-macros = { workspace = true } uv-normalize = { workspace = true } -uv-warnings = { workspace = true } uv-options-metadata = { workspace = true } +uv-pep440 = { workspace = true } +uv-pep508 = { workspace = true } +uv-pypi-types = { workspace = true } +uv-warnings = { workspace = true } either = { workspace = true } fs-err = { workspace = true } diff --git a/crates/uv-workspace/src/pyproject.rs b/crates/uv-workspace/src/pyproject.rs index 71c614bd9..9420934cf 100644 --- a/crates/uv-workspace/src/pyproject.rs +++ b/crates/uv-workspace/src/pyproject.rs @@ -16,13 +16,13 @@ use std::{collections::BTreeMap, mem}; use thiserror::Error; use url::Url; -use pep440_rs::{Version, VersionSpecifiers}; -use pep508_rs::MarkerTree; -use pypi_types::{RequirementSource, SupportedEnvironments, VerbatimParsedUrl}; use uv_fs::{relative_to, PortablePathBuf}; use uv_git::GitReference; use uv_macros::OptionsMetadata; use uv_normalize::{ExtraName, PackageName}; +use uv_pep440::{Version, VersionSpecifiers}; +use uv_pep508::MarkerTree; +use uv_pypi_types::{RequirementSource, SupportedEnvironments, VerbatimParsedUrl}; #[derive(Error, Debug)] pub enum PyprojectTomlError { @@ -201,7 +201,7 @@ pub struct ToolUv { dev-dependencies = ["ruff==0.5.0"] "# )] - pub dev_dependencies: Option>>, + pub dev_dependencies: Option>>, /// A list of supported environments against which to resolve dependencies. /// /// By default, uv will resolve for all possible environments during a `uv lock` operation. @@ -260,7 +260,7 @@ pub struct ToolUv { override-dependencies = ["werkzeug==2.3.0"] "# )] - pub override_dependencies: Option>>, + pub override_dependencies: Option>>, /// Constraints to apply when resolving the project's dependencies. /// /// Constraints are used to restrict the versions of dependencies that are selected during @@ -290,7 +290,7 @@ pub struct ToolUv { constraint-dependencies = ["grpcio<1.65"] "# )] - pub constraint_dependencies: Option>>, + pub constraint_dependencies: Option>>, } #[derive(Default, Debug, Clone, PartialEq, Eq)] @@ -540,8 +540,8 @@ pub enum Source { tag: Option, branch: Option, #[serde( - skip_serializing_if = "pep508_rs::marker::ser::is_empty", - serialize_with = "pep508_rs::marker::ser::serialize", + skip_serializing_if = "uv_pep508::marker::ser::is_empty", + serialize_with = "uv_pep508::marker::ser::serialize", default )] marker: MarkerTree, @@ -559,8 +559,8 @@ pub enum Source { /// not in the archive root. subdirectory: Option, #[serde( - skip_serializing_if = "pep508_rs::marker::ser::is_empty", - serialize_with = "pep508_rs::marker::ser::serialize", + skip_serializing_if = "uv_pep508::marker::ser::is_empty", + serialize_with = "uv_pep508::marker::ser::serialize", default )] marker: MarkerTree, @@ -573,8 +573,8 @@ pub enum Source { /// `false` by default. editable: Option, #[serde( - skip_serializing_if = "pep508_rs::marker::ser::is_empty", - serialize_with = "pep508_rs::marker::ser::serialize", + skip_serializing_if = "uv_pep508::marker::ser::is_empty", + serialize_with = "uv_pep508::marker::ser::serialize", default )] marker: MarkerTree, @@ -584,8 +584,8 @@ pub enum Source { // TODO(konstin): The string is more-or-less a placeholder index: String, #[serde( - skip_serializing_if = "pep508_rs::marker::ser::is_empty", - serialize_with = "pep508_rs::marker::ser::serialize", + skip_serializing_if = "uv_pep508::marker::ser::is_empty", + serialize_with = "uv_pep508::marker::ser::serialize", default )] marker: MarkerTree, @@ -596,8 +596,8 @@ pub enum Source { /// included as a workspace package. workspace: bool, #[serde( - skip_serializing_if = "pep508_rs::marker::ser::is_empty", - serialize_with = "pep508_rs::marker::ser::serialize", + skip_serializing_if = "uv_pep508::marker::ser::is_empty", + serialize_with = "uv_pep508::marker::ser::serialize", default )] marker: MarkerTree, @@ -625,8 +625,8 @@ impl<'de> Deserialize<'de> for Source { index: Option, workspace: Option, #[serde( - skip_serializing_if = "pep508_rs::marker::ser::is_empty", - serialize_with = "pep508_rs::marker::ser::serialize", + skip_serializing_if = "uv_pep508::marker::ser::is_empty", + serialize_with = "uv_pep508::marker::ser::serialize", default )] marker: MarkerTree, diff --git a/crates/uv-workspace/src/pyproject_mut.rs b/crates/uv-workspace/src/pyproject_mut.rs index de2952648..bc8a7cd6b 100644 --- a/crates/uv-workspace/src/pyproject_mut.rs +++ b/crates/uv-workspace/src/pyproject_mut.rs @@ -1,12 +1,12 @@ use itertools::Itertools; -use pep440_rs::{Version, VersionSpecifier, VersionSpecifiers}; -use pep508_rs::{ExtraName, MarkerTree, PackageName, Requirement, VersionOrUrl}; use std::path::Path; use std::str::FromStr; use std::{fmt, mem}; use thiserror::Error; use toml_edit::{Array, DocumentMut, Item, RawString, Table, TomlError, Value}; use uv_fs::PortablePath; +use uv_pep440::{Version, VersionSpecifier, VersionSpecifiers}; +use uv_pep508::{ExtraName, MarkerTree, PackageName, Requirement, VersionOrUrl}; use crate::pyproject::{DependencyType, Source}; diff --git a/crates/uv-workspace/src/workspace.rs b/crates/uv-workspace/src/workspace.rs index cfee93771..3b5b3f7c2 100644 --- a/crates/uv-workspace/src/workspace.rs +++ b/crates/uv-workspace/src/workspace.rs @@ -7,10 +7,10 @@ use std::collections::BTreeMap; use std::path::{Path, PathBuf}; use tracing::{debug, trace, warn}; -use pep508_rs::{MarkerTree, RequirementOrigin, VerbatimUrl}; -use pypi_types::{Requirement, RequirementSource, SupportedEnvironments, VerbatimParsedUrl}; use uv_fs::{Simplified, CWD}; use uv_normalize::{GroupName, PackageName, DEV_DEPENDENCIES}; +use uv_pep508::{MarkerTree, RequirementOrigin, VerbatimUrl}; +use uv_pypi_types::{Requirement, RequirementSource, SupportedEnvironments, VerbatimParsedUrl}; use uv_warnings::{warn_user, warn_user_once}; use crate::pyproject::{ @@ -1485,7 +1485,7 @@ impl<'env> InstallTarget<'env> { pub fn group( &self, name: &GroupName, - ) -> impl Iterator> { + ) -> impl Iterator> { match self { Self::Project(_) | Self::FrozenMember(..) => { // For projects, dev dependencies are attached to the members. diff --git a/crates/uv/Cargo.toml b/crates/uv/Cargo.toml index 00f22f288..eaf90c58f 100644 --- a/crates/uv/Cargo.toml +++ b/crates/uv/Cargo.toml @@ -14,28 +14,30 @@ default-run = "uv" workspace = true [dependencies] -cache-key = { workspace = true } -distribution-filename = { workspace = true } -distribution-types = { workspace = true } -install-wheel-rs = { workspace = true, default-features = false } -pep440_rs = { workspace = true } -pep508_rs = { workspace = true } -platform-tags = { workspace = true } -pypi-types = { workspace = true } uv-auth = { workspace = true } uv-cache = { workspace = true } uv-cache-info = { workspace = true } +uv-cache-key = { workspace = true } uv-cli = { workspace = true } uv-client = { workspace = true } uv-configuration = { workspace = true } uv-dispatch = { workspace = true } uv-distribution = { workspace = true } +uv-distribution-filename = { workspace = true } +uv-distribution-types = { workspace = true } uv-extract = { workspace = true } uv-fs = { workspace = true } uv-git = { workspace = true } +uv-install-wheel = { workspace = true, default-features = false } uv-installer = { workspace = true } uv-normalize = { workspace = true } +uv-pep440 = { workspace = true } +uv-pep508 = { workspace = true } +uv-performance-flate2-backend = { path = "../uv-performance-flate2-backend", optional = true } +uv-performance-memory-allocator = { path = "../uv-performance-memory-allocator", optional = true } +uv-platform-tags = { workspace = true } uv-publish = { workspace = true } +uv-pypi-types = { workspace = true } uv-python = { workspace = true, features = ["schemars"] } uv-requirements = { workspace = true } uv-resolver = { workspace = true } @@ -47,8 +49,6 @@ uv-types = { workspace = true } uv-virtualenv = { workspace = true } uv-warnings = { workspace = true } uv-workspace = { workspace = true } -uv-performance-memory-allocator = { path = "../uv-performance-memory-allocator", optional = true } -uv-performance-flate2-backend = { path = "../uv-performance-flate2-backend", optional = true } anstream = { workspace = true } anyhow = { workspace = true } diff --git a/crates/uv/src/commands/build.rs b/crates/uv/src/commands/build.rs index e4a8ae04b..e0602b1e2 100644 --- a/crates/uv/src/commands/build.rs +++ b/crates/uv/src/commands/build.rs @@ -5,10 +5,10 @@ use std::io::Write as _; use std::path::{Path, PathBuf}; use anyhow::Result; -use distribution_filename::SourceDistExtension; -use distribution_types::{DependencyMetadata, IndexLocations}; use install_wheel_rs::linker::LinkMode; use owo_colors::OwoColorize; +use uv_distribution_filename::SourceDistExtension; +use uv_distribution_types::{DependencyMetadata, IndexLocations}; use uv_auth::store_credentials_from_url; use uv_cache::Cache; diff --git a/crates/uv/src/commands/diagnostics.rs b/crates/uv/src/commands/diagnostics.rs index d6029e753..ce317a8d3 100644 --- a/crates/uv/src/commands/diagnostics.rs +++ b/crates/uv/src/commands/diagnostics.rs @@ -1,8 +1,8 @@ -use distribution_types::{Name, SourceDist}; use owo_colors::OwoColorize; use rustc_hash::FxHashMap; use std::str::FromStr; use std::sync::LazyLock; +use uv_distribution_types::{Name, SourceDist}; use uv_normalize::PackageName; /// Static map of common package name typos or misconfigurations to their correct package names. diff --git a/crates/uv/src/commands/mod.rs b/crates/uv/src/commands/mod.rs index 5af5e663d..572cda1b3 100644 --- a/crates/uv/src/commands/mod.rs +++ b/crates/uv/src/commands/mod.rs @@ -11,7 +11,6 @@ pub(crate) use build::build; pub(crate) use cache_clean::cache_clean; pub(crate) use cache_dir::cache_dir; pub(crate) use cache_prune::cache_prune; -use distribution_types::{IndexCapabilities, InstalledMetadata}; pub(crate) use help::help; pub(crate) use pip::check::pip_check; pub(crate) use pip::compile::pip_compile; @@ -48,6 +47,7 @@ pub(crate) use tool::uninstall::uninstall as tool_uninstall; pub(crate) use tool::update_shell::update_shell as tool_update_shell; pub(crate) use tool::upgrade::upgrade as tool_upgrade; use uv_cache::Cache; +use uv_distribution_types::{IndexCapabilities, InstalledMetadata}; use uv_fs::Simplified; use uv_git::GitResolver; use uv_installer::compile_tree; diff --git a/crates/uv/src/commands/pip/check.rs b/crates/uv/src/commands/pip/check.rs index 28a7edb21..9ba2b297e 100644 --- a/crates/uv/src/commands/pip/check.rs +++ b/crates/uv/src/commands/pip/check.rs @@ -5,8 +5,8 @@ use anyhow::Result; use owo_colors::OwoColorize; use tracing::debug; -use distribution_types::{Diagnostic, InstalledDist}; use uv_cache::Cache; +use uv_distribution_types::{Diagnostic, InstalledDist}; use uv_fs::Simplified; use uv_installer::{SitePackages, SitePackagesDiagnostic}; use uv_python::{EnvironmentPreference, PythonEnvironment, PythonRequest}; diff --git a/crates/uv/src/commands/pip/compile.rs b/crates/uv/src/commands/pip/compile.rs index d491447d5..00bc2f522 100644 --- a/crates/uv/src/commands/pip/compile.rs +++ b/crates/uv/src/commands/pip/compile.rs @@ -6,12 +6,7 @@ use itertools::Itertools; use owo_colors::OwoColorize; use tracing::debug; -use distribution_types::{ - DependencyMetadata, IndexCapabilities, IndexLocations, NameRequirementSpecification, - UnresolvedRequirementSpecification, Verbatim, -}; use install_wheel_rs::linker::LinkMode; -use pypi_types::{Requirement, SupportedEnvironments}; use uv_auth::store_credentials_from_url; use uv_cache::Cache; use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder}; @@ -21,9 +16,14 @@ use uv_configuration::{ }; use uv_configuration::{KeyringProviderType, TargetTriple}; use uv_dispatch::BuildDispatch; +use uv_distribution_types::{ + DependencyMetadata, IndexCapabilities, IndexLocations, NameRequirementSpecification, + UnresolvedRequirementSpecification, Verbatim, +}; use uv_fs::Simplified; use uv_git::GitResolver; use uv_normalize::PackageName; +use uv_pypi_types::{Requirement, SupportedEnvironments}; use uv_python::{ EnvironmentPreference, PythonEnvironment, PythonInstallation, PythonPreference, PythonRequest, PythonVersion, VersionRequest, diff --git a/crates/uv/src/commands/pip/freeze.rs b/crates/uv/src/commands/pip/freeze.rs index 97fce7cc3..ea2dd6277 100644 --- a/crates/uv/src/commands/pip/freeze.rs +++ b/crates/uv/src/commands/pip/freeze.rs @@ -5,8 +5,8 @@ use itertools::Itertools; use owo_colors::OwoColorize; use tracing::debug; -use distribution_types::{Diagnostic, InstalledDist, Name}; use uv_cache::Cache; +use uv_distribution_types::{Diagnostic, InstalledDist, Name}; use uv_fs::Simplified; use uv_installer::SitePackages; use uv_python::{EnvironmentPreference, PythonEnvironment, PythonRequest}; diff --git a/crates/uv/src/commands/pip/install.rs b/crates/uv/src/commands/pip/install.rs index 2e0d683d7..d5a7eba83 100644 --- a/crates/uv/src/commands/pip/install.rs +++ b/crates/uv/src/commands/pip/install.rs @@ -4,13 +4,7 @@ use itertools::Itertools; use owo_colors::OwoColorize; use tracing::{debug, enabled, Level}; -use distribution_types::{ - DependencyMetadata, IndexLocations, NameRequirementSpecification, Resolution, - UnresolvedRequirementSpecification, -}; use install_wheel_rs::linker::LinkMode; -use pep508_rs::PackageName; -use pypi_types::Requirement; use uv_auth::store_credentials_from_url; use uv_cache::Cache; use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder}; @@ -20,8 +14,14 @@ use uv_configuration::{ }; use uv_configuration::{KeyringProviderType, TargetTriple}; use uv_dispatch::BuildDispatch; +use uv_distribution_types::{ + DependencyMetadata, IndexLocations, NameRequirementSpecification, Resolution, + UnresolvedRequirementSpecification, +}; use uv_fs::Simplified; use uv_installer::{SatisfiesResult, SitePackages}; +use uv_pep508::PackageName; +use uv_pypi_types::Requirement; use uv_python::{ EnvironmentPreference, Prefix, PythonEnvironment, PythonRequest, PythonVersion, Target, }; diff --git a/crates/uv/src/commands/pip/list.rs b/crates/uv/src/commands/pip/list.rs index e10c47062..3fd915d99 100644 --- a/crates/uv/src/commands/pip/list.rs +++ b/crates/uv/src/commands/pip/list.rs @@ -8,9 +8,9 @@ use serde::Serialize; use tracing::debug; use unicode_width::UnicodeWidthStr; -use distribution_types::{Diagnostic, InstalledDist, Name}; use uv_cache::Cache; use uv_cli::ListFormat; +use uv_distribution_types::{Diagnostic, InstalledDist, Name}; use uv_fs::Simplified; use uv_installer::SitePackages; use uv_normalize::PackageName; diff --git a/crates/uv/src/commands/pip/loggers.rs b/crates/uv/src/commands/pip/loggers.rs index 49939b534..ee88728ad 100644 --- a/crates/uv/src/commands/pip/loggers.rs +++ b/crates/uv/src/commands/pip/loggers.rs @@ -6,9 +6,9 @@ use itertools::Itertools; use owo_colors::OwoColorize; use rustc_hash::{FxBuildHasher, FxHashMap}; -use distribution_types::{InstalledMetadata, Name}; -use pep440_rs::Version; +use uv_distribution_types::{InstalledMetadata, Name}; use uv_normalize::PackageName; +use uv_pep440::Version; use crate::commands::pip::operations::Changelog; use crate::commands::{elapsed, ChangeEvent, ChangeEventKind}; diff --git a/crates/uv/src/commands/pip/mod.rs b/crates/uv/src/commands/pip/mod.rs index d2a2fce00..99d1f7da8 100644 --- a/crates/uv/src/commands/pip/mod.rs +++ b/crates/uv/src/commands/pip/mod.rs @@ -1,8 +1,8 @@ use std::borrow::Cow; -use platform_tags::{Tags, TagsError}; -use pypi_types::ResolverMarkerEnvironment; use uv_configuration::TargetTriple; +use uv_platform_tags::{Tags, TagsError}; +use uv_pypi_types::ResolverMarkerEnvironment; use uv_python::{Interpreter, PythonVersion}; pub(crate) mod check; diff --git a/crates/uv/src/commands/pip/operations.rs b/crates/uv/src/commands/pip/operations.rs index 15c083e36..d3a4213e9 100644 --- a/crates/uv/src/commands/pip/operations.rs +++ b/crates/uv/src/commands/pip/operations.rs @@ -8,16 +8,7 @@ use std::fmt::Write; use std::path::PathBuf; use tracing::debug; -use distribution_types::{ - CachedDist, Diagnostic, InstalledDist, LocalDist, NameRequirementSpecification, - ResolutionDiagnostic, UnresolvedRequirement, UnresolvedRequirementSpecification, -}; -use distribution_types::{ - DistributionMetadata, IndexLocations, InstalledMetadata, Name, Resolution, -}; use install_wheel_rs::linker::LinkMode; -use platform_tags::Tags; -use pypi_types::ResolverMarkerEnvironment; use uv_cache::Cache; use uv_client::{BaseClientBuilder, RegistryClient}; use uv_configuration::{ @@ -26,9 +17,18 @@ use uv_configuration::{ }; use uv_dispatch::BuildDispatch; use uv_distribution::DistributionDatabase; +use uv_distribution_types::{ + CachedDist, Diagnostic, InstalledDist, LocalDist, NameRequirementSpecification, + ResolutionDiagnostic, UnresolvedRequirement, UnresolvedRequirementSpecification, +}; +use uv_distribution_types::{ + DistributionMetadata, IndexLocations, InstalledMetadata, Name, Resolution, +}; use uv_fs::Simplified; use uv_installer::{Plan, Planner, Preparer, SitePackages}; use uv_normalize::{GroupName, PackageName}; +use uv_platform_tags::Tags; +use uv_pypi_types::ResolverMarkerEnvironment; use uv_python::PythonEnvironment; use uv_requirements::{ LookaheadResolver, NamedRequirementsResolver, RequirementsSource, RequirementsSpecification, diff --git a/crates/uv/src/commands/pip/show.rs b/crates/uv/src/commands/pip/show.rs index f7f62307c..e519619a1 100644 --- a/crates/uv/src/commands/pip/show.rs +++ b/crates/uv/src/commands/pip/show.rs @@ -6,8 +6,8 @@ use owo_colors::OwoColorize; use rustc_hash::FxHashMap; use tracing::debug; -use distribution_types::{Diagnostic, Name}; use uv_cache::Cache; +use uv_distribution_types::{Diagnostic, Name}; use uv_fs::Simplified; use uv_installer::SitePackages; use uv_normalize::PackageName; diff --git a/crates/uv/src/commands/pip/sync.rs b/crates/uv/src/commands/pip/sync.rs index 921058ba2..ce2ed0915 100644 --- a/crates/uv/src/commands/pip/sync.rs +++ b/crates/uv/src/commands/pip/sync.rs @@ -4,9 +4,7 @@ use anyhow::Result; use owo_colors::OwoColorize; use tracing::debug; -use distribution_types::{DependencyMetadata, IndexLocations, Resolution}; use install_wheel_rs::linker::LinkMode; -use pep508_rs::PackageName; use uv_auth::store_credentials_from_url; use uv_cache::Cache; use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder}; @@ -16,8 +14,10 @@ use uv_configuration::{ }; use uv_configuration::{KeyringProviderType, TargetTriple}; use uv_dispatch::BuildDispatch; +use uv_distribution_types::{DependencyMetadata, IndexLocations, Resolution}; use uv_fs::Simplified; use uv_installer::SitePackages; +use uv_pep508::PackageName; use uv_python::{ EnvironmentPreference, Prefix, PythonEnvironment, PythonRequest, PythonVersion, Target, }; diff --git a/crates/uv/src/commands/pip/tree.rs b/crates/uv/src/commands/pip/tree.rs index d106b18ac..4f64860ea 100644 --- a/crates/uv/src/commands/pip/tree.rs +++ b/crates/uv/src/commands/pip/tree.rs @@ -6,13 +6,13 @@ use owo_colors::OwoColorize; use rustc_hash::{FxHashMap, FxHashSet}; use tracing::debug; -use distribution_types::{Diagnostic, Name}; -use pypi_types::{RequirementSource, ResolverMarkerEnvironment}; use uv_cache::Cache; use uv_distribution::Metadata; +use uv_distribution_types::{Diagnostic, Name}; use uv_fs::Simplified; use uv_installer::SitePackages; use uv_normalize::PackageName; +use uv_pypi_types::{RequirementSource, ResolverMarkerEnvironment}; use uv_python::EnvironmentPreference; use uv_python::PythonEnvironment; use uv_python::PythonRequest; diff --git a/crates/uv/src/commands/pip/uninstall.rs b/crates/uv/src/commands/pip/uninstall.rs index 37243faba..f39bcdc49 100644 --- a/crates/uv/src/commands/pip/uninstall.rs +++ b/crates/uv/src/commands/pip/uninstall.rs @@ -5,14 +5,14 @@ use itertools::{Either, Itertools}; use owo_colors::OwoColorize; use tracing::debug; -use distribution_types::{InstalledMetadata, Name, UnresolvedRequirement}; -use pep508_rs::UnnamedRequirement; -use pypi_types::Requirement; -use pypi_types::VerbatimParsedUrl; use uv_cache::Cache; use uv_client::{BaseClientBuilder, Connectivity}; use uv_configuration::{KeyringProviderType, TrustedHost}; +use uv_distribution_types::{InstalledMetadata, Name, UnresolvedRequirement}; use uv_fs::Simplified; +use uv_pep508::UnnamedRequirement; +use uv_pypi_types::Requirement; +use uv_pypi_types::VerbatimParsedUrl; use uv_python::EnvironmentPreference; use uv_python::PythonRequest; use uv_python::{Prefix, PythonEnvironment, Target}; diff --git a/crates/uv/src/commands/project/add.rs b/crates/uv/src/commands/project/add.rs index 194cb8e26..be0d628d5 100644 --- a/crates/uv/src/commands/project/add.rs +++ b/crates/uv/src/commands/project/add.rs @@ -7,12 +7,9 @@ use std::fmt::Write; use std::path::{Path, PathBuf}; use tracing::debug; -use cache_key::RepositoryUrl; -use distribution_types::UnresolvedRequirement; -use pep508_rs::{ExtraName, Requirement, UnnamedRequirement, VersionOrUrl}; -use pypi_types::{redact_git_credentials, ParsedUrl, RequirementSource, VerbatimParsedUrl}; use uv_auth::{store_credentials_from_url, Credentials}; use uv_cache::Cache; +use uv_cache_key::RepositoryUrl; use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder}; use uv_configuration::{ Concurrency, Constraints, DevMode, EditableMode, ExtrasSpecification, InstallOptions, @@ -20,9 +17,12 @@ use uv_configuration::{ }; use uv_dispatch::BuildDispatch; use uv_distribution::DistributionDatabase; +use uv_distribution_types::UnresolvedRequirement; use uv_fs::Simplified; use uv_git::{GitReference, GIT_STORE}; use uv_normalize::PackageName; +use uv_pep508::{ExtraName, Requirement, UnnamedRequirement, VersionOrUrl}; +use uv_pypi_types::{redact_git_credentials, ParsedUrl, RequirementSource, VerbatimParsedUrl}; use uv_python::{ EnvironmentPreference, Interpreter, PythonDownloads, PythonEnvironment, PythonInstallation, PythonPreference, PythonRequest, PythonVersionFile, VersionRequest, @@ -377,7 +377,7 @@ pub(crate) async fn add( let (requirement, source) = match target { Target::Script(_, _) | Target::Project(_, _) if raw_sources => { - (pep508_rs::Requirement::from(requirement), None) + (uv_pep508::Requirement::from(requirement), None) } Target::Script(ref script, _) => { let script_path = std::path::absolute(&script.path)?; @@ -803,7 +803,7 @@ fn augment_requirement( ) -> UnresolvedRequirement { match requirement { UnresolvedRequirement::Named(requirement) => { - UnresolvedRequirement::Named(pypi_types::Requirement { + UnresolvedRequirement::Named(uv_pypi_types::Requirement { source: match requirement.source { RequirementSource::Git { repository, @@ -863,7 +863,7 @@ fn augment_requirement( /// Resolves the source for a requirement and processes it into a PEP 508 compliant format. fn resolve_requirement( - requirement: pypi_types::Requirement, + requirement: uv_pypi_types::Requirement, workspace: bool, editable: Option, rev: Option, @@ -894,7 +894,7 @@ fn resolve_requirement( }; // Ignore the PEP 508 source by clearing the URL. - let mut processed_requirement = pep508_rs::Requirement::from(requirement); + let mut processed_requirement = uv_pep508::Requirement::from(requirement); processed_requirement.clear_url(); Ok((processed_requirement, source)) diff --git a/crates/uv/src/commands/project/environment.rs b/crates/uv/src/commands/project/environment.rs index 4f3417f0b..c49711576 100644 --- a/crates/uv/src/commands/project/environment.rs +++ b/crates/uv/src/commands/project/environment.rs @@ -7,11 +7,11 @@ use crate::commands::project::{ use crate::commands::SharedState; use crate::printer::Printer; use crate::settings::ResolverInstallerSettings; -use cache_key::{cache_digest, hash_digest}; -use distribution_types::Resolution; use uv_cache::{Cache, CacheBucket}; +use uv_cache_key::{cache_digest, hash_digest}; use uv_client::Connectivity; use uv_configuration::Concurrency; +use uv_distribution_types::Resolution; use uv_python::{Interpreter, PythonEnvironment}; /// A [`PythonEnvironment`] stored in the cache. diff --git a/crates/uv/src/commands/project/init.rs b/crates/uv/src/commands/project/init.rs index 26fc59f8c..b4a5ed0ee 100644 --- a/crates/uv/src/commands/project/init.rs +++ b/crates/uv/src/commands/project/init.rs @@ -4,13 +4,13 @@ use std::path::{Path, PathBuf}; use anyhow::{anyhow, Context, Result}; use owo_colors::OwoColorize; -use pep440_rs::Version; -use pep508_rs::PackageName; use tracing::{debug, warn}; use uv_cache::Cache; use uv_client::{BaseClientBuilder, Connectivity}; use uv_configuration::{VersionControlError, VersionControlSystem}; use uv_fs::{Simplified, CWD}; +use uv_pep440::Version; +use uv_pep508::PackageName; use uv_python::{ EnvironmentPreference, PythonDownloads, PythonInstallation, PythonPreference, PythonRequest, PythonVersionFile, VersionRequest, diff --git a/crates/uv/src/commands/project/lock.rs b/crates/uv/src/commands/project/lock.rs index 2ff0557dc..c27724b67 100644 --- a/crates/uv/src/commands/project/lock.rs +++ b/crates/uv/src/commands/project/lock.rs @@ -8,12 +8,6 @@ use std::fmt::Write; use std::path::Path; use tracing::debug; -use distribution_types::{ - DependencyMetadata, IndexLocations, NameRequirementSpecification, - UnresolvedRequirementSpecification, -}; -use pep440_rs::Version; -use pypi_types::{Requirement, SupportedEnvironments}; use uv_auth::store_credentials_from_url; use uv_cache::Cache; use uv_client::{Connectivity, FlatIndexClient, RegistryClientBuilder}; @@ -22,8 +16,14 @@ use uv_configuration::{ }; use uv_dispatch::BuildDispatch; use uv_distribution::DistributionDatabase; +use uv_distribution_types::{ + DependencyMetadata, IndexLocations, NameRequirementSpecification, + UnresolvedRequirementSpecification, +}; use uv_git::ResolvedRepositoryReference; use uv_normalize::{PackageName, DEV_DEPENDENCIES}; +use uv_pep440::Version; +use uv_pypi_types::{Requirement, SupportedEnvironments}; use uv_python::{Interpreter, PythonDownloads, PythonEnvironment, PythonPreference, PythonRequest}; use uv_requirements::upgrade::{read_lock_requirements, LockedRequirements}; use uv_resolver::{ diff --git a/crates/uv/src/commands/project/mod.rs b/crates/uv/src/commands/project/mod.rs index 7bd6deaed..3a0bb9b9d 100644 --- a/crates/uv/src/commands/project/mod.rs +++ b/crates/uv/src/commands/project/mod.rs @@ -5,20 +5,22 @@ use itertools::Itertools; use owo_colors::OwoColorize; use tracing::debug; -use distribution_types::{Resolution, UnresolvedRequirement, UnresolvedRequirementSpecification}; -use pep440_rs::{Version, VersionSpecifiers}; -use pep508_rs::MarkerTreeContents; -use pypi_types::Requirement; use uv_auth::store_credentials_from_url; use uv_cache::Cache; use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder}; use uv_configuration::{Concurrency, Constraints, ExtrasSpecification, Reinstall, Upgrade}; use uv_dispatch::BuildDispatch; use uv_distribution::DistributionDatabase; +use uv_distribution_types::{ + Resolution, UnresolvedRequirement, UnresolvedRequirementSpecification, +}; use uv_fs::Simplified; use uv_git::ResolvedRepositoryReference; use uv_installer::{SatisfiesResult, SitePackages}; use uv_normalize::PackageName; +use uv_pep440::{Version, VersionSpecifiers}; +use uv_pep508::MarkerTreeContents; +use uv_pypi_types::Requirement; use uv_python::{ EnvironmentPreference, Interpreter, InvalidEnvironmentKind, PythonDownloads, PythonEnvironment, PythonInstallation, PythonPreference, PythonRequest, PythonVersionFile, VersionRequest, @@ -142,7 +144,7 @@ pub(crate) enum ProjectError { HashStrategy(#[from] uv_types::HashStrategyError), #[error(transparent)] - Tags(#[from] platform_tags::TagsError), + Tags(#[from] uv_platform_tags::TagsError), #[error(transparent)] FlatIndex(#[from] uv_client::FlatIndexError), diff --git a/crates/uv/src/commands/project/remove.rs b/crates/uv/src/commands/project/remove.rs index 6b9c203c7..fd0155c77 100644 --- a/crates/uv/src/commands/project/remove.rs +++ b/crates/uv/src/commands/project/remove.rs @@ -3,11 +3,11 @@ use std::fmt::Write; use std::path::Path; use owo_colors::OwoColorize; -use pep508_rs::PackageName; use uv_cache::Cache; use uv_client::Connectivity; use uv_configuration::{Concurrency, DevMode, EditableMode, ExtrasSpecification, InstallOptions}; use uv_fs::Simplified; +use uv_pep508::PackageName; use uv_python::{PythonDownloads, PythonPreference, PythonRequest}; use uv_scripts::Pep723Script; use uv_warnings::{warn_user, warn_user_once}; diff --git a/crates/uv/src/commands/project/sync.rs b/crates/uv/src/commands/project/sync.rs index 3d072a181..8a768aabe 100644 --- a/crates/uv/src/commands/project/sync.rs +++ b/crates/uv/src/commands/project/sync.rs @@ -7,12 +7,7 @@ use crate::commands::{diagnostics, pip, project, ExitStatus}; use crate::printer::Printer; use crate::settings::{InstallerSettingsRef, ResolverInstallerSettings}; use anyhow::{Context, Result}; -use distribution_types::{DirectorySourceDist, Dist, ResolvedDist, SourceDist}; use itertools::Itertools; -use pep508_rs::{MarkerTree, Requirement, VersionOrUrl}; -use pypi_types::{ - LenientRequirement, ParsedArchiveUrl, ParsedGitUrl, ParsedUrl, VerbatimParsedUrl, -}; use std::borrow::Cow; use std::path::Path; use std::str::FromStr; @@ -23,8 +18,13 @@ use uv_configuration::{ HashCheckingMode, InstallOptions, }; use uv_dispatch::BuildDispatch; +use uv_distribution_types::{DirectorySourceDist, Dist, ResolvedDist, SourceDist}; use uv_installer::SitePackages; use uv_normalize::{PackageName, DEV_DEPENDENCIES}; +use uv_pep508::{MarkerTree, Requirement, VersionOrUrl}; +use uv_pypi_types::{ + LenientRequirement, ParsedArchiveUrl, ParsedGitUrl, ParsedUrl, VerbatimParsedUrl, +}; use uv_python::{PythonDownloads, PythonEnvironment, PythonPreference, PythonRequest}; use uv_resolver::{FlatIndex, Lock}; use uv_types::{BuildIsolation, HashStrategy}; @@ -366,8 +366,8 @@ pub(super) async fn do_sync( /// Filter out any virtual workspace members. fn apply_no_virtual_project( - resolution: distribution_types::Resolution, -) -> distribution_types::Resolution { + resolution: uv_distribution_types::Resolution, +) -> uv_distribution_types::Resolution { resolution.filter(|dist| { let ResolvedDist::Installable(dist) = dist else { return true; @@ -387,9 +387,9 @@ fn apply_no_virtual_project( /// If necessary, convert any editable requirements to non-editable. fn apply_editable_mode( - resolution: distribution_types::Resolution, + resolution: uv_distribution_types::Resolution, editable: EditableMode, -) -> distribution_types::Resolution { +) -> uv_distribution_types::Resolution { match editable { // No modifications are necessary for editable mode; retain any editable distributions. EditableMode::Editable => resolution, diff --git a/crates/uv/src/commands/project/tree.rs b/crates/uv/src/commands/project/tree.rs index b2a2d1e94..63e9f2768 100644 --- a/crates/uv/src/commands/project/tree.rs +++ b/crates/uv/src/commands/project/tree.rs @@ -2,10 +2,10 @@ use anyhow::Result; use std::fmt::Write; use std::path::Path; -use pep508_rs::PackageName; use uv_cache::Cache; use uv_client::Connectivity; use uv_configuration::{Concurrency, TargetTriple}; +use uv_pep508::PackageName; use uv_python::{PythonDownloads, PythonPreference, PythonRequest, PythonVersion}; use uv_resolver::TreeDisplay; use uv_workspace::{DiscoveryOptions, Workspace}; diff --git a/crates/uv/src/commands/python/pin.rs b/crates/uv/src/commands/python/pin.rs index f1de8471e..2e03dd5e5 100644 --- a/crates/uv/src/commands/python/pin.rs +++ b/crates/uv/src/commands/python/pin.rs @@ -155,7 +155,7 @@ pub(crate) async fn pin( Ok(ExitStatus::Success) } -fn pep440_version_from_request(request: &PythonRequest) -> Option { +fn pep440_version_from_request(request: &PythonRequest) -> Option { let version_request = match request { PythonRequest::Version(ref version) | PythonRequest::ImplementationVersion(_, ref version) => version, @@ -170,7 +170,7 @@ fn pep440_version_from_request(request: &PythonRequest) -> Option { request: &'a PythonRequest, - version: &'a pep440_rs::Version, + version: &'a uv_pep440::Version, resolved: bool, existing: bool, } diff --git a/crates/uv/src/commands/reporters.rs b/crates/uv/src/commands/reporters.rs index d81880aea..ea8dca37d 100644 --- a/crates/uv/src/commands/reporters.rs +++ b/crates/uv/src/commands/reporters.rs @@ -7,7 +7,7 @@ use owo_colors::OwoColorize; use rustc_hash::FxHashMap; use url::Url; -use distribution_types::{ +use uv_distribution_types::{ BuildableSource, CachedDist, DistributionMetadata, Name, SourceDist, VersionOrUrlRef, }; use uv_normalize::PackageName; diff --git a/crates/uv/src/commands/tool/common.rs b/crates/uv/src/commands/tool/common.rs index d6b53c8e7..82ce665a4 100644 --- a/crates/uv/src/commands/tool/common.rs +++ b/crates/uv/src/commands/tool/common.rs @@ -6,13 +6,13 @@ use itertools::Itertools; use owo_colors::OwoColorize; use tracing::{debug, warn}; -use distribution_types::{InstalledDist, Name}; -use pep508_rs::PackageName; -use pypi_types::Requirement; +use uv_distribution_types::{InstalledDist, Name}; #[cfg(unix)] use uv_fs::replace_symlink; use uv_fs::Simplified; use uv_installer::SitePackages; +use uv_pep508::PackageName; +use uv_pypi_types::Requirement; use uv_python::PythonEnvironment; use uv_settings::ToolOptions; use uv_shell::Shell; diff --git a/crates/uv/src/commands/tool/install.rs b/crates/uv/src/commands/tool/install.rs index 1723cb869..321f952cf 100644 --- a/crates/uv/src/commands/tool/install.rs +++ b/crates/uv/src/commands/tool/install.rs @@ -2,17 +2,17 @@ use std::fmt::Write; use std::str::FromStr; use anyhow::{bail, Result}; -use distribution_types::UnresolvedRequirementSpecification; use owo_colors::OwoColorize; -use pep440_rs::{VersionSpecifier, VersionSpecifiers}; -use pep508_rs::MarkerTree; -use pypi_types::{Requirement, RequirementSource}; use tracing::trace; use uv_cache::{Cache, Refresh}; use uv_cache_info::Timestamp; use uv_client::{BaseClientBuilder, Connectivity}; use uv_configuration::{Concurrency, Upgrade}; +use uv_distribution_types::UnresolvedRequirementSpecification; use uv_normalize::PackageName; +use uv_pep440::{VersionSpecifier, VersionSpecifiers}; +use uv_pep508::MarkerTree; +use uv_pypi_types::{Requirement, RequirementSource}; use uv_python::{ EnvironmentPreference, PythonDownloads, PythonInstallation, PythonPreference, PythonRequest, }; diff --git a/crates/uv/src/commands/tool/mod.rs b/crates/uv/src/commands/tool/mod.rs index b725b0ae3..ee07609dc 100644 --- a/crates/uv/src/commands/tool/mod.rs +++ b/crates/uv/src/commands/tool/mod.rs @@ -2,8 +2,8 @@ use std::str::FromStr; use tracing::debug; -use pep440_rs::Version; use uv_normalize::PackageName; +use uv_pep440::Version; mod common; pub(crate) mod dir; diff --git a/crates/uv/src/commands/tool/run.rs b/crates/uv/src/commands/tool/run.rs index 94bf96628..fa5d9e9c7 100644 --- a/crates/uv/src/commands/tool/run.rs +++ b/crates/uv/src/commands/tool/run.rs @@ -10,17 +10,17 @@ use owo_colors::OwoColorize; use tokio::process::Command; use tracing::{debug, warn}; -use distribution_types::{Name, UnresolvedRequirementSpecification}; -use pep440_rs::{VersionSpecifier, VersionSpecifiers}; -use pep508_rs::MarkerTree; -use pypi_types::{Requirement, RequirementSource}; use uv_cache::{Cache, Refresh}; use uv_cache_info::Timestamp; use uv_cli::ExternalCommand; use uv_client::{BaseClientBuilder, Connectivity}; use uv_configuration::Concurrency; +use uv_distribution_types::{Name, UnresolvedRequirementSpecification}; use uv_installer::{SatisfiesResult, SitePackages}; use uv_normalize::PackageName; +use uv_pep440::{VersionSpecifier, VersionSpecifiers}; +use uv_pep508::MarkerTree; +use uv_pypi_types::{Requirement, RequirementSource}; use uv_python::{ EnvironmentPreference, PythonDownloads, PythonEnvironment, PythonInstallation, PythonPreference, PythonRequest, @@ -361,7 +361,7 @@ fn warn_executable_not_provided_by_package( let suggested_command = format!("{invocation_source} --from PKG {executable}"); let provided_by = packages .iter() - .map(distribution_types::Name::name) + .map(uv_distribution_types::Name::name) .map(|name| format!("- {}", name.cyan())) .join("\n"); warn_user!( diff --git a/crates/uv/src/commands/venv.rs b/crates/uv/src/commands/venv.rs index 46c04c545..17c9becb6 100644 --- a/crates/uv/src/commands/venv.rs +++ b/crates/uv/src/commands/venv.rs @@ -9,9 +9,7 @@ use miette::{Diagnostic, IntoDiagnostic}; use owo_colors::OwoColorize; use thiserror::Error; -use distribution_types::{DependencyMetadata, IndexLocations}; use install_wheel_rs::linker::LinkMode; -use pypi_types::Requirement; use uv_auth::store_credentials_from_url; use uv_cache::Cache; use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder}; @@ -20,7 +18,9 @@ use uv_configuration::{ NoBinary, NoBuild, SourceStrategy, TrustedHost, }; use uv_dispatch::BuildDispatch; +use uv_distribution_types::{DependencyMetadata, IndexLocations}; use uv_fs::Simplified; +use uv_pypi_types::Requirement; use uv_python::{ EnvironmentPreference, PythonDownloads, PythonInstallation, PythonPreference, PythonRequest, PythonVersionFile, VersionRequest, @@ -114,7 +114,7 @@ enum VenvError { #[error("Failed to extract interpreter tags")] #[diagnostic(code(uv::venv::tags))] - Tags(#[source] platform_tags::TagsError), + Tags(#[source] uv_platform_tags::TagsError), #[error("Failed to resolve `--find-links` entry")] #[diagnostic(code(uv::venv::flat_index))] @@ -347,13 +347,13 @@ async fn venv_impl( let requirements = if interpreter.python_tuple() < (3, 12) { // Only include `setuptools` and `wheel` on Python <3.12 vec![ - Requirement::from(pep508_rs::Requirement::from_str("pip").unwrap()), - Requirement::from(pep508_rs::Requirement::from_str("setuptools").unwrap()), - Requirement::from(pep508_rs::Requirement::from_str("wheel").unwrap()), + Requirement::from(uv_pep508::Requirement::from_str("pip").unwrap()), + Requirement::from(uv_pep508::Requirement::from_str("setuptools").unwrap()), + Requirement::from(uv_pep508::Requirement::from_str("wheel").unwrap()), ] } else { vec![Requirement::from( - pep508_rs::Requirement::from_str("pip").unwrap(), + uv_pep508::Requirement::from_str("pip").unwrap(), )] }; diff --git a/crates/uv/src/settings.rs b/crates/uv/src/settings.rs index b4bb325c3..64b870d52 100644 --- a/crates/uv/src/settings.rs +++ b/crates/uv/src/settings.rs @@ -4,10 +4,7 @@ use std::path::PathBuf; use std::process; use std::str::FromStr; -use distribution_types::{DependencyMetadata, IndexLocations}; use install_wheel_rs::linker::LinkMode; -use pep508_rs::{ExtraName, RequirementOrigin}; -use pypi_types::{Requirement, SupportedEnvironments}; use url::Url; use uv_cache::{CacheArgs, Refresh}; use uv_cli::{ @@ -28,7 +25,10 @@ use uv_configuration::{ NoBinary, NoBuild, PreviewMode, Reinstall, SourceStrategy, TargetTriple, TrustedHost, TrustedPublishing, Upgrade, VersionControlSystem, }; +use uv_distribution_types::{DependencyMetadata, IndexLocations}; use uv_normalize::PackageName; +use uv_pep508::{ExtraName, RequirementOrigin}; +use uv_pypi_types::{Requirement, SupportedEnvironments}; use uv_python::{Prefix, PythonDownloads, PythonPreference, PythonVersion, Target}; use uv_resolver::{AnnotationStyle, DependencyMode, ExcludeNewer, PrereleaseMode, ResolutionMode}; use uv_settings::{