uv/crates
konsti 86e6f76836
Use inline table for dependencies in lockfile (#4581)
Use indented inline tables for `distribution.dependencies`,
`distribution.optional-dependencies` and
`distribution.dev-dependencies`.

The new style is more concise (see examples below) and it makes the
association between a distribution and its dependencies clearer
(previously, they were both individual `[[...]]` blocks separated by
newlines). The style is optimized for small, meaningful diffs by placing
each dependency on a single line with a final trailing comma. Whenever a
dependency is added, removed or changed, there should be a one line diff
in `distribution.dependencies`. The final trailing comma ensures that
adding a dependency doesn't change the line ahead.

Part of #3611

## Examples

### Simple workspace package

Before:
```toml
[[distribution]]
name = "bird-feeder"
version = "1.0.0"
source = "editable+packages/bird-feeder"

[[distribution.dependencies]]
name = "anyio"

[[distribution.dependencies]]
name = "seeds"
```

After:
```toml
[[distribution]]
name = "bird-feeder"
version = "1.0.0"
source = "editable+packages/bird-feeder"
dependencies = [
    { name = "anyio" },
    { name = "seeds" },
]
```

### Flask

Before:
```toml
[[distribution]]
name = "flask"
version = "3.0.2"
source = "registry+https://pypi.org/simple"
sdist = { url = "a89e8120fa/flask-3.0.2.tar.gz", hash = "sha256:822c03f4b799204250a7ee84b1eddc40665395333973dfb9deebfe425fefcb7d", size = 675248 }
wheels = [{ url = "aa98bfe0eb/flask-3.0.2-py3-none-any.whl", hash = "sha256:3232e0e9c850d781933cf0207523d1ece087eb8d87b23777ae38456e2fbe7c6e", size = 101300 }]

[[distribution.dependencies]]
name = "blinker"

[[distribution.dependencies]]
name = "click"

[[distribution.dependencies]]
name = "itsdangerous"

[[distribution.dependencies]]
name = "jinja2"

[[distribution.dependencies]]
name = "werkzeug"

[distribution.optional-dependencies]

[[distribution.optional-dependencies.dotenv]]
name = "python-dotenv"
```

After:
```toml
[[distribution]]
name = "flask"
version = "3.0.2"
source = "registry+https://pypi.org/simple"
sdist = { url = "a89e8120fa/flask-3.0.2.tar.gz", hash = "sha256:822c03f4b799204250a7ee84b1eddc40665395333973dfb9deebfe425fefcb7d", size = 675248 }
dependencies = [
    { name = "blinker" },
    { name = "click" },
    { name = "itsdangerous" },
    { name = "jinja2" },
    { name = "werkzeug" },
]
wheels = [{ url = "aa98bfe0eb/flask-3.0.2-py3-none-any.whl", hash = "sha256:3232e0e9c850d781933cf0207523d1ece087eb8d87b23777ae38456e2fbe7c6e", size = 101300 }]

[distribution.optional-dependencies]
dotenv = [
    { name = "python-dotenv" },
]
```

### Forking

Before:
```toml
[[distribution]]
name = "project"
version = "0.1.0"
source = "editable+."

[[distribution.dependencies]]
name = "package-a"
version = "4.3.0"
source = "registry+https://astral-sh.github.io/packse/0.3.29/simple-html/"
marker = "sys_platform == 'darwin'"

[[distribution.dependencies]]
name = "package-a"
version = "4.4.0"
source = "registry+https://astral-sh.github.io/packse/0.3.29/simple-html/"
marker = "sys_platform == 'linux'"

[[distribution.dependencies]]
name = "package-b"
marker = "sys_platform == 'linux'"

[[distribution.dependencies]]
name = "package-c"
marker = "sys_platform == 'darwin'"
```

After:
```toml
[[distribution]]
name = "project"
version = "0.1.0"
source = "editable+."
dependencies = [
    { name = "package-a", version = "4.3.0", source = "registry+https://astral-sh.github.io/packse/0.3.29/simple-html/", marker = "sys_platform == 'darwin'" },
    { name = "package-a", version = "4.4.0", source = "registry+https://astral-sh.github.io/packse/0.3.29/simple-html/", marker = "sys_platform == 'linux'" },
    { name = "package-b", marker = "sys_platform == 'linux'" },
    { name = "package-c", marker = "sys_platform == 'darwin'" },
]
```
2024-06-27 20:06:45 +02:00
..
bench Respect index strategy in source distribution builds (#4468) 2024-06-24 12:03:38 +00:00
cache-key Remove some unused pub use exports (#3930) 2024-05-30 22:26:52 -04:00
distribution-filename Make .egg-info filename parsing spec compliant (#4533) 2024-06-25 23:49:43 +00:00
distribution-types Make .egg-info filename parsing spec compliant (#4533) 2024-06-25 23:49:43 +00:00
install-wheel-rs Add uv tool install (#4492) 2024-06-26 10:24:29 -05:00
once-map Avoid race condition in OnceMap (#3987) 2024-06-03 12:25:58 -04:00
pep440-rs Enable workspace lint configuration in remaining crates (#4329) 2024-06-18 03:02:28 +00:00
pep508-rs Support conflicting URL in separate forks (#4435) 2024-06-26 13:58:23 +02:00
platform-tags fix: add missing ppc64le alias for powerpc64le (#3963) 2024-06-02 13:15:24 -04:00
pypi-types Support conflicting URL in separate forks (#4435) 2024-06-26 13:58:23 +02:00
requirements-txt Allow local index references in requirements.txt files (#4525) 2024-06-25 18:06:37 +00:00
uv Use inline table for dependencies in lockfile (#4581) 2024-06-27 20:06:45 +02:00
uv-auth Enable workspace lint configuration in remaining crates (#4329) 2024-06-18 03:02:28 +00:00
uv-build Create temporary environments in dedicated cache bucket (#4223) 2024-06-10 23:17:35 +00:00
uv-cache Represent build tag as u64 (#4253) 2024-06-11 21:40:08 +00:00
uv-cli Explicitly mention use of seed packages during uv venv --seed (#4588) 2024-06-27 14:36:15 +00:00
uv-client Flatten errors in registry fetch (#4546) 2024-06-26 13:05:46 +00:00
uv-configuration Flatten requirements eagerly in get_dependencies (#4430) 2024-06-25 21:13:47 +00:00
uv-dev Respect index strategy in source distribution builds (#4468) 2024-06-24 12:03:38 +00:00
uv-dispatch Rename SitePackages::from_environment for clarity (#4497) 2024-06-24 23:32:45 +00:00
uv-distribution Add --extra to uv add and enable fine grained updates (#4566) 2024-06-26 22:36:07 +00:00
uv-extract Fix nightly cfg checker warnings (#3932) 2024-05-31 09:35:52 +00:00
uv-fs Add guard to replace_symlink on Windows (#4519) 2024-06-25 13:47:40 -05:00
uv-git Use shared client in Git fetch implementation (#4487) 2024-06-24 17:09:29 -04:00
uv-installer Rename SitePackages::from_environment for clarity (#4497) 2024-06-24 23:32:45 +00:00
uv-macros Enable workspace lint configuration in remaining crates (#4329) 2024-06-18 03:02:28 +00:00
uv-normalize Enable workspace lint configuration in remaining crates (#4329) 2024-06-18 03:02:28 +00:00
uv-requirements Remove useless #[allow(clippy::too_many_arguments)] (#4529) 2024-06-25 19:09:59 +00:00
uv-resolver Use inline table for dependencies in lockfile (#4581) 2024-06-27 20:06:45 +02:00
uv-settings Add a universal resolution mode to pip compile (#4505) 2024-06-25 21:28:50 +00:00
uv-state Add uv tool install (#4492) 2024-06-26 10:24:29 -05:00
uv-tool Move from a shared tools.toml to separated tool receipts (#4560) 2024-06-26 16:48:18 -04:00
uv-toolchain Add uv tool install (#4492) 2024-06-26 10:24:29 -05:00
uv-trampoline Support x86 windows (#3873) 2024-05-28 16:07:39 +00:00
uv-types Respect index strategy in source distribution builds (#4468) 2024-06-24 12:03:38 +00:00
uv-version Bump version to 0.2.17 (#4573) 2024-06-26 23:16:44 +00:00
uv-virtualenv Use relative path for lib64 symlink (#4268) 2024-06-12 09:36:27 -04:00
uv-warnings Fix a bug where no warning is output when parsing of workspace settings fails. (#4014) 2024-06-04 09:21:19 -04:00
README.md Rename uv-interpreter crate to uv-toolchain (#4120) 2024-06-07 13:59:14 -05:00

Crates

bench

Functionality for benchmarking uv.

cache-key

Generic functionality for caching paths, URLs, and other resources across platforms.

distribution-filename

Parse built distribution (wheel) and source distribution (sdist) filenames to extract structured metadata.

distribution-types

Abstractions for representing built distributions (wheels) and source distributions (sdists), and the sources from which they can be downloaded.

install-wheel-rs

Install built distributions (wheels) into a virtual environment.]

once-map

A waitmap-like concurrent hash map for executing tasks exactly once.

pep440-rs

Utilities for interacting with Python version numbers and specifiers.

pep508-rs

Utilities for interacting with PEP 508 dependency specifiers.

platform-host

Functionality for detecting the current platform (operating system, architecture, etc.).

platform-tags

Functionality for parsing and inferring Python platform tags as per PEP 425.

uv

Command-line interface for the uv package manager.

uv-build

A PEP 517-compatible build frontend for uv.

uv-cache

Functionality for caching Python packages and associated metadata.

uv-client

Client for interacting with PyPI-compatible HTTP APIs.

uv-dev

Development utilities for uv.

uv-dispatch

A centralized struct for resolving and building source distributions in isolated environments. Implements the traits defined in uv-types.

uv-distribution

Client for interacting with built distributions (wheels) and source distributions (sdists). Capable of fetching metadata, distribution contents, etc.

uv-extract

Utilities for extracting files from archives.

uv-fs

Utilities for interacting with the filesystem.

uv-git

Functionality for interacting with Git repositories.

uv-installer

Functionality for installing Python packages into a virtual environment.

uv-toolchain

Functionality for detecting and leveraging the current Python interpreter.

uv-normalize

Normalize package and extra names as per Python specifications.

uv-package

Types and functionality for working with Python packages, e.g., parsing wheel files.

uv-requirements

Utilities for reading package requirements from pyproject.toml and requirements.txt files.

uv-resolver

Functionality for resolving Python packages and their dependencies.

uv-types

Shared traits for uv, to avoid circular dependencies.

pypi-types

General-purpose type definitions for types used in PyPI-compatible APIs.

uv-virtualenv

A venv replacement to create virtual environments in Rust.

uv-warnings

User-facing warnings for uv.

requirements-txt

Functionality for parsing requirements.txt files.