From 1427419b84571a73c6fee2c81c9fab680c3d182f Mon Sep 17 00:00:00 2001 From: samypr100 <3933065+samypr100@users.noreply.github.com> Date: Mon, 22 Sep 2025 18:04:15 -0400 Subject: [PATCH] feat(alt): use macro to specify env var versioning instead --- .../uv-dev/src/generate_env_vars_reference.rs | 18 +- crates/uv-macros/src/lib.rs | 29 +- crates/uv-static/src/env_vars.rs | 640 ++++++------------ docs/reference/environment.md | 480 +++++-------- 4 files changed, 408 insertions(+), 759 deletions(-) diff --git a/crates/uv-dev/src/generate_env_vars_reference.rs b/crates/uv-dev/src/generate_env_vars_reference.rs index bc46d0c91..c282f9515 100644 --- a/crates/uv-dev/src/generate_env_vars_reference.rs +++ b/crates/uv-dev/src/generate_env_vars_reference.rs @@ -80,27 +80,31 @@ fn generate() -> String { // Partition and sort environment variables into UV_ and external variables. let (uv_vars, external_vars): (BTreeSet<_>, BTreeSet<_>) = EnvVars::metadata() .iter() - .partition(|(var, _)| var.starts_with("UV_")); + .partition(|(var, _, _)| var.starts_with("UV_")); output.push_str("uv defines and respects the following environment variables:\n\n"); - for (var, doc) in uv_vars { - output.push_str(&render(var, doc)); + for (var, doc, since) in uv_vars { + output.push_str(&render(var, doc, since)); } output.push_str("\n\n## Externally defined variables\n\n"); output.push_str("uv also reads the following externally defined environment variables:\n\n"); - for (var, doc) in external_vars { - output.push_str(&render(var, doc)); + for (var, doc, since) in external_vars { + output.push_str(&render(var, doc, since)); } output } /// Render an environment variable and its documentation. -fn render(var: &str, doc: &str) -> String { - format!("### `{var}`\n\n{doc}\n\n") +fn render(var: &str, doc: &str, since: Option<&str>) -> String { + if let Some(since) = since { + format!("### `{var}`\nSince `{since}`\n\n{doc}\n\n") + } else { + format!("### `{var}`\n\n{doc}\n\n") + } } #[cfg(test)] diff --git a/crates/uv-macros/src/lib.rs b/crates/uv-macros/src/lib.rs index 8c29fbaf2..03263d2f6 100644 --- a/crates/uv-macros/src/lib.rs +++ b/crates/uv-macros/src/lib.rs @@ -77,6 +77,14 @@ fn get_env_var_pattern_from_attr(attrs: &[Attribute]) -> Option { .map(|lit_str| lit_str.value()) } +fn get_since(attrs: &[Attribute]) -> Option { + attrs + .iter() + .find(|a| a.path().is_ident("attr_since")) + .and_then(|attr| attr.parse_args::().ok()) + .map(|lit_str| lit_str.value()) +} + fn is_hidden(attrs: &[Attribute]) -> bool { attrs.iter().any(|attr| attr.path().is_ident("attr_hidden")) } @@ -93,13 +101,15 @@ pub fn attribute_env_vars_metadata(_attr: TokenStream, input: TokenStream) -> To ImplItem::Const(item) if !is_hidden(&item.attrs) => { let name = item.ident.to_string(); let doc = get_doc_comment(&item.attrs); - Some((name, doc)) + let since = get_since(&item.attrs); + Some((name, doc, since)) } ImplItem::Fn(item) if !is_hidden(&item.attrs) => { // Extract the environment variable patterns. if let Some(pattern) = get_env_var_pattern_from_attr(&item.attrs) { let doc = get_doc_comment(&item.attrs); - Some((pattern, doc)) + let since = get_since(&item.attrs); + Some((pattern, doc, since)) } else { None // Skip if pattern extraction fails. } @@ -109,9 +119,11 @@ pub fn attribute_env_vars_metadata(_attr: TokenStream, input: TokenStream) -> To .collect(); let struct_name = &ast.self_ty; - let pairs = constants.iter().map(|(name, doc)| { - quote! { - (#name, #doc) + let pairs = constants.iter().map(|(name, doc, since)| { + if let Some(s) = since { + quote! { (#name, #doc, Some(#s)) } + } else { + quote! { (#name, #doc, None) } } }); @@ -120,7 +132,7 @@ pub fn attribute_env_vars_metadata(_attr: TokenStream, input: TokenStream) -> To impl #struct_name { /// Returns a list of pairs of env var and their documentation defined in this impl block. - pub fn metadata<'a>() -> &'a [(&'static str, &'static str)] { + pub fn metadata<'a>() -> &'a [(&'static str, &'static str, Option<&'static str>)] { &[#(#pairs),*] } } @@ -138,3 +150,8 @@ pub fn attr_hidden(_attr: TokenStream, item: TokenStream) -> TokenStream { pub fn attr_env_var_pattern(_attr: TokenStream, item: TokenStream) -> TokenStream { item } + +#[proc_macro_attribute] +pub fn attr_since(_attr: TokenStream, item: TokenStream) -> TokenStream { + item +} diff --git a/crates/uv-static/src/env_vars.rs b/crates/uv-static/src/env_vars.rs index 516696448..5f6f77af4 100644 --- a/crates/uv-static/src/env_vars.rs +++ b/crates/uv-static/src/env_vars.rs @@ -1,7 +1,7 @@ //! Environment variables used or supported by uv. //! Used to generate `docs/reference/environment.md`. -//! NOTICE: Upcoming release functionality should be documented with "Since `uv.next.release`." -use uv_macros::{attr_env_var_pattern, attr_hidden, attribute_env_vars_metadata}; +//! NOTICE: Upcoming release functionality should be documented with `#[attr_since("uv.next.release")]`. +use uv_macros::{attr_env_var_pattern, attr_hidden, attr_since, attribute_env_vars_metadata}; /// Declares all environment variable used throughout `uv` and its crates. pub struct EnvVars; @@ -17,80 +17,67 @@ impl EnvVars { /// /// See for security /// considerations. - /// - /// Since `0.6.0`. + #[attr_since("0.6.0")] pub const UV: &'static str = "UV"; /// Equivalent to the `--offline` command-line argument. If set, uv will disable network access. - /// - /// Since `0.5.9`. + #[attr_since("0.5.9")] pub const UV_OFFLINE: &'static str = "UV_OFFLINE"; /// Equivalent to the `--default-index` command-line argument. If set, uv will use /// this URL as the default index when searching for packages. - /// - /// Since `0.4.23`. + #[attr_since("0.4.23")] pub const UV_DEFAULT_INDEX: &'static str = "UV_DEFAULT_INDEX"; /// Equivalent to the `--index` command-line argument. If set, uv will use this /// space-separated list of URLs as additional indexes when searching for packages. - /// - /// Since `0.4.23`. + #[attr_since("0.4.23")] pub const UV_INDEX: &'static str = "UV_INDEX"; /// Equivalent to the `--index-url` command-line argument. If set, uv will use this /// URL as the default index when searching for packages. /// (Deprecated: use `UV_DEFAULT_INDEX` instead.) - /// - /// Since `0.0.5`. + #[attr_since("0.0.5")] pub const UV_INDEX_URL: &'static str = "UV_INDEX_URL"; /// Equivalent to the `--extra-index-url` command-line argument. If set, uv will /// use this space-separated list of URLs as additional indexes when searching for packages. /// (Deprecated: use `UV_INDEX` instead.) - /// - /// Since `0.1.3`. + #[attr_since("0.1.3")] pub const UV_EXTRA_INDEX_URL: &'static str = "UV_EXTRA_INDEX_URL"; /// Equivalent to the `--find-links` command-line argument. If set, uv will use this /// comma-separated list of additional locations to search for packages. - /// - /// Since `0.4.19`. + #[attr_since("0.4.19")] pub const UV_FIND_LINKS: &'static str = "UV_FIND_LINKS"; /// Equivalent to the `--cache-dir` command-line argument. If set, uv will use this /// directory for caching instead of the default cache directory. - /// - /// Since `0.0.5`. + #[attr_since("0.0.5")] pub const UV_CACHE_DIR: &'static str = "UV_CACHE_DIR"; /// The directory for storage of credentials when using a plain text backend. - /// - /// Since `0.8.15`. + #[attr_since("0.8.15")] pub const UV_CREDENTIALS_DIR: &'static str = "UV_CREDENTIALS_DIR"; /// Equivalent to the `--no-cache` command-line argument. If set, uv will not use the /// cache for any operations. - /// - /// Since `0.1.2`. + #[attr_since("0.1.2")] pub const UV_NO_CACHE: &'static str = "UV_NO_CACHE"; /// Equivalent to the `--resolution` command-line argument. For example, if set to /// `lowest-direct`, uv will install the lowest compatible versions of all direct dependencies. - /// - /// Since `0.1.27`. + #[attr_since("0.1.27")] pub const UV_RESOLUTION: &'static str = "UV_RESOLUTION"; /// Equivalent to the `--prerelease` command-line argument. For example, if set to /// `allow`, uv will allow pre-release versions for all dependencies. - /// - /// Since `0.1.16`. + #[attr_since("0.1.16")] pub const UV_PRERELEASE: &'static str = "UV_PRERELEASE"; /// Equivalent to the `--fork-strategy` argument. Controls version selection during universal /// resolution. - /// - /// Since `0.5.9`. + #[attr_since("0.5.9")] pub const UV_FORK_STRATEGY: &'static str = "UV_FORK_STRATEGY"; /// Equivalent to the `--system` command-line argument. If set to `true`, uv will @@ -99,14 +86,12 @@ impl EnvVars { /// WARNING: `UV_SYSTEM_PYTHON=true` is intended for use in continuous integration (CI) /// or containerized environments and should be used with caution, as modifying the system /// Python can lead to unexpected behavior. - /// - /// Since `0.1.18`. + #[attr_since("0.1.18")] pub const UV_SYSTEM_PYTHON: &'static str = "UV_SYSTEM_PYTHON"; /// Equivalent to the `--python` command-line argument. If set to a path, uv will use /// this Python interpreter for all operations. - /// - /// Since `0.1.40`. + #[attr_since("0.1.40")] pub const UV_PYTHON: &'static str = "UV_PYTHON"; /// Equivalent to the `--break-system-packages` command-line argument. If set to `true`, @@ -115,14 +100,12 @@ impl EnvVars { /// WARNING: `UV_BREAK_SYSTEM_PACKAGES=true` is intended for use in continuous integration /// (CI) or containerized environments and should be used with caution, as modifying the system /// Python can lead to unexpected behavior. - /// - /// Since `0.1.32`. + #[attr_since("0.1.32")] pub const UV_BREAK_SYSTEM_PACKAGES: &'static str = "UV_BREAK_SYSTEM_PACKAGES"; /// Equivalent to the `--native-tls` command-line argument. If set to `true`, uv will /// use the system's trust store instead of the bundled `webpki-roots` crate. - /// - /// Since `0.1.19`. + #[attr_since("0.1.19")] pub const UV_NATIVE_TLS: &'static str = "UV_NATIVE_TLS"; /// Equivalent to the `--index-strategy` command-line argument. @@ -130,44 +113,37 @@ impl EnvVars { /// For example, if set to `unsafe-best-match`, uv will consider versions of a given package /// available across all index URLs, rather than limiting its search to the first index URL /// that contains the package. - /// - /// Since `0.1.29`. + #[attr_since("0.1.29")] pub const UV_INDEX_STRATEGY: &'static str = "UV_INDEX_STRATEGY"; /// Equivalent to the `--require-hashes` command-line argument. If set to `true`, /// uv will require that all dependencies have a hash specified in the requirements file. - /// - /// Since `0.1.34`. + #[attr_since("0.1.34")] pub const UV_REQUIRE_HASHES: &'static str = "UV_REQUIRE_HASHES"; /// Equivalent to the `--constraint` command-line argument. If set, uv will use this /// file as the constraints file. Uses space-separated list of files. - /// - /// Since `0.1.36`. + #[attr_since("0.1.36")] pub const UV_CONSTRAINT: &'static str = "UV_CONSTRAINT"; /// Equivalent to the `--build-constraint` command-line argument. If set, uv will use this file /// as constraints for any source distribution builds. Uses space-separated list of files. - /// - /// Since `0.2.34`. + #[attr_since("0.2.34")] pub const UV_BUILD_CONSTRAINT: &'static str = "UV_BUILD_CONSTRAINT"; /// Equivalent to the `--override` command-line argument. If set, uv will use this file /// as the overrides file. Uses space-separated list of files. - /// - /// Since `0.2.22`. + #[attr_since("0.2.22")] pub const UV_OVERRIDE: &'static str = "UV_OVERRIDE"; /// Equivalent to the `--link-mode` command-line argument. If set, uv will use this as /// a link mode. - /// - /// Since `0.1.40`. + #[attr_since("0.1.40")] pub const UV_LINK_MODE: &'static str = "UV_LINK_MODE"; /// Equivalent to the `--no-build-isolation` command-line argument. If set, uv will /// skip isolation when building source distributions. - /// - /// Since `0.1.40`. + #[attr_since("0.1.40")] pub const UV_NO_BUILD_ISOLATION: &'static str = "UV_NO_BUILD_ISOLATION"; /// Equivalent to the `--custom-compile-command` command-line argument. @@ -175,201 +151,167 @@ impl EnvVars { /// Used to override uv in the output header of the `requirements.txt` files generated by /// `uv pip compile`. Intended for use-cases in which `uv pip compile` is called from within a wrapper /// script, to include the name of the wrapper script in the output file. - /// - /// Since `0.1.23`. + #[attr_since("0.1.23")] pub const UV_CUSTOM_COMPILE_COMMAND: &'static str = "UV_CUSTOM_COMPILE_COMMAND"; /// Equivalent to the `--keyring-provider` command-line argument. If set, uv /// will use this value as the keyring provider. - /// - /// Since `0.1.19`. + #[attr_since("0.1.19")] pub const UV_KEYRING_PROVIDER: &'static str = "UV_KEYRING_PROVIDER"; /// Equivalent to the `--config-file` command-line argument. Expects a path to a /// local `uv.toml` file to use as the configuration file. - /// - /// Since `0.1.34`. + #[attr_since("0.1.34")] pub const UV_CONFIG_FILE: &'static str = "UV_CONFIG_FILE"; /// Equivalent to the `--no-config` command-line argument. If set, uv will not read /// any configuration files from the current directory, parent directories, or user configuration /// directories. - /// - /// Since `0.2.30`. + #[attr_since("0.2.30")] pub const UV_NO_CONFIG: &'static str = "UV_NO_CONFIG"; /// Equivalent to the `--isolated` command-line argument. If set, uv will avoid discovering /// a `pyproject.toml` or `uv.toml` file. - /// - /// Since `0.8.14`. + #[attr_since("0.8.14")] pub const UV_ISOLATED: &'static str = "UV_ISOLATED"; /// Equivalent to the `--exclude-newer` command-line argument. If set, uv will /// exclude distributions published after the specified date. - /// - /// Since `0.2.12`. + #[attr_since("0.2.12")] pub const UV_EXCLUDE_NEWER: &'static str = "UV_EXCLUDE_NEWER"; /// Whether uv should prefer system or managed Python versions. - /// - /// Since `0.3.2`. + #[attr_since("0.3.2")] pub const UV_PYTHON_PREFERENCE: &'static str = "UV_PYTHON_PREFERENCE"; /// Require use of uv-managed Python versions. - /// - /// Since `0.6.8`. + #[attr_since("0.6.8")] pub const UV_MANAGED_PYTHON: &'static str = "UV_MANAGED_PYTHON"; /// Disable use of uv-managed Python versions. - /// - /// Since `0.6.8`. + #[attr_since("0.6.8")] pub const UV_NO_MANAGED_PYTHON: &'static str = "UV_NO_MANAGED_PYTHON"; /// Equivalent to the /// [`python-downloads`](../reference/settings.md#python-downloads) setting and, when disabled, the /// `--no-python-downloads` option. Whether uv should allow Python downloads. - /// - /// Since `0.3.2`. + #[attr_since("0.3.2")] pub const UV_PYTHON_DOWNLOADS: &'static str = "UV_PYTHON_DOWNLOADS"; /// Overrides the environment-determined libc on linux systems when filling in the current platform /// within Python version requests. Options are: `gnu`, `gnueabi`, `gnueabihf`, `musl`, and `none`. - /// - /// Since `0.7.22`. + #[attr_since("0.7.22")] pub const UV_LIBC: &'static str = "UV_LIBC"; /// Equivalent to the `--compile-bytecode` command-line argument. If set, uv /// will compile Python source files to bytecode after installation. - /// - /// Since `0.3.3`. + #[attr_since("0.3.3")] pub const UV_COMPILE_BYTECODE: &'static str = "UV_COMPILE_BYTECODE"; /// Timeout (in seconds) for bytecode compilation. - /// - /// Since `0.7.22`. + #[attr_since("0.7.22")] pub const UV_COMPILE_BYTECODE_TIMEOUT: &'static str = "UV_COMPILE_BYTECODE_TIMEOUT"; /// Equivalent to the `--no-editable` command-line argument. If set, uv /// installs or exports any editable dependencies, including the project and any workspace /// members, as non-editable. - /// - /// Since `0.6.15`. + #[attr_since("0.6.15")] pub const UV_NO_EDITABLE: &'static str = "UV_NO_EDITABLE"; /// Equivalent to the `--dev` command-line argument. If set, uv will include /// development dependencies. - /// - /// Since `0.8.7`. + #[attr_since("0.8.7")] pub const UV_DEV: &'static str = "UV_DEV"; /// Equivalent to the `--no-dev` command-line argument. If set, uv will exclude /// development dependencies. - /// - /// Since `0.8.7`. + #[attr_since("0.8.7")] pub const UV_NO_DEV: &'static str = "UV_NO_DEV"; /// Equivalent to the `--no-binary` command-line argument. If set, uv will install /// all packages from source. The resolver will still use pre-built wheels to /// extract package metadata, if available. - /// - /// Since `0.5.30`. + #[attr_since("0.5.30")] pub const UV_NO_BINARY: &'static str = "UV_NO_BINARY"; /// Equivalent to the `--no-binary-package` command line argument. If set, uv will /// not use pre-built wheels for the given space-delimited list of packages. - /// - /// Since `0.5.30`. + #[attr_since("0.5.30")] pub const UV_NO_BINARY_PACKAGE: &'static str = "UV_NO_BINARY_PACKAGE"; /// Equivalent to the `--no-build` command-line argument. If set, uv will not build /// source distributions. - /// - /// Since `0.1.40`. + #[attr_since("0.1.40")] pub const UV_NO_BUILD: &'static str = "UV_NO_BUILD"; /// Equivalent to the `--no-build-package` command line argument. If set, uv will /// not build source distributions for the given space-delimited list of packages. - /// - /// Since `0.6.5`. + #[attr_since("0.6.5")] pub const UV_NO_BUILD_PACKAGE: &'static str = "UV_NO_BUILD_PACKAGE"; /// Equivalent to the `--publish-url` command-line argument. The URL of the upload /// endpoint of the index to use with `uv publish`. - /// - /// Since `0.4.16`. + #[attr_since("0.4.16")] pub const UV_PUBLISH_URL: &'static str = "UV_PUBLISH_URL"; /// Equivalent to the `--token` command-line argument in `uv publish`. If set, uv /// will use this token (with the username `__token__`) for publishing. - /// - /// Since `0.4.16`. + #[attr_since("0.4.16")] pub const UV_PUBLISH_TOKEN: &'static str = "UV_PUBLISH_TOKEN"; /// Equivalent to the `--index` command-line argument in `uv publish`. If /// set, uv the index with this name in the configuration for publishing. - /// - /// Since `0.5.8`. + #[attr_since("0.5.8")] pub const UV_PUBLISH_INDEX: &'static str = "UV_PUBLISH_INDEX"; /// Equivalent to the `--username` command-line argument in `uv publish`. If /// set, uv will use this username for publishing. - /// - /// Since `0.4.16`. + #[attr_since("0.4.16")] pub const UV_PUBLISH_USERNAME: &'static str = "UV_PUBLISH_USERNAME"; /// Equivalent to the `--password` command-line argument in `uv publish`. If /// set, uv will use this password for publishing. - /// - /// Since `0.4.16`. + #[attr_since("0.4.16")] pub const UV_PUBLISH_PASSWORD: &'static str = "UV_PUBLISH_PASSWORD"; /// Don't upload a file if it already exists on the index. The value is the URL of the index. - /// - /// Since `0.4.30`. + #[attr_since("0.4.30")] pub const UV_PUBLISH_CHECK_URL: &'static str = "UV_PUBLISH_CHECK_URL"; /// Equivalent to the `--no-sync` command-line argument. If set, uv will skip updating /// the environment. - /// - /// Since `0.4.18`. + #[attr_since("0.4.18")] pub const UV_NO_SYNC: &'static str = "UV_NO_SYNC"; /// Equivalent to the `--locked` command-line argument. If set, uv will assert that the /// `uv.lock` remains unchanged. - /// - /// Since `0.4.25`. + #[attr_since("0.4.25")] pub const UV_LOCKED: &'static str = "UV_LOCKED"; /// Equivalent to the `--frozen` command-line argument. If set, uv will run without /// updating the `uv.lock` file. - /// - /// Since `0.4.25`. + #[attr_since("0.4.25")] pub const UV_FROZEN: &'static str = "UV_FROZEN"; /// Equivalent to the `--preview` argument. Enables preview mode. - /// - /// Since `0.1.37`. + #[attr_since("0.1.37")] pub const UV_PREVIEW: &'static str = "UV_PREVIEW"; /// Equivalent to the `--preview-features` argument. Enables specific preview features. - /// - /// Since `0.8.4`. + #[attr_since("0.8.4")] pub const UV_PREVIEW_FEATURES: &'static str = "UV_PREVIEW_FEATURES"; /// Equivalent to the `--token` argument for self update. A GitHub token for authentication. - /// - /// Since `0.4.10`. + #[attr_since("0.4.10")] pub const UV_GITHUB_TOKEN: &'static str = "UV_GITHUB_TOKEN"; /// Equivalent to the `--no-verify-hashes` argument. Disables hash verification for /// `requirements.txt` files. - /// - /// Since `0.5.3`. + #[attr_since("0.5.3")] pub const UV_NO_VERIFY_HASHES: &'static str = "UV_NO_VERIFY_HASHES"; /// Equivalent to the `--allow-insecure-host` argument. - /// - /// Since `0.3.5`. + #[attr_since("0.3.5")] pub const UV_INSECURE_HOST: &'static str = "UV_INSECURE_HOST"; /// Disable ZIP validation for streamed wheels and ZIP-based source distributions. @@ -378,76 +320,63 @@ impl EnvVars { /// integrity checks and allowing uv to install potentially malicious ZIP files. If uv rejects /// a ZIP file due to failing validation, it is likely that the file is malformed; consider /// filing an issue with the package maintainer. - /// - /// Since `0.8.6`. + #[attr_since("0.8.6")] pub const UV_INSECURE_NO_ZIP_VALIDATION: &'static str = "UV_INSECURE_NO_ZIP_VALIDATION"; /// Sets the maximum number of in-flight concurrent downloads that uv will /// perform at any given time. - /// - /// Since `0.1.43`. + #[attr_since("0.1.43")] pub const UV_CONCURRENT_DOWNLOADS: &'static str = "UV_CONCURRENT_DOWNLOADS"; /// Sets the maximum number of source distributions that uv will build /// concurrently at any given time. - /// - /// Since `0.1.43`. + #[attr_since("0.1.43")] pub const UV_CONCURRENT_BUILDS: &'static str = "UV_CONCURRENT_BUILDS"; /// Controls the number of threads used when installing and unzipping /// packages. - /// - /// Since `0.1.45`. + #[attr_since("0.1.45")] pub const UV_CONCURRENT_INSTALLS: &'static str = "UV_CONCURRENT_INSTALLS"; /// Equivalent to the `--no-progress` command-line argument. Disables all progress output. For /// example, spinners and progress bars. - /// - /// Since `0.2.28`. + #[attr_since("0.2.28")] pub const UV_NO_PROGRESS: &'static str = "UV_NO_PROGRESS"; /// Specifies the directory where uv stores managed tools. - /// - /// Since `0.2.16`. + #[attr_since("0.2.16")] pub const UV_TOOL_DIR: &'static str = "UV_TOOL_DIR"; /// Specifies the "bin" directory for installing tool executables. - /// - /// Since `0.3.0`. + #[attr_since("0.3.0")] pub const UV_TOOL_BIN_DIR: &'static str = "UV_TOOL_BIN_DIR"; /// Equivalent to the `--build-backend` argument for `uv init`. Determines the default backend /// to use when creating a new project. - /// - /// Since `0.8.2`. + #[attr_since("0.8.2")] pub const UV_INIT_BUILD_BACKEND: &'static str = "UV_INIT_BUILD_BACKEND"; /// Specifies the path to the directory to use for a project virtual environment. /// /// See the [project documentation](../concepts/projects/config.md#project-environment-path) /// for more details. - /// - /// Since `0.4.4`. + #[attr_since("0.4.4")] pub const UV_PROJECT_ENVIRONMENT: &'static str = "UV_PROJECT_ENVIRONMENT"; /// Specifies the directory to place links to installed, managed Python executables. - /// - /// Since `0.4.29`. + #[attr_since("0.4.29")] pub const UV_PYTHON_BIN_DIR: &'static str = "UV_PYTHON_BIN_DIR"; /// Specifies the directory for storing managed Python installations. - /// - /// Since `0.2.22`. + #[attr_since("0.2.22")] pub const UV_PYTHON_INSTALL_DIR: &'static str = "UV_PYTHON_INSTALL_DIR"; /// Whether to install the Python executable into the `UV_PYTHON_BIN_DIR` directory. - /// - /// Since `0.8.0`. + #[attr_since("0.8.0")] pub const UV_PYTHON_INSTALL_BIN: &'static str = "UV_PYTHON_INSTALL_BIN"; /// Whether to install the Python executable into the Windows registry. - /// - /// Since `0.8.0`. + #[attr_since("0.8.0")] pub const UV_PYTHON_INSTALL_REGISTRY: &'static str = "UV_PYTHON_INSTALL_REGISTRY"; /// Managed Python installations information is hardcoded in the `uv` binary. @@ -456,14 +385,12 @@ impl EnvVars { /// This will allow for setting each property of the Python installation, mostly the url part for offline mirror. /// /// Note that currently, only local paths are supported. - /// - /// Since `0.6.13`. + #[attr_since("0.6.13")] pub const UV_PYTHON_DOWNLOADS_JSON_URL: &'static str = "UV_PYTHON_DOWNLOADS_JSON_URL"; /// Specifies the directory for caching the archives of managed Python installations before /// installation. - /// - /// Since `0.7.0`. + #[attr_since("0.7.0")] pub const UV_PYTHON_CACHE_DIR: &'static str = "UV_PYTHON_CACHE_DIR"; /// Managed Python installations are downloaded from the Astral @@ -473,8 +400,7 @@ impl EnvVars { /// The provided URL will replace `https://github.com/astral-sh/python-build-standalone/releases/download` in, e.g., /// `https://github.com/astral-sh/python-build-standalone/releases/download/20240713/cpython-3.12.4%2B20240713-aarch64-apple-darwin-install_only.tar.gz`. /// Distributions can be read from a local directory by using the `file://` URL scheme. - /// - /// Since `0.2.35`. + #[attr_since("0.2.35")] pub const UV_PYTHON_INSTALL_MIRROR: &'static str = "UV_PYTHON_INSTALL_MIRROR"; /// Managed PyPy installations are downloaded from [python.org](https://downloads.python.org/). @@ -484,81 +410,69 @@ impl EnvVars { /// `https://downloads.python.org/pypy` in, e.g., /// `https://downloads.python.org/pypy/pypy3.8-v7.3.7-osx64.tar.bz2`. /// Distributions can be read from a local directory by using the `file://` URL scheme. - /// - /// Since `0.2.35`. + #[attr_since("0.2.35")] pub const UV_PYPY_INSTALL_MIRROR: &'static str = "UV_PYPY_INSTALL_MIRROR"; /// Pin managed CPython versions to a specific build version. /// /// For CPython, this should be the build date (e.g., "20250814"). - /// - /// Since `0.8.14`. + #[attr_since("0.8.14")] pub const UV_PYTHON_CPYTHON_BUILD: &'static str = "UV_PYTHON_CPYTHON_BUILD"; /// Pin managed PyPy versions to a specific build version. /// /// For PyPy, this should be the PyPy version (e.g., "7.3.20"). - /// - /// Since `0.8.14`. + #[attr_since("0.8.14")] pub const UV_PYTHON_PYPY_BUILD: &'static str = "UV_PYTHON_PYPY_BUILD"; /// Pin managed GraalPy versions to a specific build version. /// /// For GraalPy, this should be the GraalPy version (e.g., "24.2.2"). - /// - /// Since `0.8.14`. + #[attr_since("0.8.14")] pub const UV_PYTHON_GRAALPY_BUILD: &'static str = "UV_PYTHON_GRAALPY_BUILD"; /// Pin managed Pyodide versions to a specific build version. /// /// For Pyodide, this should be the Pyodide version (e.g., "0.28.1"). - /// - /// Since `0.8.14`. + #[attr_since("0.8.14")] pub const UV_PYTHON_PYODIDE_BUILD: &'static str = "UV_PYTHON_PYODIDE_BUILD"; /// Equivalent to the `--clear` command-line argument. If set, uv will remove any /// existing files or directories at the target path. - /// - /// Since `0.8.0`. + #[attr_since("0.8.0")] pub const UV_VENV_CLEAR: &'static str = "UV_VENV_CLEAR"; /// Install seed packages (one or more of: `pip`, `setuptools`, and `wheel`) into the virtual environment /// created by `uv venv`. /// /// Note that `setuptools` and `wheel` are not included in Python 3.12+ environments. - /// - /// Since `0.5.21`. + #[attr_since("0.5.21")] pub const UV_VENV_SEED: &'static str = "UV_VENV_SEED"; /// Used to override `PATH` to limit Python executable availability in the test suite. - /// - /// Since `0.0.5`. #[attr_hidden] + #[attr_since("0.0.5")] pub const UV_TEST_PYTHON_PATH: &'static str = "UV_TEST_PYTHON_PATH"; /// Include resolver and installer output related to environment modifications. - /// - /// Since `0.2.32`. #[attr_hidden] + #[attr_since("0.2.32")] pub const UV_SHOW_RESOLUTION: &'static str = "UV_SHOW_RESOLUTION"; /// Use to update the json schema files. - /// - /// Since `0.1.34`. #[attr_hidden] + #[attr_since("0.1.34")] pub const UV_UPDATE_SCHEMA: &'static str = "UV_UPDATE_SCHEMA"; /// Use to disable line wrapping for diagnostics. - /// - /// Since `0.0.5`. + #[attr_since("0.0.5")] pub const UV_NO_WRAP: &'static str = "UV_NO_WRAP"; /// Provides the HTTP Basic authentication username for a named index. /// /// The `name` parameter is the name of the index. For example, given an index named `foo`, /// the environment variable key would be `UV_INDEX_FOO_USERNAME`. - /// - /// Since `0.4.23`. + #[attr_since("0.4.23")] #[attr_env_var_pattern("UV_INDEX_{name}_USERNAME")] pub fn index_username(name: &str) -> String { format!("UV_INDEX_{name}_USERNAME") @@ -568,349 +482,288 @@ impl EnvVars { /// /// The `name` parameter is the name of the index. For example, given an index named `foo`, /// the environment variable key would be `UV_INDEX_FOO_PASSWORD`. - /// - /// Since `0.4.23`. + #[attr_since("0.4.23")] #[attr_env_var_pattern("UV_INDEX_{name}_PASSWORD")] pub fn index_password(name: &str) -> String { format!("UV_INDEX_{name}_PASSWORD") } /// Used to set the uv commit hash at build time via `build.rs`. - /// - /// Since `0.1.11`. #[attr_hidden] + #[attr_since("0.1.11")] pub const UV_COMMIT_HASH: &'static str = "UV_COMMIT_HASH"; /// Used to set the uv commit short hash at build time via `build.rs`. - /// - /// Since `0.1.11`. #[attr_hidden] + #[attr_since("0.1.11")] pub const UV_COMMIT_SHORT_HASH: &'static str = "UV_COMMIT_SHORT_HASH"; /// Used to set the uv commit date at build time via `build.rs`. - /// - /// Since `0.1.11`. #[attr_hidden] + #[attr_since("0.1.11")] pub const UV_COMMIT_DATE: &'static str = "UV_COMMIT_DATE"; /// Used to set the uv tag at build time via `build.rs`. - /// - /// Since `0.1.11`. #[attr_hidden] + #[attr_since("0.1.11")] pub const UV_LAST_TAG: &'static str = "UV_LAST_TAG"; /// Used to set the uv tag distance from head at build time via `build.rs`. - /// - /// Since `0.1.11`. #[attr_hidden] + #[attr_since("0.1.11")] pub const UV_LAST_TAG_DISTANCE: &'static str = "UV_LAST_TAG_DISTANCE"; /// Used to set the spawning/parent interpreter when using --system in the test suite. - /// - /// Since `0.2.0`. #[attr_hidden] + #[attr_since("0.2.0")] pub const UV_INTERNAL__PARENT_INTERPRETER: &'static str = "UV_INTERNAL__PARENT_INTERPRETER"; /// Used to force showing the derivation tree during resolver error reporting. - /// - /// Since `0.3.0`. #[attr_hidden] + #[attr_since("0.3.0")] pub const UV_INTERNAL__SHOW_DERIVATION_TREE: &'static str = "UV_INTERNAL__SHOW_DERIVATION_TREE"; /// Used to set a temporary directory for some tests. - /// - /// Since `0.3.4`. #[attr_hidden] + #[attr_since("0.3.4")] pub const UV_INTERNAL__TEST_DIR: &'static str = "UV_INTERNAL__TEST_DIR"; /// Used to force treating an interpreter as "managed" during tests. - /// - /// Since `0.8.0`. #[attr_hidden] + #[attr_since("0.8.0")] pub const UV_INTERNAL__TEST_PYTHON_MANAGED: &'static str = "UV_INTERNAL__TEST_PYTHON_MANAGED"; /// Path to system-level configuration directory on Unix systems. - /// - /// Since `0.4.26`. + #[attr_since("0.4.26")] pub const XDG_CONFIG_DIRS: &'static str = "XDG_CONFIG_DIRS"; /// Path to system-level configuration directory on Windows systems. - /// - /// Since `0.4.26`. + #[attr_since("0.4.26")] pub const SYSTEMDRIVE: &'static str = "SYSTEMDRIVE"; /// Path to user-level configuration directory on Windows systems. - /// - /// Since `0.1.42`. + #[attr_since("0.1.42")] pub const APPDATA: &'static str = "APPDATA"; /// Path to root directory of user's profile on Windows systems. - /// - /// Since `0.0.5`. + #[attr_since("0.0.5")] pub const USERPROFILE: &'static str = "USERPROFILE"; /// Path to user-level configuration directory on Unix systems. - /// - /// Since `0.1.34`. + #[attr_since("0.1.34")] pub const XDG_CONFIG_HOME: &'static str = "XDG_CONFIG_HOME"; /// Path to cache directory on Unix systems. - /// - /// Since `0.1.17`. + #[attr_since("0.1.17")] pub const XDG_CACHE_HOME: &'static str = "XDG_CACHE_HOME"; /// Path to directory for storing managed Python installations and tools. - /// - /// Since `0.2.16`. + #[attr_since("0.2.16")] pub const XDG_DATA_HOME: &'static str = "XDG_DATA_HOME"; /// Path to directory where executables are installed. - /// - /// Since `0.2.16`. + #[attr_since("0.2.16")] pub const XDG_BIN_HOME: &'static str = "XDG_BIN_HOME"; /// Custom certificate bundle file path for SSL connections. - /// - /// Since `0.1.14`. + #[attr_since("0.1.14")] pub const SSL_CERT_FILE: &'static str = "SSL_CERT_FILE"; /// If set, uv will use this file for mTLS authentication. /// This should be a single file containing both the certificate and the private key in PEM format. - /// - /// Since `0.2.11`. + #[attr_since("0.2.11")] pub const SSL_CLIENT_CERT: &'static str = "SSL_CLIENT_CERT"; /// Proxy for HTTP requests. - /// - /// Since `0.1.38`. + #[attr_since("0.1.38")] pub const HTTP_PROXY: &'static str = "HTTP_PROXY"; /// Proxy for HTTPS requests. - /// - /// Since `0.1.38`. + #[attr_since("0.1.38")] pub const HTTPS_PROXY: &'static str = "HTTPS_PROXY"; /// General proxy for all network requests. - /// - /// Since `0.1.38`. + #[attr_since("0.1.38")] pub const ALL_PROXY: &'static str = "ALL_PROXY"; /// Comma-separated list of hostnames (e.g., `example.com`) and/or patterns (e.g., `192.168.1.0/24`) that should bypass the proxy. - /// - /// Since `0.1.38`. + #[attr_since("0.1.38")] pub const NO_PROXY: &'static str = "NO_PROXY"; /// Timeout (in seconds) for HTTP requests. (default: 30 s) - /// - /// Since `0.1.7`. + #[attr_since("0.1.7")] pub const UV_HTTP_TIMEOUT: &'static str = "UV_HTTP_TIMEOUT"; /// The number of retries for HTTP requests. (default: 3) - /// - /// Since `0.7.21`. + #[attr_since("0.7.21")] pub const UV_HTTP_RETRIES: &'static str = "UV_HTTP_RETRIES"; /// Timeout (in seconds) for HTTP requests. Equivalent to `UV_HTTP_TIMEOUT`. - /// - /// Since `0.1.6`. + #[attr_since("0.1.6")] pub const UV_REQUEST_TIMEOUT: &'static str = "UV_REQUEST_TIMEOUT"; /// Timeout (in seconds) for HTTP requests. Equivalent to `UV_HTTP_TIMEOUT`. - /// - /// Since `0.1.7`. + #[attr_since("0.1.7")] pub const HTTP_TIMEOUT: &'static str = "HTTP_TIMEOUT"; /// The validation modes to use when run with `--compile`. /// /// See [`PycInvalidationMode`](https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode). - /// - /// Since `0.1.7`. + #[attr_since("0.1.7")] pub const PYC_INVALIDATION_MODE: &'static str = "PYC_INVALIDATION_MODE"; /// Used to detect an activated virtual environment. - /// - /// Since `0.0.5`. + #[attr_since("0.0.5")] pub const VIRTUAL_ENV: &'static str = "VIRTUAL_ENV"; /// Used to detect the path of an active Conda environment. - /// - /// Since `0.0.5`. + #[attr_since("0.0.5")] pub const CONDA_PREFIX: &'static str = "CONDA_PREFIX"; /// Used to determine the name of the active Conda environment. - /// - /// Since `0.5.0`. + #[attr_since("0.5.0")] pub const CONDA_DEFAULT_ENV: &'static str = "CONDA_DEFAULT_ENV"; /// Used to determine the root install path of Conda. - /// - /// Since `0.8.18`. + #[attr_since("0.8.18")] pub const CONDA_ROOT: &'static str = "_CONDA_ROOT"; /// If set to `1` before a virtual environment is activated, then the /// virtual environment name will not be prepended to the terminal prompt. - /// - /// Since `0.0.5`. + #[attr_since("0.0.5")] pub const VIRTUAL_ENV_DISABLE_PROMPT: &'static str = "VIRTUAL_ENV_DISABLE_PROMPT"; /// Used to detect the use of the Windows Command Prompt (as opposed to PowerShell). - /// - /// Since `0.1.16`. + #[attr_since("0.1.16")] pub const PROMPT: &'static str = "PROMPT"; /// Used to detect `NuShell` usage. - /// - /// Since `0.1.16`. + #[attr_since("0.1.16")] pub const NU_VERSION: &'static str = "NU_VERSION"; /// Used to detect Fish shell usage. - /// - /// Since `0.1.28`. + #[attr_since("0.1.28")] pub const FISH_VERSION: &'static str = "FISH_VERSION"; /// Used to detect Bash shell usage. - /// - /// Since `0.1.28`. + #[attr_since("0.1.28")] pub const BASH_VERSION: &'static str = "BASH_VERSION"; /// Used to detect Zsh shell usage. - /// - /// Since `0.1.28`. + #[attr_since("0.1.28")] pub const ZSH_VERSION: &'static str = "ZSH_VERSION"; /// Used to determine which `.zshenv` to use when Zsh is being used. - /// - /// Since `0.2.25`. + #[attr_since("0.2.25")] pub const ZDOTDIR: &'static str = "ZDOTDIR"; /// Used to detect Ksh shell usage. - /// - /// Since `0.2.33`. + #[attr_since("0.2.33")] pub const KSH_VERSION: &'static str = "KSH_VERSION"; /// Used with `--python-platform macos` and related variants to set the /// deployment target (i.e., the minimum supported macOS version). /// /// Defaults to `13.0`, the least-recent non-EOL macOS version at time of writing. - /// - /// Since `0.1.42`. + #[attr_since("0.1.42")] pub const MACOSX_DEPLOYMENT_TARGET: &'static str = "MACOSX_DEPLOYMENT_TARGET"; /// Used with `--python-platform arm64-apple-ios` and related variants to set the /// deployment target (i.e., the minimum supported iOS version). /// /// Defaults to `13.0`. - /// - /// Since `0.8.16`. + #[attr_since("0.8.16")] pub const IPHONEOS_DEPLOYMENT_TARGET: &'static str = "IPHONEOS_DEPLOYMENT_TARGET"; /// Used with `--python-platform aarch64-linux-android` and related variants to set the /// Android API level. (i.e., the minimum supported Android API level). /// /// Defaults to `24`. - /// - /// Since `0.8.16`. + #[attr_since("0.8.16")] pub const ANDROID_API_LEVEL: &'static str = "ANDROID_API_LEVEL"; /// Disables colored output (takes precedence over `FORCE_COLOR`). /// /// See [no-color.org](https://no-color.org). - /// - /// Since `0.2.7`. + #[attr_since("0.2.7")] pub const NO_COLOR: &'static str = "NO_COLOR"; /// Forces colored output regardless of terminal support. /// /// See [force-color.org](https://force-color.org). - /// - /// Since `0.2.7`. + #[attr_since("0.2.7")] pub const FORCE_COLOR: &'static str = "FORCE_COLOR"; /// Use to control color via `anstyle`. - /// - /// Since `0.1.32`. + #[attr_since("0.1.32")] pub const CLICOLOR_FORCE: &'static str = "CLICOLOR_FORCE"; /// The standard `PATH` env var. - /// - /// Since `0.0.5`. + #[attr_since("0.0.5")] pub const PATH: &'static str = "PATH"; /// The standard `HOME` env var. - /// - /// Since `0.0.5`. + #[attr_since("0.0.5")] pub const HOME: &'static str = "HOME"; /// The standard `SHELL` posix env var. - /// - /// Since `0.1.16`. + #[attr_since("0.1.16")] pub const SHELL: &'static str = "SHELL"; /// The standard `PWD` posix env var. - /// - /// Since `0.0.5`. + #[attr_since("0.0.5")] pub const PWD: &'static str = "PWD"; /// Used to look for Microsoft Store Pythons installations. - /// - /// Since `0.3.3`. + #[attr_since("0.3.3")] pub const LOCALAPPDATA: &'static str = "LOCALAPPDATA"; /// Path to the `.git` directory. Ignored by `uv` when performing fetch. - /// - /// Since `0.0.5`. #[attr_hidden] + #[attr_since("0.0.5")] pub const GIT_DIR: &'static str = "GIT_DIR"; /// Path to the git working tree. Ignored by `uv` when performing fetch. - /// - /// Since `0.0.5`. #[attr_hidden] + #[attr_since("0.0.5")] pub const GIT_WORK_TREE: &'static str = "GIT_WORK_TREE"; /// Path to the index file for staged changes. Ignored by `uv` when performing fetch. - /// - /// Since `0.0.5`. #[attr_hidden] + #[attr_since("0.0.5")] pub const GIT_INDEX_FILE: &'static str = "GIT_INDEX_FILE"; /// Path to where git object files are located. Ignored by `uv` when performing fetch. - /// - /// Since `0.0.5`. #[attr_hidden] + #[attr_since("0.0.5")] pub const GIT_OBJECT_DIRECTORY: &'static str = "GIT_OBJECT_DIRECTORY"; /// Alternate locations for git objects. Ignored by `uv` when performing fetch. - /// - /// Since `0.0.5`. #[attr_hidden] + #[attr_since("0.0.5")] pub const GIT_ALTERNATE_OBJECT_DIRECTORIES: &'static str = "GIT_ALTERNATE_OBJECT_DIRECTORIES"; /// Disables SSL verification for git operations. - /// - /// Since `0.5.28`. #[attr_hidden] + #[attr_since("0.5.28")] pub const GIT_SSL_NO_VERIFY: &'static str = "GIT_SSL_NO_VERIFY"; /// Sets allowed protocols for git operations. /// /// When uv is in "offline" mode, only the "file" protocol is allowed. - /// - /// Since `0.6.13`. #[attr_hidden] + #[attr_since("0.6.13")] pub const GIT_ALLOW_PROTOCOL: &'static str = "GIT_ALLOW_PROTOCOL"; /// Sets the SSH command used when Git tries to establish a connection using SSH. - /// - /// Since `0.7.11`. #[attr_hidden] + #[attr_since("0.7.11")] pub const GIT_SSH_COMMAND: &'static str = "GIT_SSH_COMMAND"; /// Disable interactive git prompts in terminals, e.g., for credentials. Does not disable /// GUI prompts. - /// - /// Since `0.6.4`. #[attr_hidden] + #[attr_since("0.6.4")] pub const GIT_TERMINAL_PROMPT: &'static str = "GIT_TERMINAL_PROMPT"; /// Used in tests for better git isolation. @@ -921,110 +774,92 @@ impl EnvVars { /// `GIT_CEILING_DIRECTORIES=/home/andrew/.local/share/uv/tests` will /// prevent git from crawling up the directory tree past that point to find /// parent git repositories. - /// - /// Since `0.4.29`. #[attr_hidden] + #[attr_since("0.4.29")] pub const GIT_CEILING_DIRECTORIES: &'static str = "GIT_CEILING_DIRECTORIES"; /// Indicates that the current process is running in GitHub Actions. /// /// `uv publish` may attempt trusted publishing flows when set /// to `true`. - /// - /// Since `0.4.16`. + #[attr_since("0.4.16")] pub const GITHUB_ACTIONS: &'static str = "GITHUB_ACTIONS"; /// Indicates that the current process is running in GitLab CI. /// /// `uv publish` may attempt trusted publishing flows when set /// to `true`. - /// - /// Since `0.8.18`. + #[attr_since("0.8.18")] pub const GITLAB_CI: &'static str = "GITLAB_CI"; /// Sets the encoding for standard I/O streams (e.g., PYTHONIOENCODING=utf-8). - /// - /// Since `0.4.18`. #[attr_hidden] + #[attr_since("0.4.18")] pub const PYTHONIOENCODING: &'static str = "PYTHONIOENCODING"; /// Forces unbuffered I/O streams, equivalent to `-u` in Python. - /// - /// Since `0.1.15`. #[attr_hidden] + #[attr_since("0.1.15")] pub const PYTHONUNBUFFERED: &'static str = "PYTHONUNBUFFERED"; /// Enables UTF-8 mode for Python, equivalent to `-X utf8`. - /// - /// Since `0.4.19`. #[attr_hidden] + #[attr_since("0.4.19")] pub const PYTHONUTF8: &'static str = "PYTHONUTF8"; /// Adds directories to Python module search path (e.g., `PYTHONPATH=/path/to/modules`). - /// - /// Since `0.1.22`. + #[attr_since("0.1.22")] pub const PYTHONPATH: &'static str = "PYTHONPATH"; /// Used in tests to enforce a consistent locale setting. - /// - /// Since `0.4.28`. #[attr_hidden] + #[attr_since("0.4.28")] pub const LC_ALL: &'static str = "LC_ALL"; /// Typically set by CI runners, used to detect a CI runner. - /// - /// Since `0.0.5`. #[attr_hidden] + #[attr_since("0.0.5")] pub const CI: &'static str = "CI"; /// Azure DevOps build identifier, used to detect CI environments. - /// - /// Since `0.1.22`. #[attr_hidden] + #[attr_since("0.1.22")] pub const BUILD_BUILDID: &'static str = "BUILD_BUILDID"; /// Generic build identifier, used to detect CI environments. - /// - /// Since `0.1.22`. #[attr_hidden] + #[attr_since("0.1.22")] pub const BUILD_ID: &'static str = "BUILD_ID"; /// Pip environment variable to indicate CI environment. - /// - /// Since `0.1.22`. #[attr_hidden] + #[attr_since("0.1.22")] pub const PIP_IS_CI: &'static str = "PIP_IS_CI"; /// Use to set the .netrc file location. - /// - /// Since `0.1.16`. + #[attr_since("0.1.16")] pub const NETRC: &'static str = "NETRC"; /// The standard `PAGER` posix env var. Used by `uv` to configure the appropriate pager. - /// - /// Since `0.4.18`. + #[attr_since("0.4.18")] pub const PAGER: &'static str = "PAGER"; /// Used to detect when running inside a Jupyter notebook. - /// - /// Since `0.2.6`. + #[attr_since("0.2.6")] pub const JPY_SESSION_NAME: &'static str = "JPY_SESSION_NAME"; /// Use to create the tracing root directory via the `tracing-durations-export` feature. - /// - /// Since `0.1.32`. #[attr_hidden] + #[attr_since("0.1.32")] pub const TRACING_DURATIONS_TEST_ROOT: &'static str = "TRACING_DURATIONS_TEST_ROOT"; /// Use to create the tracing durations file via the `tracing-durations-export` feature. - /// - /// Since `0.0.5`. + #[attr_since("0.0.5")] pub const TRACING_DURATIONS_FILE: &'static str = "TRACING_DURATIONS_FILE"; /// Used to set `RUST_HOST_TARGET` at build time via `build.rs`. - /// - /// Since `0.1.11`. #[attr_hidden] + #[attr_since("0.1.11")] pub const TARGET: &'static str = "TARGET"; /// If set, uv will use this value as the log level for its `--verbose` output. Accepts @@ -1037,8 +872,7 @@ impl EnvVars { /// /// See the [tracing documentation](https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#example-syntax) /// for more. - /// - /// Since `0.0.5`. + #[attr_since("0.0.5")] pub const RUST_LOG: &'static str = "RUST_LOG"; /// If set, it can be used to display more stack trace details when a panic occurs. @@ -1051,15 +885,13 @@ impl EnvVars { /// /// See the [Rust backtrace documentation](https://doc.rust-lang.org/std/backtrace/index.html) /// for more. - /// - /// Since `0.7.22`. + #[attr_since("0.7.22")] pub const RUST_BACKTRACE: &'static str = "RUST_BACKTRACE"; /// Add additional context and structure to log messages. /// /// If logging is not enabled, e.g., with `RUST_LOG` or `-v`, this has no effect. - /// - /// Since `0.6.4`. + #[attr_since("0.6.4")] pub const UV_LOG_CONTEXT: &'static str = "UV_LOG_CONTEXT"; /// Use to set the stack size used by uv. @@ -1071,8 +903,7 @@ impl EnvVars { /// stack size, because we actually spawn our own main2 thread to work around /// the fact that Windows' real main thread is only 1MB. That thread has size /// `max(UV_STACK_SIZE, 1MB)`. - /// - /// Since `0.0.5`. + #[attr_since("0.0.5")] pub const UV_STACK_SIZE: &'static str = "UV_STACK_SIZE"; /// Use to set the stack size used by uv. @@ -1087,252 +918,209 @@ impl EnvVars { /// stack size, because we actually spawn our own main2 thread to work around /// the fact that Windows' real main thread is only 1MB. That thread has size /// `max(RUST_MIN_STACK, 1MB)`. - /// - /// Since `0.5.19`. + #[attr_since("0.5.19")] pub const RUST_MIN_STACK: &'static str = "RUST_MIN_STACK"; /// The directory containing the `Cargo.toml` manifest for a package. - /// - /// Since `0.1.11`. #[attr_hidden] + #[attr_since("0.1.11")] pub const CARGO_MANIFEST_DIR: &'static str = "CARGO_MANIFEST_DIR"; /// Specifies the directory where Cargo stores build artifacts (target directory). - /// - /// Since `0.0.5`. #[attr_hidden] + #[attr_since("0.0.5")] pub const CARGO_TARGET_DIR: &'static str = "CARGO_TARGET_DIR"; /// Used in tests for environment substitution testing in `requirements.in`. - /// - /// Since `0.1.18`. #[attr_hidden] + #[attr_since("0.1.18")] pub const URL: &'static str = "URL"; /// Used in tests for environment substitution testing in `requirements.in`. - /// - /// Since `0.1.18`. #[attr_hidden] + #[attr_since("0.1.18")] pub const FILE_PATH: &'static str = "FILE_PATH"; /// Used in tests for environment substitution testing in `requirements.in`. - /// - /// Since `0.1.25`. #[attr_hidden] + #[attr_since("0.1.25")] pub const HATCH_PATH: &'static str = "HATCH_PATH"; /// Used in tests for environment substitution testing in `requirements.in`. - /// - /// Since `0.1.25`. #[attr_hidden] + #[attr_since("0.1.25")] pub const BLACK_PATH: &'static str = "BLACK_PATH"; /// Used in testing Hatch's root.uri feature /// /// See: . - /// - /// Since `0.1.22`. #[attr_hidden] + #[attr_since("0.1.22")] pub const ROOT_PATH: &'static str = "ROOT_PATH"; /// Used in testing extra build dependencies. - /// - /// Since `0.8.5`. #[attr_hidden] + #[attr_since("0.8.5")] pub const EXPECTED_ANYIO_VERSION: &'static str = "EXPECTED_ANYIO_VERSION"; /// Used to set test credentials for keyring tests. - /// - /// Since `0.1.34`. #[attr_hidden] + #[attr_since("0.1.34")] pub const KEYRING_TEST_CREDENTIALS: &'static str = "KEYRING_TEST_CREDENTIALS"; /// Used to disable delay for HTTP retries in tests. - /// - /// Since `0.7.21`. + #[attr_since("0.7.21")] pub const UV_TEST_NO_HTTP_RETRY_DELAY: &'static str = "UV_TEST_NO_HTTP_RETRY_DELAY"; /// Used to set a packse index url for tests. - /// - /// Since `0.2.12`. #[attr_hidden] + #[attr_since("0.2.12")] pub const UV_TEST_PACKSE_INDEX: &'static str = "UV_TEST_PACKSE_INDEX"; /// Used for testing named indexes in tests. - /// - /// Since `0.5.21`. #[attr_hidden] + #[attr_since("0.5.21")] pub const UV_INDEX_MY_INDEX_USERNAME: &'static str = "UV_INDEX_MY_INDEX_USERNAME"; /// Used for testing named indexes in tests. - /// - /// Since `0.5.21`. #[attr_hidden] + #[attr_since("0.5.21")] pub const UV_INDEX_MY_INDEX_PASSWORD: &'static str = "UV_INDEX_MY_INDEX_PASSWORD"; /// Used to set the GitHub fast-path url for tests. - /// - /// Since `0.7.15`. #[attr_hidden] + #[attr_since("0.7.15")] pub const UV_GITHUB_FAST_PATH_URL: &'static str = "UV_GITHUB_FAST_PATH_URL"; /// Hide progress messages with non-deterministic order in tests. - /// - /// Since `0.5.29`. #[attr_hidden] + #[attr_since("0.5.29")] pub const UV_TEST_NO_CLI_PROGRESS: &'static str = "UV_TEST_NO_CLI_PROGRESS"; /// `.env` files from which to load environment variables when executing `uv run` commands. - /// - /// Since `0.4.30`. + #[attr_since("0.4.30")] pub const UV_ENV_FILE: &'static str = "UV_ENV_FILE"; /// Ignore `.env` files when executing `uv run` commands. - /// - /// Since `0.4.30`. + #[attr_since("0.4.30")] pub const UV_NO_ENV_FILE: &'static str = "UV_NO_ENV_FILE"; /// The URL from which to download uv using the standalone installer and `self update` feature, /// in lieu of the default GitHub URL. - /// - /// Since `0.5.0`. + #[attr_since("0.5.0")] pub const UV_INSTALLER_GITHUB_BASE_URL: &'static str = "UV_INSTALLER_GITHUB_BASE_URL"; /// The URL from which to download uv using the standalone installer and `self update` feature, /// in lieu of the default GitHub Enterprise URL. - /// - /// Since `0.5.0`. + #[attr_since("0.5.0")] pub const UV_INSTALLER_GHE_BASE_URL: &'static str = "UV_INSTALLER_GHE_BASE_URL"; /// The directory in which to install uv using the standalone installer and `self update` feature. /// Defaults to `~/.local/bin`. - /// - /// Since `0.5.0`. + #[attr_since("0.5.0")] pub const UV_INSTALL_DIR: &'static str = "UV_INSTALL_DIR"; /// Used ephemeral environments like CI to install uv to a specific path while preventing /// the installer from modifying shell profiles or environment variables. - /// - /// Since `0.5.0`. + #[attr_since("0.5.0")] pub const UV_UNMANAGED_INSTALL: &'static str = "UV_UNMANAGED_INSTALL"; /// The URL from which to download uv using the standalone installer. By default, installs from /// uv's GitHub Releases. `INSTALLER_DOWNLOAD_URL` is also supported as an alias, for backwards /// compatibility. - /// - /// Since `0.8.4`. + #[attr_since("0.8.4")] pub const UV_DOWNLOAD_URL: &'static str = "UV_DOWNLOAD_URL"; /// Avoid modifying the `PATH` environment variable when installing uv using the standalone /// installer and `self update` feature. `INSTALLER_NO_MODIFY_PATH` is also supported as an /// alias, for backwards compatibility. - /// - /// Since `0.8.4`. + #[attr_since("0.8.4")] pub const UV_NO_MODIFY_PATH: &'static str = "UV_NO_MODIFY_PATH"; /// Skip writing `uv` installer metadata files (e.g., `INSTALLER`, `REQUESTED`, and `direct_url.json`) to site-packages `.dist-info` directories. - /// - /// Since `0.5.7`. + #[attr_since("0.5.7")] pub const UV_NO_INSTALLER_METADATA: &'static str = "UV_NO_INSTALLER_METADATA"; /// Enables fetching files stored in Git LFS when installing a package from a Git repository. - /// - /// Since `0.5.19`. + #[attr_since("0.5.19")] pub const UV_GIT_LFS: &'static str = "UV_GIT_LFS"; /// Number of times that `uv run` has been recursively invoked. Used to guard against infinite /// recursion, e.g., when `uv run`` is used in a script shebang. - /// - /// Since `0.5.31`. #[attr_hidden] + #[attr_since("0.5.31")] pub const UV_RUN_RECURSION_DEPTH: &'static str = "UV_RUN_RECURSION_DEPTH"; /// Number of times that `uv run` will allow recursive invocations, before exiting with an /// error. - /// - /// Since `0.5.31`. #[attr_hidden] + #[attr_since("0.5.31")] pub const UV_RUN_MAX_RECURSION_DEPTH: &'static str = "UV_RUN_MAX_RECURSION_DEPTH"; /// Overrides terminal width used for wrapping. This variable is not read by uv directly. /// /// This is a quasi-standard variable, described, e.g., in `ncurses(3x)`. - /// - /// Since `0.6.2`. + #[attr_since("0.6.2")] pub const COLUMNS: &'static str = "COLUMNS"; /// The CUDA driver version to assume when inferring the PyTorch backend (e.g., `550.144.03`). - /// - /// Since `0.6.9`. #[attr_hidden] + #[attr_since("0.6.9")] pub const UV_CUDA_DRIVER_VERSION: &'static str = "UV_CUDA_DRIVER_VERSION"; /// The AMD GPU architecture to assume when inferring the PyTorch backend (e.g., `gfx1100`). - /// - /// Since `0.7.14`. #[attr_hidden] + #[attr_since("0.7.14")] pub const UV_AMD_GPU_ARCHITECTURE: &'static str = "UV_AMD_GPU_ARCHITECTURE"; /// Equivalent to the `--torch-backend` command-line argument (e.g., `cpu`, `cu126`, or `auto`). - /// - /// Since `0.6.9`. + #[attr_since("0.6.9")] pub const UV_TORCH_BACKEND: &'static str = "UV_TORCH_BACKEND"; /// Equivalent to the `--project` command-line argument. - /// - /// Since `0.4.4`. + #[attr_since("0.4.4")] pub const UV_PROJECT: &'static str = "UV_PROJECT"; /// Disable GitHub-specific requests that allow uv to skip `git fetch` in some circumstances. - /// - /// Since `0.7.13`. + #[attr_since("0.7.13")] pub const UV_NO_GITHUB_FAST_PATH: &'static str = "UV_NO_GITHUB_FAST_PATH"; /// Authentication token for Hugging Face requests. When set, uv will use this token /// when making requests to `https://huggingface.co/` and any subdomains. - /// - /// Since `0.8.1`. + #[attr_since("0.8.1")] pub const HF_TOKEN: &'static str = "HF_TOKEN"; /// Disable Hugging Face authentication, even if `HF_TOKEN` is set. - /// - /// Since `0.8.1`. + #[attr_since("0.8.1")] pub const UV_NO_HF_TOKEN: &'static str = "UV_NO_HF_TOKEN"; /// The URL of the pyx Simple API server. - /// - /// Since `0.8.15`. + #[attr_since("0.8.15")] pub const PYX_API_URL: &'static str = "PYX_API_URL"; /// The domain of the pyx CDN. - /// - /// Since `0.8.15`. + #[attr_since("0.8.15")] pub const PYX_CDN_DOMAIN: &'static str = "PYX_CDN_DOMAIN"; /// The pyx API key (e.g., `sk-pyx-...`). - /// - /// Since `0.8.15`. + #[attr_since("0.8.15")] pub const PYX_API_KEY: &'static str = "PYX_API_KEY"; /// The pyx API key, for backwards compatibility. - /// - /// Since `0.8.15`. #[attr_hidden] + #[attr_since("0.8.15")] pub const UV_API_KEY: &'static str = "UV_API_KEY"; /// The pyx authentication token (e.g., `eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...`), as output by `uv auth token`. - /// - /// Since `0.8.15`. + #[attr_since("0.8.15")] pub const PYX_AUTH_TOKEN: &'static str = "PYX_AUTH_TOKEN"; /// The pyx authentication token, for backwards compatibility. - /// - /// Since `0.8.15`. #[attr_hidden] + #[attr_since("0.8.15")] pub const UV_AUTH_TOKEN: &'static str = "UV_AUTH_TOKEN"; /// Specifies the directory where uv stores pyx credentials. - /// - /// Since `0.8.15`. + #[attr_since("0.8.15")] pub const PYX_CREDENTIALS_DIR: &'static str = "PYX_CREDENTIALS_DIR"; } diff --git a/docs/reference/environment.md b/docs/reference/environment.md index b0771afaf..075f41f6e 100644 --- a/docs/reference/environment.md +++ b/docs/reference/environment.md @@ -3,6 +3,7 @@ uv defines and respects the following environment variables: ### `UV_BREAK_SYSTEM_PACKAGES` +Since `0.1.32` Equivalent to the `--break-system-packages` command-line argument. If set to `true`, uv will allow the installation of packages that conflict with system-installed packages. @@ -11,77 +12,66 @@ WARNING: `UV_BREAK_SYSTEM_PACKAGES=true` is intended for use in continuous integ (CI) or containerized environments and should be used with caution, as modifying the system Python can lead to unexpected behavior. -Since `0.1.32`. - ### `UV_BUILD_CONSTRAINT` +Since `0.2.34` Equivalent to the `--build-constraint` command-line argument. If set, uv will use this file as constraints for any source distribution builds. Uses space-separated list of files. -Since `0.2.34`. - ### `UV_CACHE_DIR` +Since `0.0.5` Equivalent to the `--cache-dir` command-line argument. If set, uv will use this directory for caching instead of the default cache directory. -Since `0.0.5`. - ### `UV_COMPILE_BYTECODE` +Since `0.3.3` Equivalent to the `--compile-bytecode` command-line argument. If set, uv will compile Python source files to bytecode after installation. -Since `0.3.3`. - ### `UV_COMPILE_BYTECODE_TIMEOUT` +Since `0.7.22` Timeout (in seconds) for bytecode compilation. -Since `0.7.22`. - ### `UV_CONCURRENT_BUILDS` +Since `0.1.43` Sets the maximum number of source distributions that uv will build concurrently at any given time. -Since `0.1.43`. - ### `UV_CONCURRENT_DOWNLOADS` +Since `0.1.43` Sets the maximum number of in-flight concurrent downloads that uv will perform at any given time. -Since `0.1.43`. - ### `UV_CONCURRENT_INSTALLS` +Since `0.1.45` Controls the number of threads used when installing and unzipping packages. -Since `0.1.45`. - ### `UV_CONFIG_FILE` +Since `0.1.34` Equivalent to the `--config-file` command-line argument. Expects a path to a local `uv.toml` file to use as the configuration file. -Since `0.1.34`. - ### `UV_CONSTRAINT` +Since `0.1.36` Equivalent to the `--constraint` command-line argument. If set, uv will use this file as the constraints file. Uses space-separated list of files. -Since `0.1.36`. - ### `UV_CREDENTIALS_DIR` +Since `0.8.15` The directory for storage of credentials when using a plain text backend. -Since `0.8.15`. - ### `UV_CUSTOM_COMPILE_COMMAND` +Since `0.1.23` Equivalent to the `--custom-compile-command` command-line argument. @@ -89,104 +79,89 @@ Used to override uv in the output header of the `requirements.txt` files generat `uv pip compile`. Intended for use-cases in which `uv pip compile` is called from within a wrapper script, to include the name of the wrapper script in the output file. -Since `0.1.23`. - ### `UV_DEFAULT_INDEX` +Since `0.4.23` Equivalent to the `--default-index` command-line argument. If set, uv will use this URL as the default index when searching for packages. -Since `0.4.23`. - ### `UV_DEV` +Since `0.8.7` Equivalent to the `--dev` command-line argument. If set, uv will include development dependencies. -Since `0.8.7`. - ### `UV_DOWNLOAD_URL` +Since `0.8.4` The URL from which to download uv using the standalone installer. By default, installs from uv's GitHub Releases. `INSTALLER_DOWNLOAD_URL` is also supported as an alias, for backwards compatibility. -Since `0.8.4`. - ### `UV_ENV_FILE` +Since `0.4.30` `.env` files from which to load environment variables when executing `uv run` commands. -Since `0.4.30`. - ### `UV_EXCLUDE_NEWER` +Since `0.2.12` Equivalent to the `--exclude-newer` command-line argument. If set, uv will exclude distributions published after the specified date. -Since `0.2.12`. - ### `UV_EXTRA_INDEX_URL` +Since `0.1.3` Equivalent to the `--extra-index-url` command-line argument. If set, uv will use this space-separated list of URLs as additional indexes when searching for packages. (Deprecated: use `UV_INDEX` instead.) -Since `0.1.3`. - ### `UV_FIND_LINKS` +Since `0.4.19` Equivalent to the `--find-links` command-line argument. If set, uv will use this comma-separated list of additional locations to search for packages. -Since `0.4.19`. - ### `UV_FORK_STRATEGY` +Since `0.5.9` Equivalent to the `--fork-strategy` argument. Controls version selection during universal resolution. -Since `0.5.9`. - ### `UV_FROZEN` +Since `0.4.25` Equivalent to the `--frozen` command-line argument. If set, uv will run without updating the `uv.lock` file. -Since `0.4.25`. - ### `UV_GITHUB_TOKEN` +Since `0.4.10` Equivalent to the `--token` argument for self update. A GitHub token for authentication. -Since `0.4.10`. - ### `UV_GIT_LFS` +Since `0.5.19` Enables fetching files stored in Git LFS when installing a package from a Git repository. -Since `0.5.19`. - ### `UV_HTTP_RETRIES` +Since `0.7.21` The number of retries for HTTP requests. (default: 3) -Since `0.7.21`. - ### `UV_HTTP_TIMEOUT` +Since `0.1.7` Timeout (in seconds) for HTTP requests. (default: 30 s) -Since `0.1.7`. - ### `UV_INDEX` +Since `0.4.23` Equivalent to the `--index` command-line argument. If set, uv will use this space-separated list of URLs as additional indexes when searching for packages. -Since `0.4.23`. - ### `UV_INDEX_STRATEGY` +Since `0.1.29` Equivalent to the `--index-strategy` command-line argument. @@ -194,48 +169,42 @@ For example, if set to `unsafe-best-match`, uv will consider versions of a given available across all index URLs, rather than limiting its search to the first index URL that contains the package. -Since `0.1.29`. - ### `UV_INDEX_URL` +Since `0.0.5` Equivalent to the `--index-url` command-line argument. If set, uv will use this URL as the default index when searching for packages. (Deprecated: use `UV_DEFAULT_INDEX` instead.) -Since `0.0.5`. - ### `UV_INDEX_{name}_PASSWORD` +Since `0.4.23` Provides the HTTP Basic authentication password for a named index. The `name` parameter is the name of the index. For example, given an index named `foo`, the environment variable key would be `UV_INDEX_FOO_PASSWORD`. -Since `0.4.23`. - ### `UV_INDEX_{name}_USERNAME` +Since `0.4.23` Provides the HTTP Basic authentication username for a named index. The `name` parameter is the name of the index. For example, given an index named `foo`, the environment variable key would be `UV_INDEX_FOO_USERNAME`. -Since `0.4.23`. - ### `UV_INIT_BUILD_BACKEND` +Since `0.8.2` Equivalent to the `--build-backend` argument for `uv init`. Determines the default backend to use when creating a new project. -Since `0.8.2`. - ### `UV_INSECURE_HOST` +Since `0.3.5` Equivalent to the `--allow-insecure-host` argument. -Since `0.3.5`. - ### `UV_INSECURE_NO_ZIP_VALIDATION` +Since `0.8.6` Disable ZIP validation for streamed wheels and ZIP-based source distributions. @@ -244,305 +213,261 @@ integrity checks and allowing uv to install potentially malicious ZIP files. If a ZIP file due to failing validation, it is likely that the file is malformed; consider filing an issue with the package maintainer. -Since `0.8.6`. - ### `UV_INSTALLER_GHE_BASE_URL` +Since `0.5.0` The URL from which to download uv using the standalone installer and `self update` feature, in lieu of the default GitHub Enterprise URL. -Since `0.5.0`. - ### `UV_INSTALLER_GITHUB_BASE_URL` +Since `0.5.0` The URL from which to download uv using the standalone installer and `self update` feature, in lieu of the default GitHub URL. -Since `0.5.0`. - ### `UV_INSTALL_DIR` +Since `0.5.0` The directory in which to install uv using the standalone installer and `self update` feature. Defaults to `~/.local/bin`. -Since `0.5.0`. - ### `UV_ISOLATED` +Since `0.8.14` Equivalent to the `--isolated` command-line argument. If set, uv will avoid discovering a `pyproject.toml` or `uv.toml` file. -Since `0.8.14`. - ### `UV_KEYRING_PROVIDER` +Since `0.1.19` Equivalent to the `--keyring-provider` command-line argument. If set, uv will use this value as the keyring provider. -Since `0.1.19`. - ### `UV_LIBC` +Since `0.7.22` Overrides the environment-determined libc on linux systems when filling in the current platform within Python version requests. Options are: `gnu`, `gnueabi`, `gnueabihf`, `musl`, and `none`. -Since `0.7.22`. - ### `UV_LINK_MODE` +Since `0.1.40` Equivalent to the `--link-mode` command-line argument. If set, uv will use this as a link mode. -Since `0.1.40`. - ### `UV_LOCKED` +Since `0.4.25` Equivalent to the `--locked` command-line argument. If set, uv will assert that the `uv.lock` remains unchanged. -Since `0.4.25`. - ### `UV_LOG_CONTEXT` +Since `0.6.4` Add additional context and structure to log messages. If logging is not enabled, e.g., with `RUST_LOG` or `-v`, this has no effect. -Since `0.6.4`. - ### `UV_MANAGED_PYTHON` +Since `0.6.8` Require use of uv-managed Python versions. -Since `0.6.8`. - ### `UV_NATIVE_TLS` +Since `0.1.19` Equivalent to the `--native-tls` command-line argument. If set to `true`, uv will use the system's trust store instead of the bundled `webpki-roots` crate. -Since `0.1.19`. - ### `UV_NO_BINARY` +Since `0.5.30` Equivalent to the `--no-binary` command-line argument. If set, uv will install all packages from source. The resolver will still use pre-built wheels to extract package metadata, if available. -Since `0.5.30`. - ### `UV_NO_BINARY_PACKAGE` +Since `0.5.30` Equivalent to the `--no-binary-package` command line argument. If set, uv will not use pre-built wheels for the given space-delimited list of packages. -Since `0.5.30`. - ### `UV_NO_BUILD` +Since `0.1.40` Equivalent to the `--no-build` command-line argument. If set, uv will not build source distributions. -Since `0.1.40`. - ### `UV_NO_BUILD_ISOLATION` +Since `0.1.40` Equivalent to the `--no-build-isolation` command-line argument. If set, uv will skip isolation when building source distributions. -Since `0.1.40`. - ### `UV_NO_BUILD_PACKAGE` +Since `0.6.5` Equivalent to the `--no-build-package` command line argument. If set, uv will not build source distributions for the given space-delimited list of packages. -Since `0.6.5`. - ### `UV_NO_CACHE` +Since `0.1.2` Equivalent to the `--no-cache` command-line argument. If set, uv will not use the cache for any operations. -Since `0.1.2`. - ### `UV_NO_CONFIG` +Since `0.2.30` Equivalent to the `--no-config` command-line argument. If set, uv will not read any configuration files from the current directory, parent directories, or user configuration directories. -Since `0.2.30`. - ### `UV_NO_DEV` +Since `0.8.7` Equivalent to the `--no-dev` command-line argument. If set, uv will exclude development dependencies. -Since `0.8.7`. - ### `UV_NO_EDITABLE` +Since `0.6.15` Equivalent to the `--no-editable` command-line argument. If set, uv installs or exports any editable dependencies, including the project and any workspace members, as non-editable. -Since `0.6.15`. - ### `UV_NO_ENV_FILE` +Since `0.4.30` Ignore `.env` files when executing `uv run` commands. -Since `0.4.30`. - ### `UV_NO_GITHUB_FAST_PATH` +Since `0.7.13` Disable GitHub-specific requests that allow uv to skip `git fetch` in some circumstances. -Since `0.7.13`. - ### `UV_NO_HF_TOKEN` +Since `0.8.1` Disable Hugging Face authentication, even if `HF_TOKEN` is set. -Since `0.8.1`. - ### `UV_NO_INSTALLER_METADATA` +Since `0.5.7` Skip writing `uv` installer metadata files (e.g., `INSTALLER`, `REQUESTED`, and `direct_url.json`) to site-packages `.dist-info` directories. -Since `0.5.7`. - ### `UV_NO_MANAGED_PYTHON` +Since `0.6.8` Disable use of uv-managed Python versions. -Since `0.6.8`. - ### `UV_NO_MODIFY_PATH` +Since `0.8.4` Avoid modifying the `PATH` environment variable when installing uv using the standalone installer and `self update` feature. `INSTALLER_NO_MODIFY_PATH` is also supported as an alias, for backwards compatibility. -Since `0.8.4`. - ### `UV_NO_PROGRESS` +Since `0.2.28` Equivalent to the `--no-progress` command-line argument. Disables all progress output. For example, spinners and progress bars. -Since `0.2.28`. - ### `UV_NO_SYNC` +Since `0.4.18` Equivalent to the `--no-sync` command-line argument. If set, uv will skip updating the environment. -Since `0.4.18`. - ### `UV_NO_VERIFY_HASHES` +Since `0.5.3` Equivalent to the `--no-verify-hashes` argument. Disables hash verification for `requirements.txt` files. -Since `0.5.3`. - ### `UV_NO_WRAP` +Since `0.0.5` Use to disable line wrapping for diagnostics. -Since `0.0.5`. - ### `UV_OFFLINE` +Since `0.5.9` Equivalent to the `--offline` command-line argument. If set, uv will disable network access. -Since `0.5.9`. - ### `UV_OVERRIDE` +Since `0.2.22` Equivalent to the `--override` command-line argument. If set, uv will use this file as the overrides file. Uses space-separated list of files. -Since `0.2.22`. - ### `UV_PRERELEASE` +Since `0.1.16` Equivalent to the `--prerelease` command-line argument. For example, if set to `allow`, uv will allow pre-release versions for all dependencies. -Since `0.1.16`. - ### `UV_PREVIEW` +Since `0.1.37` Equivalent to the `--preview` argument. Enables preview mode. -Since `0.1.37`. - ### `UV_PREVIEW_FEATURES` +Since `0.8.4` Equivalent to the `--preview-features` argument. Enables specific preview features. -Since `0.8.4`. - ### `UV_PROJECT` +Since `0.4.4` Equivalent to the `--project` command-line argument. -Since `0.4.4`. - ### `UV_PROJECT_ENVIRONMENT` +Since `0.4.4` Specifies the path to the directory to use for a project virtual environment. See the [project documentation](../concepts/projects/config.md#project-environment-path) for more details. -Since `0.4.4`. - ### `UV_PUBLISH_CHECK_URL` +Since `0.4.30` Don't upload a file if it already exists on the index. The value is the URL of the index. -Since `0.4.30`. - ### `UV_PUBLISH_INDEX` +Since `0.5.8` Equivalent to the `--index` command-line argument in `uv publish`. If set, uv the index with this name in the configuration for publishing. -Since `0.5.8`. - ### `UV_PUBLISH_PASSWORD` +Since `0.4.16` Equivalent to the `--password` command-line argument in `uv publish`. If set, uv will use this password for publishing. -Since `0.4.16`. - ### `UV_PUBLISH_TOKEN` +Since `0.4.16` Equivalent to the `--token` command-line argument in `uv publish`. If set, uv will use this token (with the username `__token__`) for publishing. -Since `0.4.16`. - ### `UV_PUBLISH_URL` +Since `0.4.16` Equivalent to the `--publish-url` command-line argument. The URL of the upload endpoint of the index to use with `uv publish`. -Since `0.4.16`. - ### `UV_PUBLISH_USERNAME` +Since `0.4.16` Equivalent to the `--username` command-line argument in `uv publish`. If set, uv will use this username for publishing. -Since `0.4.16`. - ### `UV_PYPY_INSTALL_MIRROR` +Since `0.2.35` Managed PyPy installations are downloaded from [python.org](https://downloads.python.org/). @@ -552,45 +477,39 @@ different source for PyPy installations. The provided URL will replace `https://downloads.python.org/pypy/pypy3.8-v7.3.7-osx64.tar.bz2`. Distributions can be read from a local directory by using the `file://` URL scheme. -Since `0.2.35`. - ### `UV_PYTHON` +Since `0.1.40` Equivalent to the `--python` command-line argument. If set to a path, uv will use this Python interpreter for all operations. -Since `0.1.40`. - ### `UV_PYTHON_BIN_DIR` +Since `0.4.29` Specifies the directory to place links to installed, managed Python executables. -Since `0.4.29`. - ### `UV_PYTHON_CACHE_DIR` +Since `0.7.0` Specifies the directory for caching the archives of managed Python installations before installation. -Since `0.7.0`. - ### `UV_PYTHON_CPYTHON_BUILD` +Since `0.8.14` Pin managed CPython versions to a specific build version. For CPython, this should be the build date (e.g., "20250814"). -Since `0.8.14`. - ### `UV_PYTHON_DOWNLOADS` +Since `0.3.2` Equivalent to the [`python-downloads`](../reference/settings.md#python-downloads) setting and, when disabled, the `--no-python-downloads` option. Whether uv should allow Python downloads. -Since `0.3.2`. - ### `UV_PYTHON_DOWNLOADS_JSON_URL` +Since `0.6.13` Managed Python installations information is hardcoded in the `uv` binary. @@ -599,29 +518,25 @@ This will allow for setting each property of the Python installation, mostly the Note that currently, only local paths are supported. -Since `0.6.13`. - ### `UV_PYTHON_GRAALPY_BUILD` +Since `0.8.14` Pin managed GraalPy versions to a specific build version. For GraalPy, this should be the GraalPy version (e.g., "24.2.2"). -Since `0.8.14`. - ### `UV_PYTHON_INSTALL_BIN` +Since `0.8.0` Whether to install the Python executable into the `UV_PYTHON_BIN_DIR` directory. -Since `0.8.0`. - ### `UV_PYTHON_INSTALL_DIR` +Since `0.2.22` Specifies the directory for storing managed Python installations. -Since `0.2.22`. - ### `UV_PYTHON_INSTALL_MIRROR` +Since `0.2.35` Managed Python installations are downloaded from the Astral [`python-build-standalone`](https://github.com/astral-sh/python-build-standalone) project. @@ -631,57 +546,49 @@ The provided URL will replace `https://github.com/astral-sh/python-build-standal `https://github.com/astral-sh/python-build-standalone/releases/download/20240713/cpython-3.12.4%2B20240713-aarch64-apple-darwin-install_only.tar.gz`. Distributions can be read from a local directory by using the `file://` URL scheme. -Since `0.2.35`. - ### `UV_PYTHON_INSTALL_REGISTRY` +Since `0.8.0` Whether to install the Python executable into the Windows registry. -Since `0.8.0`. - ### `UV_PYTHON_PREFERENCE` +Since `0.3.2` Whether uv should prefer system or managed Python versions. -Since `0.3.2`. - ### `UV_PYTHON_PYODIDE_BUILD` +Since `0.8.14` Pin managed Pyodide versions to a specific build version. For Pyodide, this should be the Pyodide version (e.g., "0.28.1"). -Since `0.8.14`. - ### `UV_PYTHON_PYPY_BUILD` +Since `0.8.14` Pin managed PyPy versions to a specific build version. For PyPy, this should be the PyPy version (e.g., "7.3.20"). -Since `0.8.14`. - ### `UV_REQUEST_TIMEOUT` +Since `0.1.6` Timeout (in seconds) for HTTP requests. Equivalent to `UV_HTTP_TIMEOUT`. -Since `0.1.6`. - ### `UV_REQUIRE_HASHES` +Since `0.1.34` Equivalent to the `--require-hashes` command-line argument. If set to `true`, uv will require that all dependencies have a hash specified in the requirements file. -Since `0.1.34`. - ### `UV_RESOLUTION` +Since `0.1.27` Equivalent to the `--resolution` command-line argument. For example, if set to `lowest-direct`, uv will install the lowest compatible versions of all direct dependencies. -Since `0.1.27`. - ### `UV_STACK_SIZE` +Since `0.0.5` Use to set the stack size used by uv. @@ -693,9 +600,8 @@ stack size, because we actually spawn our own main2 thread to work around the fact that Windows' real main thread is only 1MB. That thread has size `max(UV_STACK_SIZE, 1MB)`. -Since `0.0.5`. - ### `UV_SYSTEM_PYTHON` +Since `0.1.18` Equivalent to the `--system` command-line argument. If set to `true`, uv will use the first Python interpreter found in the system `PATH`. @@ -704,55 +610,46 @@ WARNING: `UV_SYSTEM_PYTHON=true` is intended for use in continuous integration ( or containerized environments and should be used with caution, as modifying the system Python can lead to unexpected behavior. -Since `0.1.18`. - ### `UV_TEST_NO_HTTP_RETRY_DELAY` +Since `0.7.21` Used to disable delay for HTTP retries in tests. -Since `0.7.21`. - ### `UV_TOOL_BIN_DIR` +Since `0.3.0` Specifies the "bin" directory for installing tool executables. -Since `0.3.0`. - ### `UV_TOOL_DIR` +Since `0.2.16` Specifies the directory where uv stores managed tools. -Since `0.2.16`. - ### `UV_TORCH_BACKEND` +Since `0.6.9` Equivalent to the `--torch-backend` command-line argument (e.g., `cpu`, `cu126`, or `auto`). -Since `0.6.9`. - ### `UV_UNMANAGED_INSTALL` +Since `0.5.0` Used ephemeral environments like CI to install uv to a specific path while preventing the installer from modifying shell profiles or environment variables. -Since `0.5.0`. - ### `UV_VENV_CLEAR` +Since `0.8.0` Equivalent to the `--clear` command-line argument. If set, uv will remove any existing files or directories at the target path. -Since `0.8.0`. - ### `UV_VENV_SEED` +Since `0.5.21` Install seed packages (one or more of: `pip`, `setuptools`, and `wheel`) into the virtual environment created by `uv venv`. Note that `setuptools` and `wheel` are not included in Python 3.12+ environments. -Since `0.5.21`. - ## Externally defined variables @@ -760,258 +657,221 @@ Since `0.5.21`. uv also reads the following externally defined environment variables: ### `ALL_PROXY` +Since `0.1.38` General proxy for all network requests. -Since `0.1.38`. - ### `ANDROID_API_LEVEL` +Since `0.8.16` Used with `--python-platform aarch64-linux-android` and related variants to set the Android API level. (i.e., the minimum supported Android API level). Defaults to `24`. -Since `0.8.16`. - ### `APPDATA` +Since `0.1.42` Path to user-level configuration directory on Windows systems. -Since `0.1.42`. - ### `BASH_VERSION` +Since `0.1.28` Used to detect Bash shell usage. -Since `0.1.28`. - ### `CLICOLOR_FORCE` +Since `0.1.32` Use to control color via `anstyle`. -Since `0.1.32`. - ### `COLUMNS` +Since `0.6.2` Overrides terminal width used for wrapping. This variable is not read by uv directly. This is a quasi-standard variable, described, e.g., in `ncurses(3x)`. -Since `0.6.2`. - ### `CONDA_DEFAULT_ENV` +Since `0.5.0` Used to determine the name of the active Conda environment. -Since `0.5.0`. - ### `CONDA_PREFIX` +Since `0.0.5` Used to detect the path of an active Conda environment. -Since `0.0.5`. - ### `CONDA_ROOT` +Since `0.8.18` Used to determine the root install path of Conda. -Since `0.8.18`. - ### `FISH_VERSION` +Since `0.1.28` Used to detect Fish shell usage. -Since `0.1.28`. - ### `FORCE_COLOR` +Since `0.2.7` Forces colored output regardless of terminal support. See [force-color.org](https://force-color.org). -Since `0.2.7`. - ### `GITHUB_ACTIONS` +Since `0.4.16` Indicates that the current process is running in GitHub Actions. `uv publish` may attempt trusted publishing flows when set to `true`. -Since `0.4.16`. - ### `GITLAB_CI` +Since `0.8.18` Indicates that the current process is running in GitLab CI. `uv publish` may attempt trusted publishing flows when set to `true`. -Since `0.8.18`. - ### `HF_TOKEN` +Since `0.8.1` Authentication token for Hugging Face requests. When set, uv will use this token when making requests to `https://huggingface.co/` and any subdomains. -Since `0.8.1`. - ### `HOME` +Since `0.0.5` The standard `HOME` env var. -Since `0.0.5`. - ### `HTTPS_PROXY` +Since `0.1.38` Proxy for HTTPS requests. -Since `0.1.38`. - ### `HTTP_PROXY` +Since `0.1.38` Proxy for HTTP requests. -Since `0.1.38`. - ### `HTTP_TIMEOUT` +Since `0.1.7` Timeout (in seconds) for HTTP requests. Equivalent to `UV_HTTP_TIMEOUT`. -Since `0.1.7`. - ### `IPHONEOS_DEPLOYMENT_TARGET` +Since `0.8.16` Used with `--python-platform arm64-apple-ios` and related variants to set the deployment target (i.e., the minimum supported iOS version). Defaults to `13.0`. -Since `0.8.16`. - ### `JPY_SESSION_NAME` +Since `0.2.6` Used to detect when running inside a Jupyter notebook. -Since `0.2.6`. - ### `KSH_VERSION` +Since `0.2.33` Used to detect Ksh shell usage. -Since `0.2.33`. - ### `LOCALAPPDATA` +Since `0.3.3` Used to look for Microsoft Store Pythons installations. -Since `0.3.3`. - ### `MACOSX_DEPLOYMENT_TARGET` +Since `0.1.42` Used with `--python-platform macos` and related variants to set the deployment target (i.e., the minimum supported macOS version). Defaults to `13.0`, the least-recent non-EOL macOS version at time of writing. -Since `0.1.42`. - ### `NETRC` +Since `0.1.16` Use to set the .netrc file location. -Since `0.1.16`. - ### `NO_COLOR` +Since `0.2.7` Disables colored output (takes precedence over `FORCE_COLOR`). See [no-color.org](https://no-color.org). -Since `0.2.7`. - ### `NO_PROXY` +Since `0.1.38` Comma-separated list of hostnames (e.g., `example.com`) and/or patterns (e.g., `192.168.1.0/24`) that should bypass the proxy. -Since `0.1.38`. - ### `NU_VERSION` +Since `0.1.16` Used to detect `NuShell` usage. -Since `0.1.16`. - ### `PAGER` +Since `0.4.18` The standard `PAGER` posix env var. Used by `uv` to configure the appropriate pager. -Since `0.4.18`. - ### `PATH` +Since `0.0.5` The standard `PATH` env var. -Since `0.0.5`. - ### `PROMPT` +Since `0.1.16` Used to detect the use of the Windows Command Prompt (as opposed to PowerShell). -Since `0.1.16`. - ### `PWD` +Since `0.0.5` The standard `PWD` posix env var. -Since `0.0.5`. - ### `PYC_INVALIDATION_MODE` +Since `0.1.7` The validation modes to use when run with `--compile`. See [`PycInvalidationMode`](https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode). -Since `0.1.7`. - ### `PYTHONPATH` +Since `0.1.22` Adds directories to Python module search path (e.g., `PYTHONPATH=/path/to/modules`). -Since `0.1.22`. - ### `PYX_API_KEY` +Since `0.8.15` The pyx API key (e.g., `sk-pyx-...`). -Since `0.8.15`. - ### `PYX_API_URL` +Since `0.8.15` The URL of the pyx Simple API server. -Since `0.8.15`. - ### `PYX_AUTH_TOKEN` +Since `0.8.15` The pyx authentication token (e.g., `eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...`), as output by `uv auth token`. -Since `0.8.15`. - ### `PYX_CDN_DOMAIN` +Since `0.8.15` The domain of the pyx CDN. -Since `0.8.15`. - ### `PYX_CREDENTIALS_DIR` +Since `0.8.15` Specifies the directory where uv stores pyx credentials. -Since `0.8.15`. - ### `RUST_BACKTRACE` +Since `0.7.22` If set, it can be used to display more stack trace details when a panic occurs. This is used by uv particularly on windows to show more details during a platform exception. @@ -1024,9 +884,8 @@ For example: See the [Rust backtrace documentation](https://doc.rust-lang.org/std/backtrace/index.html) for more. -Since `0.7.22`. - ### `RUST_LOG` +Since `0.0.5` If set, uv will use this value as the log level for its `--verbose` output. Accepts any filter compatible with the `tracing_subscriber` crate. @@ -1039,9 +898,8 @@ For example: See the [tracing documentation](https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#example-syntax) for more. -Since `0.0.5`. - ### `RUST_MIN_STACK` +Since `0.5.19` Use to set the stack size used by uv. @@ -1056,46 +914,39 @@ stack size, because we actually spawn our own main2 thread to work around the fact that Windows' real main thread is only 1MB. That thread has size `max(RUST_MIN_STACK, 1MB)`. -Since `0.5.19`. - ### `SHELL` +Since `0.1.16` The standard `SHELL` posix env var. -Since `0.1.16`. - ### `SSL_CERT_FILE` +Since `0.1.14` Custom certificate bundle file path for SSL connections. -Since `0.1.14`. - ### `SSL_CLIENT_CERT` +Since `0.2.11` If set, uv will use this file for mTLS authentication. This should be a single file containing both the certificate and the private key in PEM format. -Since `0.2.11`. - ### `SYSTEMDRIVE` +Since `0.4.26` Path to system-level configuration directory on Windows systems. -Since `0.4.26`. - ### `TRACING_DURATIONS_FILE` +Since `0.0.5` Use to create the tracing durations file via the `tracing-durations-export` feature. -Since `0.0.5`. - ### `USERPROFILE` +Since `0.0.5` Path to root directory of user's profile on Windows systems. -Since `0.0.5`. - ### `UV` +Since `0.6.0` The path to the binary that was used to invoke uv. @@ -1107,60 +958,49 @@ of the symbolic link and other platforms will return the path of the symbolic li See for security considerations. -Since `0.6.0`. - ### `VIRTUAL_ENV` +Since `0.0.5` Used to detect an activated virtual environment. -Since `0.0.5`. - ### `VIRTUAL_ENV_DISABLE_PROMPT` +Since `0.0.5` If set to `1` before a virtual environment is activated, then the virtual environment name will not be prepended to the terminal prompt. -Since `0.0.5`. - ### `XDG_BIN_HOME` +Since `0.2.16` Path to directory where executables are installed. -Since `0.2.16`. - ### `XDG_CACHE_HOME` +Since `0.1.17` Path to cache directory on Unix systems. -Since `0.1.17`. - ### `XDG_CONFIG_DIRS` +Since `0.4.26` Path to system-level configuration directory on Unix systems. -Since `0.4.26`. - ### `XDG_CONFIG_HOME` +Since `0.1.34` Path to user-level configuration directory on Unix systems. -Since `0.1.34`. - ### `XDG_DATA_HOME` +Since `0.2.16` Path to directory for storing managed Python installations and tools. -Since `0.2.16`. - ### `ZDOTDIR` +Since `0.2.25` Used to determine which `.zshenv` to use when Zsh is being used. -Since `0.2.25`. - ### `ZSH_VERSION` +Since `0.1.28` Used to detect Zsh shell usage. -Since `0.1.28`. -