[package]
name = "uv"
version = "0.11.10"
description = "A Python package and project manager"
edition = { workspace = true }
rust-version = { workspace = true }
homepage = { workspace = true }
documentation = "https://docs.astral.sh/uv"
repository = { workspace = true }
authors = { workspace = true }
license = { workspace = true }
default-run = "uv"

[lints]
workspace = true

[dependencies]
uv-audit = { workspace = true }
uv-auth = { workspace = true }
uv-bin-install = { workspace = true }
uv-build-backend = { workspace = true }
uv-build-frontend = { 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-console = { 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-flags = { workspace = true }
uv-fs = { workspace = true }
uv-git = { workspace = true }
uv-git-types = { workspace = true }
uv-install-wheel = { workspace = true, default-features = false }
uv-installer = { workspace = true }
uv-logging = { workspace = true }
uv-normalize = { workspace = true }
uv-pep440 = { workspace = true }
uv-pep508 = { workspace = true }
uv-performance-memory-allocator = { workspace = true, optional = true }
uv-platform = { workspace = true }
uv-platform-tags = { workspace = true }
uv-preview = { workspace = true }
uv-publish = { workspace = true }
uv-pypi-types = { workspace = true }
uv-python = { workspace = true, features = ["schemars"] }
uv-redacted = { workspace = true }
uv-requirements = { workspace = true }
uv-requirements-txt = { workspace = true }
uv-resolver = { workspace = true }
uv-scripts = { workspace = true }
uv-settings = { workspace = true, features = ["schemars"] }
uv-shell = { workspace = true }
uv-static = { workspace = true }
uv-test = { workspace = true, optional = true }
uv-tool = { workspace = true }
uv-torch = { workspace = true }
uv-trampoline-builder = { workspace = true }
uv-types = { workspace = true }
uv-version = { workspace = true }
uv-virtualenv = { workspace = true }
uv-warnings = { workspace = true }
uv-workspace = { workspace = true, features = ["clap"] }

anstream = { workspace = true }
anyhow = { workspace = true }
axoupdater = { workspace = true, features = [
  "github_releases",
  "tokio",
], optional = true }
clap = { workspace = true, features = ["derive", "string", "wrap_help"] }
console = { workspace = true }
ctrlc = { workspace = true }
diskus = { workspace = true }
dotenvy = { workspace = true }
dunce = { workspace = true }
etcetera = { workspace = true }
fs-err = { workspace = true, features = ["tokio"] }
futures = { workspace = true }
http = { workspace = true }
jiff = { workspace = true }
indexmap = { workspace = true }
indicatif = { workspace = true }
indoc = { workspace = true }
itertools = { workspace = true }
miette = { workspace = true, features = ["fancy-no-backtrace"] }
open = { workspace = true }
owo-colors = { workspace = true }
petgraph = { workspace = true }
reqwest = { workspace = true }
rkyv = { workspace = true }
rustc-hash = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
tempfile = { workspace = true }
textwrap = { workspace = true }
thiserror = { workspace = true }
tokio = { workspace = true }
toml = { workspace = true }
toml_edit = { workspace = true }
tracing = { workspace = true }
tracing-durations-export = { workspace = true, features = ["plot"], optional = true }
tracing-subscriber = { workspace = true, features = ["env-filter", "json", "registry"] }
tracing-tree = { workspace = true }
unicode-width = { workspace = true }
url = { workspace = true }
uuid = { workspace = true, features = ["v4"] }
version-ranges = { workspace = true }
walkdir = { workspace = true }
which = { workspace = true }
zip = { workspace = true }

[target.'cfg(target_os = "windows")'.dependencies]
self-replace = { workspace = true }
uv-windows = { workspace = true }

[build-dependencies]
uv-static = { workspace = true }
uv-version = { workspace = true }

embed-manifest = { workspace = true }

[dev-dependencies]
uv-publish = { workspace = true, features = ["test"] }
uv-test = { workspace = true }

assert_cmd = { workspace = true }
assert_fs = { workspace = true }
backon = { workspace = true }
base64 = { workspace = true }
byteorder = { workspace = true }
bytes = { workspace = true }
filetime = { workspace = true }
flate2 = { workspace = true, default-features = false }
http-body-util = { workspace = true }
hyper = { workspace = true }
hyper-util = { workspace = true }
indoc = { workspace = true }
insta = { workspace = true }
predicates = { workspace = true }
regex = { workspace = true }
reqwest = { workspace = true, features = ["blocking"], default-features = false }
sha2 = { workspace = true }
tar = { workspace = true }
tempfile = { workspace = true }
tokio-stream = { workspace = true }
tokio-util = { workspace = true }
wiremock = { workspace = true }
zip = { workspace = true }

[target.'cfg(unix)'.dependencies]
nix = { workspace = true }
uv-unix = { workspace = true }

[features]
default = ["performance", "uv-distribution/static", "test-defaults"]
native-auth = []
# Use better memory allocators, etc.
performance = ["performance-memory-allocator"]
performance-memory-allocator = ["dep:uv-performance-memory-allocator"]

# Adds self-update functionality. This feature is only enabled for uv's cargo-dist installer
# and should be left unselected when building uv for package managers.
self-update = ["axoupdater", "uv-cli/self-update"]

# Features for development only.
tracing-durations-export = ["dep:tracing-durations-export", "uv-resolver/tracing-durations-export", "uv-settings/tracing-durations-export", "uv-test/tracing-durations-export"]

# Features that only apply when running tests, no-ops otherwise.
test-defaults = [
  "test-crates-io",
  "test-git",
  "test-git-lfs",
  "test-pypi",
  "test-r2",
  "test-python",
  "test-python-managed",
  "test-python-eol",
  "test-slow",
  "test-ecosystem"
]
# Introduces a testing dependency on crates.io.
test-crates-io = []
# Introduces a testing dependency on Git.
test-git = ["uv-test?/git"]
# Introduces a testing dependency on Git LFS.
test-git-lfs = ["test-git"]
# Introduces a testing dependency on PyPI.
test-pypi = ["uv-client/test-pypi"]
# Introduces a testing dependency on R2.
test-r2 = []
# Introduces a testing dependency on a local Python installation.
test-python = []
# Introduces a testing dependency on a local Python installation with specific patch versions.
test-python-patch = []
# Introduces a testing dependency on a local Python installation with an EOL version.
test-python-eol = []
# Introduces a testing dependency on managed Python installations.
test-python-managed = []
# Include "slow" test cases.
test-slow = []
# Includes test cases that require ecosystem packages
test-ecosystem = []
# Includes test cases that write to the Windows registry. These tests mutate
# global state (the Windows registry).
# We don't run these tests by default locally; the CI for Windows enables them.
test-windows-registry = []
# Build uvw binary on Windows
windows-gui-bin = []

[package.metadata.cargo-shear]
# The uv crate has uv-test as dev-dependency. We want that by default,
# uv runs tests with `uv-test/git`, so it's a default feature in uv. The
# problem is that uv-test is only a dev dependency, which gets stripped by
# `cargo install`, and `cargo install` fails with a missing crate error.
# As workaround, we make `uv-test` a regular optional dependency. It's never
# used as a regular dependency, but it allows using `uv-test?/git` as default
# feature.
ignored = ["uv-test"]

[package.metadata.dist]
dist = true

[[bin]]
name = "uvw"
required-features = ["windows-gui-bin"]

[lib]
doctest = false
