[build-system]
requires = ["maturin>=1.0,<2.0"]
build-backend = "maturin"

[project]
name = "uv"
version = "0.9.18"
description = "An extremely fast Python package and project manager, written in Rust."
authors = [{ name = "Astral Software Inc.", email = "hey@astral.sh" }]
requires-python = ">=3.8"
keywords = [
  "uv", "requirements", "packaging"
]
classifiers = [
  "Development Status :: 5 - Production/Stable",
  "Environment :: Console",
  "Intended Audience :: Developers",
  "Operating System :: OS Independent",
  "License :: OSI Approved :: MIT License",
  "License :: OSI Approved :: Apache Software License",
  "Programming Language :: Python",
  "Programming Language :: Python :: 3.8",
  "Programming Language :: Python :: 3.9",
  "Programming Language :: Python :: 3.10",
  "Programming Language :: Python :: 3.11",
  "Programming Language :: Python :: 3.12",
  "Programming Language :: Python :: 3.13",
  "Programming Language :: Python :: 3.14",
  "Programming Language :: Python :: 3.15",
  "Programming Language :: Python :: 3 :: Only",
  "Topic :: Software Development :: Quality Assurance",
  "Topic :: Software Development :: Testing",
  "Topic :: Software Development :: Libraries",
]
readme = "README.md"

[project.urls]
Repository = "https://github.com/astral-sh/uv"
Documentation = "https://docs.astral.sh/uv"
Changelog = "https://github.com/astral-sh/uv/blob/main/CHANGELOG.md"
Releases = "https://github.com/astral-sh/uv/releases"
Discord = "https://discord.gg/astral-sh"

[tool.maturin]
bindings = "bin"
manifest-path = "crates/uv/Cargo.toml"
module-name = "uv"
python-source = "python"
strip = true
include = [
    { path = "rust-toolchain.toml", format = ["sdist", "wheel"] },
    # this one isn't discovered by maturin because it's behind a feature flag
    { path = "crates/uv-performance-memory-allocator/**/*", format = ["sdist", "wheel"] },
    { path = "crates/uv-trampoline-builder/trampolines/*", format = "sdist" },
    { path = "LICENSE-APACHE", format = "sdist" },
    { path = "LICENSE-MIT", format = "sdist" },
]

[tool.rooster]
changelog-contributors = false  # We exclude contributors from the CHANGELOG file
major-labels = []  # We do not use the major version number yet
minor-labels = ["breaking"]
ignore-labels = ["internal", "ci", "testing"]
version_files = [
  "README.md",
  "pyproject.toml",
  "crates/uv/Cargo.toml",
  "crates/uv-version/Cargo.toml",
  "crates/uv-build/Cargo.toml",
  "crates/uv-build/pyproject.toml",
  { target = "crates/uv-static/src/env_vars.rs", replace = "next release" },
  "docs/getting-started/installation.md",
  "docs/guides/integration/docker.md",
  "docs/guides/integration/pre-commit.md",
  "docs/guides/integration/github.md",
  "docs/guides/integration/gitlab.md",
  "docs/guides/integration/aws-lambda.md",
  "docs/concepts/build-backend.md",
  "docs/concepts/projects/init.md",
  "docs/concepts/projects/workspaces.md",
  { target = "docs/reference/environment.md", replace = "next release" },
]

[tool.rooster.section-labels]
"Breaking changes" = ["breaking"]
"Enhancements" = ["enhancement", "compatibility", "error messages"]
"Preview features" = ["preview"]
"Configuration" = ["configuration"]
"Performance" = ["performance"]
"Bug fixes" = ["bug"]
"Rust API" = ["rustlib"]
"Documentation" = ["documentation"]
"Other changes" = ["__unknown__"]

[tool.mypy]
ignore_missing_imports = true
files = [
  "crates/uv-python/*.py",
  "python/uv/*.py",
]

[tool.uv]
managed = false
