uv_static/
env_vars.rs

1//! Environment variables used or supported by uv.
2//! Used to generate `docs/reference/environment.md`.
3use uv_macros::{attr_added_in, attr_env_var_pattern, attr_hidden, attribute_env_vars_metadata};
4
5/// Declares all environment variable used throughout `uv` and its crates.
6pub struct EnvVars;
7
8#[attribute_env_vars_metadata]
9impl EnvVars {
10    /// The path to the binary that was used to invoke uv.
11    ///
12    /// This is propagated to all subprocesses spawned by uv.
13    ///
14    /// If the executable was invoked through a symbolic link, some platforms will return the path
15    /// of the symbolic link and other platforms will return the path of the symbolic link’s target.
16    ///
17    /// See <https://doc.rust-lang.org/std/env/fn.current_exe.html#security> for security
18    /// considerations.
19    #[attr_added_in("0.6.0")]
20    pub const UV: &'static str = "UV";
21
22    /// Equivalent to the `--offline` command-line argument. If set, uv will disable network access.
23    #[attr_added_in("0.5.9")]
24    pub const UV_OFFLINE: &'static str = "UV_OFFLINE";
25
26    /// Equivalent to the `--default-index` command-line argument. If set, uv will use
27    /// this URL as the default index when searching for packages.
28    #[attr_added_in("0.4.23")]
29    pub const UV_DEFAULT_INDEX: &'static str = "UV_DEFAULT_INDEX";
30
31    /// Equivalent to the `--index` command-line argument. If set, uv will use this
32    /// space-separated list of URLs as additional indexes when searching for packages.
33    #[attr_added_in("0.4.23")]
34    pub const UV_INDEX: &'static str = "UV_INDEX";
35
36    /// Equivalent to the `--index-url` command-line argument. If set, uv will use this
37    /// URL as the default index when searching for packages.
38    /// (Deprecated: use `UV_DEFAULT_INDEX` instead.)
39    #[attr_added_in("0.0.5")]
40    pub const UV_INDEX_URL: &'static str = "UV_INDEX_URL";
41
42    /// Equivalent to the `--extra-index-url` command-line argument. If set, uv will
43    /// use this space-separated list of URLs as additional indexes when searching for packages.
44    /// (Deprecated: use `UV_INDEX` instead.)
45    #[attr_added_in("0.1.3")]
46    pub const UV_EXTRA_INDEX_URL: &'static str = "UV_EXTRA_INDEX_URL";
47
48    /// Equivalent to the `--find-links` command-line argument. If set, uv will use this
49    /// comma-separated list of additional locations to search for packages.
50    #[attr_added_in("0.4.19")]
51    pub const UV_FIND_LINKS: &'static str = "UV_FIND_LINKS";
52
53    /// Equivalent to the `--no-sources` command-line argument. If set, uv will ignore
54    /// `[tool.uv.sources]` annotations when resolving dependencies.
55    #[attr_added_in("0.9.8")]
56    pub const UV_NO_SOURCES: &'static str = "UV_NO_SOURCES";
57
58    /// Equivalent to the `--cache-dir` command-line argument. If set, uv will use this
59    /// directory for caching instead of the default cache directory.
60    #[attr_added_in("0.0.5")]
61    pub const UV_CACHE_DIR: &'static str = "UV_CACHE_DIR";
62
63    /// The directory for storage of credentials when using a plain text backend.
64    #[attr_added_in("0.8.15")]
65    pub const UV_CREDENTIALS_DIR: &'static str = "UV_CREDENTIALS_DIR";
66
67    /// Equivalent to the `--no-cache` command-line argument. If set, uv will not use the
68    /// cache for any operations.
69    #[attr_added_in("0.1.2")]
70    pub const UV_NO_CACHE: &'static str = "UV_NO_CACHE";
71
72    /// Equivalent to the `--resolution` command-line argument. For example, if set to
73    /// `lowest-direct`, uv will install the lowest compatible versions of all direct dependencies.
74    #[attr_added_in("0.1.27")]
75    pub const UV_RESOLUTION: &'static str = "UV_RESOLUTION";
76
77    /// Equivalent to the `--prerelease` command-line argument. For example, if set to
78    /// `allow`, uv will allow pre-release versions for all dependencies.
79    #[attr_added_in("0.1.16")]
80    pub const UV_PRERELEASE: &'static str = "UV_PRERELEASE";
81
82    /// Equivalent to the `--fork-strategy` argument. Controls version selection during universal
83    /// resolution.
84    #[attr_added_in("0.5.9")]
85    pub const UV_FORK_STRATEGY: &'static str = "UV_FORK_STRATEGY";
86
87    /// Equivalent to the `--system` command-line argument. If set to `true`, uv will
88    /// use the first Python interpreter found in the system `PATH`.
89    ///
90    /// WARNING: `UV_SYSTEM_PYTHON=true` is intended for use in continuous integration (CI)
91    /// or containerized environments and should be used with caution, as modifying the system
92    /// Python can lead to unexpected behavior.
93    #[attr_added_in("0.1.18")]
94    pub const UV_SYSTEM_PYTHON: &'static str = "UV_SYSTEM_PYTHON";
95
96    /// Equivalent to the `--python` command-line argument. If set to a path, uv will use
97    /// this Python interpreter for all operations.
98    #[attr_added_in("0.1.40")]
99    pub const UV_PYTHON: &'static str = "UV_PYTHON";
100
101    /// Equivalent to the `--break-system-packages` command-line argument. If set to `true`,
102    /// uv will allow the installation of packages that conflict with system-installed packages.
103    ///
104    /// WARNING: `UV_BREAK_SYSTEM_PACKAGES=true` is intended for use in continuous integration
105    /// (CI) or containerized environments and should be used with caution, as modifying the system
106    /// Python can lead to unexpected behavior.
107    #[attr_added_in("0.1.32")]
108    pub const UV_BREAK_SYSTEM_PACKAGES: &'static str = "UV_BREAK_SYSTEM_PACKAGES";
109
110    /// Equivalent to the `--native-tls` command-line argument. If set to `true`, uv will
111    /// use the system's trust store instead of the bundled `webpki-roots` crate.
112    #[attr_added_in("0.1.19")]
113    pub const UV_NATIVE_TLS: &'static str = "UV_NATIVE_TLS";
114
115    /// Equivalent to the `--index-strategy` command-line argument.
116    ///
117    /// For example, if set to `unsafe-best-match`, uv will consider versions of a given package
118    /// available across all index URLs, rather than limiting its search to the first index URL
119    /// that contains the package.
120    #[attr_added_in("0.1.29")]
121    pub const UV_INDEX_STRATEGY: &'static str = "UV_INDEX_STRATEGY";
122
123    /// Equivalent to the `--require-hashes` command-line argument. If set to `true`,
124    /// uv will require that all dependencies have a hash specified in the requirements file.
125    #[attr_added_in("0.1.34")]
126    pub const UV_REQUIRE_HASHES: &'static str = "UV_REQUIRE_HASHES";
127
128    /// Equivalent to the `--constraints` command-line argument. If set, uv will use this
129    /// file as the constraints file. Uses space-separated list of files.
130    #[attr_added_in("0.1.36")]
131    pub const UV_CONSTRAINT: &'static str = "UV_CONSTRAINT";
132
133    /// Equivalent to the `--build-constraints` command-line argument. If set, uv will use this file
134    /// as constraints for any source distribution builds. Uses space-separated list of files.
135    #[attr_added_in("0.2.34")]
136    pub const UV_BUILD_CONSTRAINT: &'static str = "UV_BUILD_CONSTRAINT";
137
138    /// Equivalent to the `--overrides` command-line argument. If set, uv will use this file
139    /// as the overrides file. Uses space-separated list of files.
140    #[attr_added_in("0.2.22")]
141    pub const UV_OVERRIDE: &'static str = "UV_OVERRIDE";
142
143    /// Equivalent to the `--excludes` command-line argument. If set, uv will use this
144    /// as the excludes file. Uses space-separated list of files.
145    #[attr_added_in("0.9.8")]
146    pub const UV_EXCLUDE: &'static str = "UV_EXCLUDE";
147
148    /// Equivalent to the `--link-mode` command-line argument. If set, uv will use this as
149    /// a link mode.
150    #[attr_added_in("0.1.40")]
151    pub const UV_LINK_MODE: &'static str = "UV_LINK_MODE";
152
153    /// Equivalent to the `--no-build-isolation` command-line argument. If set, uv will
154    /// skip isolation when building source distributions.
155    #[attr_added_in("0.1.40")]
156    pub const UV_NO_BUILD_ISOLATION: &'static str = "UV_NO_BUILD_ISOLATION";
157
158    /// Equivalent to the `--custom-compile-command` command-line argument.
159    ///
160    /// Used to override uv in the output header of the `requirements.txt` files generated by
161    /// `uv pip compile`. Intended for use-cases in which `uv pip compile` is called from within a wrapper
162    /// script, to include the name of the wrapper script in the output file.
163    #[attr_added_in("0.1.23")]
164    pub const UV_CUSTOM_COMPILE_COMMAND: &'static str = "UV_CUSTOM_COMPILE_COMMAND";
165
166    /// Equivalent to the `--keyring-provider` command-line argument. If set, uv
167    /// will use this value as the keyring provider.
168    #[attr_added_in("0.1.19")]
169    pub const UV_KEYRING_PROVIDER: &'static str = "UV_KEYRING_PROVIDER";
170
171    /// Equivalent to the `--config-file` command-line argument. Expects a path to a
172    /// local `uv.toml` file to use as the configuration file.
173    #[attr_added_in("0.1.34")]
174    pub const UV_CONFIG_FILE: &'static str = "UV_CONFIG_FILE";
175
176    /// Equivalent to the `--no-config` command-line argument. If set, uv will not read
177    /// any configuration files from the current directory, parent directories, or user configuration
178    /// directories.
179    #[attr_added_in("0.2.30")]
180    pub const UV_NO_CONFIG: &'static str = "UV_NO_CONFIG";
181
182    /// Equivalent to the `--isolated` command-line argument. If set, uv will avoid discovering
183    /// a `pyproject.toml` or `uv.toml` file.
184    #[attr_added_in("0.8.14")]
185    pub const UV_ISOLATED: &'static str = "UV_ISOLATED";
186
187    /// Equivalent to the `--exclude-newer` command-line argument. If set, uv will
188    /// exclude distributions published after the specified date.
189    #[attr_added_in("0.2.12")]
190    pub const UV_EXCLUDE_NEWER: &'static str = "UV_EXCLUDE_NEWER";
191
192    /// Whether uv should prefer system or managed Python versions.
193    #[attr_added_in("0.3.2")]
194    pub const UV_PYTHON_PREFERENCE: &'static str = "UV_PYTHON_PREFERENCE";
195
196    /// Require use of uv-managed Python versions.
197    #[attr_added_in("0.6.8")]
198    pub const UV_MANAGED_PYTHON: &'static str = "UV_MANAGED_PYTHON";
199
200    /// Disable use of uv-managed Python versions.
201    #[attr_added_in("0.6.8")]
202    pub const UV_NO_MANAGED_PYTHON: &'static str = "UV_NO_MANAGED_PYTHON";
203
204    /// Equivalent to the
205    /// [`python-downloads`](../reference/settings.md#python-downloads) setting and, when disabled, the
206    /// `--no-python-downloads` option. Whether uv should allow Python downloads.
207    #[attr_added_in("0.3.2")]
208    pub const UV_PYTHON_DOWNLOADS: &'static str = "UV_PYTHON_DOWNLOADS";
209
210    /// Overrides the environment-determined libc on linux systems when filling in the current platform
211    /// within Python version requests. Options are: `gnu`, `gnueabi`, `gnueabihf`, `musl`, and `none`.
212    #[attr_added_in("0.7.22")]
213    pub const UV_LIBC: &'static str = "UV_LIBC";
214
215    /// Equivalent to the `--compile-bytecode` command-line argument. If set, uv
216    /// will compile Python source files to bytecode after installation.
217    #[attr_added_in("0.3.3")]
218    pub const UV_COMPILE_BYTECODE: &'static str = "UV_COMPILE_BYTECODE";
219
220    /// Timeout (in seconds) for bytecode compilation.
221    #[attr_added_in("0.7.22")]
222    pub const UV_COMPILE_BYTECODE_TIMEOUT: &'static str = "UV_COMPILE_BYTECODE_TIMEOUT";
223
224    /// Equivalent to the `--no-editable` command-line argument. If set, uv
225    /// installs or exports any editable dependencies, including the project and any workspace
226    /// members, as non-editable.
227    #[attr_added_in("0.6.15")]
228    pub const UV_NO_EDITABLE: &'static str = "UV_NO_EDITABLE";
229
230    /// Equivalent to the `--dev` command-line argument. If set, uv will include
231    /// development dependencies.
232    #[attr_added_in("0.8.7")]
233    pub const UV_DEV: &'static str = "UV_DEV";
234
235    /// Equivalent to the `--no-dev` command-line argument. If set, uv will exclude
236    /// development dependencies.
237    #[attr_added_in("0.8.7")]
238    pub const UV_NO_DEV: &'static str = "UV_NO_DEV";
239
240    /// Equivalent to the `--no-group` command-line argument. If set, uv will disable
241    /// the specified dependency groups for the given space-delimited list of packages.
242    #[attr_added_in("0.9.8")]
243    pub const UV_NO_GROUP: &'static str = "UV_NO_GROUP";
244
245    /// Equivalent to the `--no-default-groups` command-line argument. If set, uv will
246    /// not select the default dependency groups defined in `tool.uv.default-groups`.
247    #[attr_added_in("0.9.9")]
248    pub const UV_NO_DEFAULT_GROUPS: &'static str = "UV_NO_DEFAULT_GROUPS";
249
250    /// Equivalent to the `--no-binary` command-line argument. If set, uv will install
251    /// all packages from source. The resolver will still use pre-built wheels to
252    /// extract package metadata, if available.
253    #[attr_added_in("0.5.30")]
254    pub const UV_NO_BINARY: &'static str = "UV_NO_BINARY";
255
256    /// Equivalent to the `--no-binary-package` command line argument. If set, uv will
257    /// not use pre-built wheels for the given space-delimited list of packages.
258    #[attr_added_in("0.5.30")]
259    pub const UV_NO_BINARY_PACKAGE: &'static str = "UV_NO_BINARY_PACKAGE";
260
261    /// Equivalent to the `--no-build` command-line argument. If set, uv will not build
262    /// source distributions.
263    #[attr_added_in("0.1.40")]
264    pub const UV_NO_BUILD: &'static str = "UV_NO_BUILD";
265
266    /// Equivalent to the `--no-build-package` command line argument. If set, uv will
267    /// not build source distributions for the given space-delimited list of packages.
268    #[attr_added_in("0.6.5")]
269    pub const UV_NO_BUILD_PACKAGE: &'static str = "UV_NO_BUILD_PACKAGE";
270
271    /// Equivalent to the `--no-sources-package` command line argument. If set, uv will
272    /// ignore the `tool.uv.sources` table for the given space-delimited list of packages.
273    #[attr_added_in("0.9.26")]
274    pub const UV_NO_SOURCES_PACKAGE: &'static str = "UV_NO_SOURCES_PACKAGE";
275
276    /// Equivalent to the `--publish-url` command-line argument. The URL of the upload
277    /// endpoint of the index to use with `uv publish`.
278    #[attr_added_in("0.4.16")]
279    pub const UV_PUBLISH_URL: &'static str = "UV_PUBLISH_URL";
280
281    /// Equivalent to the `--token` command-line argument in `uv publish`. If set, uv
282    /// will use this token (with the username `__token__`) for publishing.
283    #[attr_added_in("0.4.16")]
284    pub const UV_PUBLISH_TOKEN: &'static str = "UV_PUBLISH_TOKEN";
285
286    /// Equivalent to the `--index` command-line argument in `uv publish`. If
287    /// set, uv the index with this name in the configuration for publishing.
288    #[attr_added_in("0.5.8")]
289    pub const UV_PUBLISH_INDEX: &'static str = "UV_PUBLISH_INDEX";
290
291    /// Equivalent to the `--username` command-line argument in `uv publish`. If
292    /// set, uv will use this username for publishing.
293    #[attr_added_in("0.4.16")]
294    pub const UV_PUBLISH_USERNAME: &'static str = "UV_PUBLISH_USERNAME";
295
296    /// Equivalent to the `--password` command-line argument in `uv publish`. If
297    /// set, uv will use this password for publishing.
298    #[attr_added_in("0.4.16")]
299    pub const UV_PUBLISH_PASSWORD: &'static str = "UV_PUBLISH_PASSWORD";
300
301    /// Don't upload a file if it already exists on the index. The value is the URL of the index.
302    #[attr_added_in("0.4.30")]
303    pub const UV_PUBLISH_CHECK_URL: &'static str = "UV_PUBLISH_CHECK_URL";
304
305    /// Equivalent to the `--no-attestations` command-line argument in `uv publish`. If set,
306    /// uv will skip uploading any collected attestations for the published distributions.
307    #[attr_added_in("0.9.12")]
308    pub const UV_PUBLISH_NO_ATTESTATIONS: &'static str = "UV_PUBLISH_NO_ATTESTATIONS";
309
310    /// Equivalent to the `--no-sync` command-line argument. If set, uv will skip updating
311    /// the environment.
312    #[attr_added_in("0.4.18")]
313    pub const UV_NO_SYNC: &'static str = "UV_NO_SYNC";
314
315    /// Equivalent to the `--locked` command-line argument. If set, uv will assert that the
316    /// `uv.lock` remains unchanged.
317    #[attr_added_in("0.4.25")]
318    pub const UV_LOCKED: &'static str = "UV_LOCKED";
319
320    /// Equivalent to the `--frozen` command-line argument. If set, uv will run without
321    /// updating the `uv.lock` file.
322    #[attr_added_in("0.4.25")]
323    pub const UV_FROZEN: &'static str = "UV_FROZEN";
324
325    /// Equivalent to the `--preview` argument. Enables preview mode.
326    #[attr_added_in("0.1.37")]
327    pub const UV_PREVIEW: &'static str = "UV_PREVIEW";
328
329    /// Equivalent to the `--preview-features` argument. Enables specific preview features.
330    #[attr_added_in("0.8.4")]
331    pub const UV_PREVIEW_FEATURES: &'static str = "UV_PREVIEW_FEATURES";
332
333    /// Equivalent to the `--token` argument for self update. A GitHub token for authentication.
334    #[attr_added_in("0.4.10")]
335    pub const UV_GITHUB_TOKEN: &'static str = "UV_GITHUB_TOKEN";
336
337    /// Equivalent to the `--no-verify-hashes` argument. Disables hash verification for
338    /// `requirements.txt` files.
339    #[attr_added_in("0.5.3")]
340    pub const UV_NO_VERIFY_HASHES: &'static str = "UV_NO_VERIFY_HASHES";
341
342    /// Equivalent to the `--allow-insecure-host` argument.
343    #[attr_added_in("0.3.5")]
344    pub const UV_INSECURE_HOST: &'static str = "UV_INSECURE_HOST";
345
346    /// Disable ZIP validation for streamed wheels and ZIP-based source distributions.
347    ///
348    /// WARNING: Disabling ZIP validation can expose your system to security risks by bypassing
349    /// integrity checks and allowing uv to install potentially malicious ZIP files. If uv rejects
350    /// a ZIP file due to failing validation, it is likely that the file is malformed; consider
351    /// filing an issue with the package maintainer.
352    #[attr_added_in("0.8.6")]
353    pub const UV_INSECURE_NO_ZIP_VALIDATION: &'static str = "UV_INSECURE_NO_ZIP_VALIDATION";
354
355    /// Sets the maximum number of in-flight concurrent downloads that uv will
356    /// perform at any given time.
357    #[attr_added_in("0.1.43")]
358    pub const UV_CONCURRENT_DOWNLOADS: &'static str = "UV_CONCURRENT_DOWNLOADS";
359
360    /// Sets the maximum number of source distributions that uv will build
361    /// concurrently at any given time.
362    #[attr_added_in("0.1.43")]
363    pub const UV_CONCURRENT_BUILDS: &'static str = "UV_CONCURRENT_BUILDS";
364
365    /// Controls the number of threads used when installing and unzipping
366    /// packages.
367    #[attr_added_in("0.1.45")]
368    pub const UV_CONCURRENT_INSTALLS: &'static str = "UV_CONCURRENT_INSTALLS";
369
370    /// Equivalent to the `--no-progress` command-line argument. Disables all progress output. For
371    /// example, spinners and progress bars.
372    #[attr_added_in("0.2.28")]
373    pub const UV_NO_PROGRESS: &'static str = "UV_NO_PROGRESS";
374
375    /// Specifies the directory where uv stores managed tools.
376    #[attr_added_in("0.2.16")]
377    pub const UV_TOOL_DIR: &'static str = "UV_TOOL_DIR";
378
379    /// Specifies the "bin" directory for installing tool executables.
380    #[attr_added_in("0.3.0")]
381    pub const UV_TOOL_BIN_DIR: &'static str = "UV_TOOL_BIN_DIR";
382
383    /// Equivalent to the `--build-backend` argument for `uv init`. Determines the default backend
384    /// to use when creating a new project.
385    #[attr_added_in("0.8.2")]
386    pub const UV_INIT_BUILD_BACKEND: &'static str = "UV_INIT_BUILD_BACKEND";
387
388    /// Specifies the path to the directory to use for a project virtual environment.
389    ///
390    /// See the [project documentation](../concepts/projects/config.md#project-environment-path)
391    /// for more details.
392    #[attr_added_in("0.4.4")]
393    pub const UV_PROJECT_ENVIRONMENT: &'static str = "UV_PROJECT_ENVIRONMENT";
394
395    /// Specifies the directory to place links to installed, managed Python executables.
396    #[attr_added_in("0.4.29")]
397    pub const UV_PYTHON_BIN_DIR: &'static str = "UV_PYTHON_BIN_DIR";
398
399    /// Specifies the directory for storing managed Python installations.
400    #[attr_added_in("0.2.22")]
401    pub const UV_PYTHON_INSTALL_DIR: &'static str = "UV_PYTHON_INSTALL_DIR";
402
403    /// Whether to install the Python executable into the `UV_PYTHON_BIN_DIR` directory.
404    #[attr_added_in("0.8.0")]
405    pub const UV_PYTHON_INSTALL_BIN: &'static str = "UV_PYTHON_INSTALL_BIN";
406
407    /// Whether to install the Python executable into the Windows registry.
408    #[attr_added_in("0.8.0")]
409    pub const UV_PYTHON_INSTALL_REGISTRY: &'static str = "UV_PYTHON_INSTALL_REGISTRY";
410
411    /// Managed Python installations information is hardcoded in the `uv` binary.
412    ///
413    /// This variable can be set to a local path or URL pointing to
414    /// a JSON list of Python installations to override the hardcoded list.
415    ///
416    /// This allows customizing the URLs for downloads or using slightly older or newer versions
417    /// of Python than the ones hardcoded into this build of `uv`.
418    #[attr_added_in("0.6.13")]
419    pub const UV_PYTHON_DOWNLOADS_JSON_URL: &'static str = "UV_PYTHON_DOWNLOADS_JSON_URL";
420
421    /// Specifies the directory for caching the archives of managed Python installations before
422    /// installation.
423    #[attr_added_in("0.7.0")]
424    pub const UV_PYTHON_CACHE_DIR: &'static str = "UV_PYTHON_CACHE_DIR";
425
426    /// Managed Python installations are downloaded from the Astral
427    /// [`python-build-standalone`](https://github.com/astral-sh/python-build-standalone) project.
428    ///
429    /// This variable can be set to a mirror URL to use a different source for Python installations.
430    /// The provided URL will replace `https://github.com/astral-sh/python-build-standalone/releases/download` in, e.g.,
431    /// `https://github.com/astral-sh/python-build-standalone/releases/download/20240713/cpython-3.12.4%2B20240713-aarch64-apple-darwin-install_only.tar.gz`.
432    /// Distributions can be read from a local directory by using the `file://` URL scheme.
433    #[attr_added_in("0.2.35")]
434    pub const UV_PYTHON_INSTALL_MIRROR: &'static str = "UV_PYTHON_INSTALL_MIRROR";
435
436    /// Managed PyPy installations are downloaded from [python.org](https://downloads.python.org/).
437    ///
438    /// This variable can be set to a mirror URL to use a
439    /// different source for PyPy installations. The provided URL will replace
440    /// `https://downloads.python.org/pypy` in, e.g.,
441    /// `https://downloads.python.org/pypy/pypy3.8-v7.3.7-osx64.tar.bz2`.
442    /// Distributions can be read from a local directory by using the `file://` URL scheme.
443    #[attr_added_in("0.2.35")]
444    pub const UV_PYPY_INSTALL_MIRROR: &'static str = "UV_PYPY_INSTALL_MIRROR";
445
446    /// Pin managed CPython versions to a specific build version.
447    ///
448    /// For CPython, this should be the build date (e.g., "20250814").
449    #[attr_added_in("0.8.14")]
450    pub const UV_PYTHON_CPYTHON_BUILD: &'static str = "UV_PYTHON_CPYTHON_BUILD";
451
452    /// Pin managed PyPy versions to a specific build version.
453    ///
454    /// For PyPy, this should be the PyPy version (e.g., "7.3.20").
455    #[attr_added_in("0.8.14")]
456    pub const UV_PYTHON_PYPY_BUILD: &'static str = "UV_PYTHON_PYPY_BUILD";
457
458    /// Pin managed GraalPy versions to a specific build version.
459    ///
460    /// For GraalPy, this should be the GraalPy version (e.g., "24.2.2").
461    #[attr_added_in("0.8.14")]
462    pub const UV_PYTHON_GRAALPY_BUILD: &'static str = "UV_PYTHON_GRAALPY_BUILD";
463
464    /// Pin managed Pyodide versions to a specific build version.
465    ///
466    /// For Pyodide, this should be the Pyodide version (e.g., "0.28.1").
467    #[attr_added_in("0.8.14")]
468    pub const UV_PYTHON_PYODIDE_BUILD: &'static str = "UV_PYTHON_PYODIDE_BUILD";
469
470    /// Equivalent to the `--clear` command-line argument. If set, uv will remove any
471    /// existing files or directories at the target path.
472    #[attr_added_in("0.8.0")]
473    pub const UV_VENV_CLEAR: &'static str = "UV_VENV_CLEAR";
474
475    /// Install seed packages (one or more of: `pip`, `setuptools`, and `wheel`) into the virtual environment
476    /// created by `uv venv`.
477    ///
478    /// Note that `setuptools` and `wheel` are not included in Python 3.12+ environments.
479    #[attr_added_in("0.5.21")]
480    pub const UV_VENV_SEED: &'static str = "UV_VENV_SEED";
481
482    /// Used to override `PATH` to limit Python executable availability in the test suite.
483    #[attr_hidden]
484    #[attr_added_in("0.0.5")]
485    pub const UV_TEST_PYTHON_PATH: &'static str = "UV_TEST_PYTHON_PATH";
486
487    /// Include resolver and installer output related to environment modifications.
488    #[attr_hidden]
489    #[attr_added_in("0.2.32")]
490    pub const UV_SHOW_RESOLUTION: &'static str = "UV_SHOW_RESOLUTION";
491
492    /// Use to update the json schema files.
493    #[attr_hidden]
494    #[attr_added_in("0.1.34")]
495    pub const UV_UPDATE_SCHEMA: &'static str = "UV_UPDATE_SCHEMA";
496
497    /// Use to disable line wrapping for diagnostics.
498    #[attr_added_in("0.0.5")]
499    pub const UV_NO_WRAP: &'static str = "UV_NO_WRAP";
500
501    /// Provides the HTTP Basic authentication username for a named index.
502    ///
503    /// The `name` parameter is the name of the index. For example, given an index named `foo`,
504    /// the environment variable key would be `UV_INDEX_FOO_USERNAME`.
505    #[attr_added_in("0.4.23")]
506    #[attr_env_var_pattern("UV_INDEX_{name}_USERNAME")]
507    pub fn index_username(name: &str) -> String {
508        format!("UV_INDEX_{name}_USERNAME")
509    }
510
511    /// Provides the HTTP Basic authentication password for a named index.
512    ///
513    /// The `name` parameter is the name of the index. For example, given an index named `foo`,
514    /// the environment variable key would be `UV_INDEX_FOO_PASSWORD`.
515    #[attr_added_in("0.4.23")]
516    #[attr_env_var_pattern("UV_INDEX_{name}_PASSWORD")]
517    pub fn index_password(name: &str) -> String {
518        format!("UV_INDEX_{name}_PASSWORD")
519    }
520
521    /// Used to set the uv commit hash at build time via `build.rs`.
522    #[attr_hidden]
523    #[attr_added_in("0.1.11")]
524    pub const UV_COMMIT_HASH: &'static str = "UV_COMMIT_HASH";
525
526    /// Used to set the uv commit short hash at build time via `build.rs`.
527    #[attr_hidden]
528    #[attr_added_in("0.1.11")]
529    pub const UV_COMMIT_SHORT_HASH: &'static str = "UV_COMMIT_SHORT_HASH";
530
531    /// Used to set the uv commit date at build time via `build.rs`.
532    #[attr_hidden]
533    #[attr_added_in("0.1.11")]
534    pub const UV_COMMIT_DATE: &'static str = "UV_COMMIT_DATE";
535
536    /// Used to set the uv tag at build time via `build.rs`.
537    #[attr_hidden]
538    #[attr_added_in("0.1.11")]
539    pub const UV_LAST_TAG: &'static str = "UV_LAST_TAG";
540
541    /// Used to set the uv tag distance from head at build time via `build.rs`.
542    #[attr_hidden]
543    #[attr_added_in("0.1.11")]
544    pub const UV_LAST_TAG_DISTANCE: &'static str = "UV_LAST_TAG_DISTANCE";
545
546    /// Used to set the spawning/parent interpreter when using --system in the test suite.
547    #[attr_hidden]
548    #[attr_added_in("0.2.0")]
549    pub const UV_INTERNAL__PARENT_INTERPRETER: &'static str = "UV_INTERNAL__PARENT_INTERPRETER";
550
551    /// Used to force showing the derivation tree during resolver error reporting.
552    #[attr_hidden]
553    #[attr_added_in("0.3.0")]
554    pub const UV_INTERNAL__SHOW_DERIVATION_TREE: &'static str = "UV_INTERNAL__SHOW_DERIVATION_TREE";
555
556    /// Used to set a temporary directory for some tests.
557    #[attr_hidden]
558    #[attr_added_in("0.3.4")]
559    pub const UV_INTERNAL__TEST_DIR: &'static str = "UV_INTERNAL__TEST_DIR";
560
561    /// Used to force treating an interpreter as "managed" during tests.
562    #[attr_hidden]
563    #[attr_added_in("0.8.0")]
564    pub const UV_INTERNAL__TEST_PYTHON_MANAGED: &'static str = "UV_INTERNAL__TEST_PYTHON_MANAGED";
565
566    /// Used to force ignoring Git LFS commands as `git-lfs` detection cannot be overridden via PATH.
567    #[attr_hidden]
568    #[attr_added_in("0.9.15")]
569    pub const UV_INTERNAL__TEST_LFS_DISABLED: &'static str = "UV_INTERNAL__TEST_LFS_DISABLED";
570
571    /// Path to system-level configuration directory on Unix systems.
572    #[attr_added_in("0.4.26")]
573    pub const XDG_CONFIG_DIRS: &'static str = "XDG_CONFIG_DIRS";
574
575    /// Path to system-level configuration directory on Windows systems.
576    #[attr_added_in("0.4.26")]
577    pub const SYSTEMDRIVE: &'static str = "SYSTEMDRIVE";
578
579    /// Path to user-level configuration directory on Windows systems.
580    #[attr_added_in("0.1.42")]
581    pub const APPDATA: &'static str = "APPDATA";
582
583    /// Path to root directory of user's profile on Windows systems.
584    #[attr_added_in("0.0.5")]
585    pub const USERPROFILE: &'static str = "USERPROFILE";
586
587    /// Path to user-level configuration directory on Unix systems.
588    #[attr_added_in("0.1.34")]
589    pub const XDG_CONFIG_HOME: &'static str = "XDG_CONFIG_HOME";
590
591    /// Path to cache directory on Unix systems.
592    #[attr_added_in("0.1.17")]
593    pub const XDG_CACHE_HOME: &'static str = "XDG_CACHE_HOME";
594
595    /// Path to directory for storing managed Python installations and tools.
596    #[attr_added_in("0.2.16")]
597    pub const XDG_DATA_HOME: &'static str = "XDG_DATA_HOME";
598
599    /// Path to directory where executables are installed.
600    #[attr_added_in("0.2.16")]
601    pub const XDG_BIN_HOME: &'static str = "XDG_BIN_HOME";
602
603    /// Custom certificate bundle file path for SSL connections.
604    ///
605    /// Takes precedence over `UV_NATIVE_TLS` when set.
606    #[attr_added_in("0.1.14")]
607    pub const SSL_CERT_FILE: &'static str = "SSL_CERT_FILE";
608
609    /// Custom path for certificate bundles for SSL connections.
610    /// Multiple entries are supported separated using a platform-specific
611    /// delimiter (`:` on Unix, `;` on Windows).
612    ///
613    /// Takes precedence over `UV_NATIVE_TLS` when set.
614    #[attr_added_in("0.9.10")]
615    pub const SSL_CERT_DIR: &'static str = "SSL_CERT_DIR";
616
617    /// If set, uv will use this file for mTLS authentication.
618    /// This should be a single file containing both the certificate and the private key in PEM format.
619    #[attr_added_in("0.2.11")]
620    pub const SSL_CLIENT_CERT: &'static str = "SSL_CLIENT_CERT";
621
622    /// Proxy for HTTP requests.
623    #[attr_added_in("0.1.38")]
624    pub const HTTP_PROXY: &'static str = "HTTP_PROXY";
625
626    /// Proxy for HTTPS requests.
627    #[attr_added_in("0.1.38")]
628    pub const HTTPS_PROXY: &'static str = "HTTPS_PROXY";
629
630    /// General proxy for all network requests.
631    #[attr_added_in("0.1.38")]
632    pub const ALL_PROXY: &'static str = "ALL_PROXY";
633
634    /// Comma-separated list of hostnames (e.g., `example.com`) and/or patterns (e.g., `192.168.1.0/24`) that should bypass the proxy.
635    #[attr_added_in("0.1.38")]
636    pub const NO_PROXY: &'static str = "NO_PROXY";
637
638    /// Timeout (in seconds) for only upload HTTP requests. (default: 900 s)
639    #[attr_added_in("0.9.1")]
640    pub const UV_UPLOAD_HTTP_TIMEOUT: &'static str = "UV_UPLOAD_HTTP_TIMEOUT";
641
642    /// Timeout (in seconds) for HTTP requests. (default: 30 s)
643    #[attr_added_in("0.1.7")]
644    pub const UV_HTTP_TIMEOUT: &'static str = "UV_HTTP_TIMEOUT";
645
646    /// The number of retries for HTTP requests. (default: 3)
647    #[attr_added_in("0.7.21")]
648    pub const UV_HTTP_RETRIES: &'static str = "UV_HTTP_RETRIES";
649
650    /// Timeout (in seconds) for HTTP requests. Equivalent to `UV_HTTP_TIMEOUT`.
651    #[attr_added_in("0.1.6")]
652    pub const UV_REQUEST_TIMEOUT: &'static str = "UV_REQUEST_TIMEOUT";
653
654    /// Timeout (in seconds) for HTTP requests. Equivalent to `UV_HTTP_TIMEOUT`.
655    #[attr_added_in("0.1.7")]
656    pub const HTTP_TIMEOUT: &'static str = "HTTP_TIMEOUT";
657
658    /// The validation modes to use when run with `--compile`.
659    ///
660    /// See [`PycInvalidationMode`](https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode).
661    #[attr_added_in("0.1.7")]
662    pub const PYC_INVALIDATION_MODE: &'static str = "PYC_INVALIDATION_MODE";
663
664    /// Used to detect an activated virtual environment.
665    #[attr_added_in("0.0.5")]
666    pub const VIRTUAL_ENV: &'static str = "VIRTUAL_ENV";
667
668    /// Used to detect the path of an active Conda environment.
669    #[attr_added_in("0.0.5")]
670    pub const CONDA_PREFIX: &'static str = "CONDA_PREFIX";
671
672    /// Used to determine the name of the active Conda environment.
673    #[attr_added_in("0.5.0")]
674    pub const CONDA_DEFAULT_ENV: &'static str = "CONDA_DEFAULT_ENV";
675
676    /// Used to determine the root install path of Conda.
677    #[attr_added_in("0.8.18")]
678    pub const CONDA_ROOT: &'static str = "_CONDA_ROOT";
679
680    /// Used to determine if we're running in Dependabot.
681    #[attr_added_in("0.9.11")]
682    pub const DEPENDABOT: &'static str = "DEPENDABOT";
683
684    /// If set to `1` before a virtual environment is activated, then the
685    /// virtual environment name will not be prepended to the terminal prompt.
686    #[attr_added_in("0.0.5")]
687    pub const VIRTUAL_ENV_DISABLE_PROMPT: &'static str = "VIRTUAL_ENV_DISABLE_PROMPT";
688
689    /// Used to detect the use of the Windows Command Prompt (as opposed to PowerShell).
690    #[attr_added_in("0.1.16")]
691    pub const PROMPT: &'static str = "PROMPT";
692
693    /// Used to detect `NuShell` usage.
694    #[attr_added_in("0.1.16")]
695    pub const NU_VERSION: &'static str = "NU_VERSION";
696
697    /// Used to detect Fish shell usage.
698    #[attr_added_in("0.1.28")]
699    pub const FISH_VERSION: &'static str = "FISH_VERSION";
700
701    /// Used to detect Bash shell usage.
702    #[attr_added_in("0.1.28")]
703    pub const BASH_VERSION: &'static str = "BASH_VERSION";
704
705    /// Used to detect Zsh shell usage.
706    #[attr_added_in("0.1.28")]
707    pub const ZSH_VERSION: &'static str = "ZSH_VERSION";
708
709    /// Used to determine which `.zshenv` to use when Zsh is being used.
710    #[attr_added_in("0.2.25")]
711    pub const ZDOTDIR: &'static str = "ZDOTDIR";
712
713    /// Used to detect Ksh shell usage.
714    #[attr_added_in("0.2.33")]
715    pub const KSH_VERSION: &'static str = "KSH_VERSION";
716
717    /// Used with `--python-platform macos` and related variants to set the
718    /// deployment target (i.e., the minimum supported macOS version).
719    ///
720    /// Defaults to `13.0`, the least-recent non-EOL macOS version at time of writing.
721    #[attr_added_in("0.1.42")]
722    pub const MACOSX_DEPLOYMENT_TARGET: &'static str = "MACOSX_DEPLOYMENT_TARGET";
723
724    /// Used with `--python-platform arm64-apple-ios` and related variants to set the
725    /// deployment target (i.e., the minimum supported iOS version).
726    ///
727    /// Defaults to `13.0`.
728    #[attr_added_in("0.8.16")]
729    pub const IPHONEOS_DEPLOYMENT_TARGET: &'static str = "IPHONEOS_DEPLOYMENT_TARGET";
730
731    /// Used with `--python-platform aarch64-linux-android` and related variants to set the
732    /// Android API level. (i.e., the minimum supported Android API level).
733    ///
734    /// Defaults to `24`.
735    #[attr_added_in("0.8.16")]
736    pub const ANDROID_API_LEVEL: &'static str = "ANDROID_API_LEVEL";
737
738    /// Disables colored output (takes precedence over `FORCE_COLOR`).
739    ///
740    /// See [no-color.org](https://no-color.org).
741    #[attr_added_in("0.2.7")]
742    pub const NO_COLOR: &'static str = "NO_COLOR";
743
744    /// Forces colored output regardless of terminal support.
745    ///
746    /// See [force-color.org](https://force-color.org).
747    #[attr_added_in("0.2.7")]
748    pub const FORCE_COLOR: &'static str = "FORCE_COLOR";
749
750    /// Use to control color via `anstyle`.
751    #[attr_added_in("0.1.32")]
752    pub const CLICOLOR_FORCE: &'static str = "CLICOLOR_FORCE";
753
754    /// The standard `PATH` env var.
755    #[attr_added_in("0.0.5")]
756    pub const PATH: &'static str = "PATH";
757
758    /// The standard `HOME` env var.
759    #[attr_added_in("0.0.5")]
760    pub const HOME: &'static str = "HOME";
761
762    /// The standard `SHELL` posix env var.
763    #[attr_added_in("0.1.16")]
764    pub const SHELL: &'static str = "SHELL";
765
766    /// The standard `PWD` posix env var.
767    #[attr_added_in("0.0.5")]
768    pub const PWD: &'static str = "PWD";
769
770    /// Used to look for Microsoft Store Pythons installations.
771    #[attr_added_in("0.3.3")]
772    pub const LOCALAPPDATA: &'static str = "LOCALAPPDATA";
773
774    /// Path to the `.git` directory. Ignored by `uv` when performing fetch.
775    #[attr_hidden]
776    #[attr_added_in("0.0.5")]
777    pub const GIT_DIR: &'static str = "GIT_DIR";
778
779    /// Path to the git working tree. Ignored by `uv` when performing fetch.
780    #[attr_hidden]
781    #[attr_added_in("0.0.5")]
782    pub const GIT_WORK_TREE: &'static str = "GIT_WORK_TREE";
783
784    /// Path to the index file for staged changes. Ignored by `uv` when performing fetch.
785    #[attr_hidden]
786    #[attr_added_in("0.0.5")]
787    pub const GIT_INDEX_FILE: &'static str = "GIT_INDEX_FILE";
788
789    /// Path to where git object files are located. Ignored by `uv` when performing fetch.
790    #[attr_hidden]
791    #[attr_added_in("0.0.5")]
792    pub const GIT_OBJECT_DIRECTORY: &'static str = "GIT_OBJECT_DIRECTORY";
793
794    /// Alternate locations for git objects. Ignored by `uv` when performing fetch.
795    #[attr_hidden]
796    #[attr_added_in("0.0.5")]
797    pub const GIT_ALTERNATE_OBJECT_DIRECTORIES: &'static str = "GIT_ALTERNATE_OBJECT_DIRECTORIES";
798
799    /// Disables SSL verification for git operations.
800    #[attr_hidden]
801    #[attr_added_in("0.5.28")]
802    pub const GIT_SSL_NO_VERIFY: &'static str = "GIT_SSL_NO_VERIFY";
803
804    /// Sets allowed protocols for git operations.
805    ///
806    /// When uv is in "offline" mode, only the "file" protocol is allowed.
807    #[attr_hidden]
808    #[attr_added_in("0.6.13")]
809    pub const GIT_ALLOW_PROTOCOL: &'static str = "GIT_ALLOW_PROTOCOL";
810
811    /// Sets the SSH command used when Git tries to establish a connection using SSH.
812    #[attr_hidden]
813    #[attr_added_in("0.7.11")]
814    pub const GIT_SSH_COMMAND: &'static str = "GIT_SSH_COMMAND";
815
816    /// Disable interactive git prompts in terminals, e.g., for credentials. Does not disable
817    /// GUI prompts.
818    #[attr_hidden]
819    #[attr_added_in("0.6.4")]
820    pub const GIT_TERMINAL_PROMPT: &'static str = "GIT_TERMINAL_PROMPT";
821
822    /// Skip Smudge LFS Filter.
823    #[attr_hidden]
824    #[attr_added_in("0.9.15")]
825    pub const GIT_LFS_SKIP_SMUDGE: &'static str = "GIT_LFS_SKIP_SMUDGE";
826
827    /// Used in tests to set the user global git config location.
828    #[attr_hidden]
829    #[attr_added_in("0.9.15")]
830    pub const GIT_CONFIG_GLOBAL: &'static str = "GIT_CONFIG_GLOBAL";
831
832    /// Used in tests for better git isolation.
833    ///
834    /// For example, we run some tests in ~/.local/share/uv/tests.
835    /// And if the user's `$HOME` directory is a git repository,
836    /// this will change the behavior of some tests. Setting
837    /// `GIT_CEILING_DIRECTORIES=/home/andrew/.local/share/uv/tests` will
838    /// prevent git from crawling up the directory tree past that point to find
839    /// parent git repositories.
840    #[attr_hidden]
841    #[attr_added_in("0.4.29")]
842    pub const GIT_CEILING_DIRECTORIES: &'static str = "GIT_CEILING_DIRECTORIES";
843
844    /// Indicates that the current process is running in GitHub Actions.
845    ///
846    /// `uv publish` may attempt trusted publishing flows when set
847    /// to `true`.
848    #[attr_added_in("0.4.16")]
849    pub const GITHUB_ACTIONS: &'static str = "GITHUB_ACTIONS";
850
851    /// Indicates that the current process is running in GitLab CI.
852    ///
853    /// `uv publish` may attempt trusted publishing flows when set
854    /// to `true`.
855    #[attr_added_in("0.8.18")]
856    pub const GITLAB_CI: &'static str = "GITLAB_CI";
857
858    /// Used for testing GitLab CI trusted publishing.
859    #[attr_hidden]
860    #[attr_added_in("0.8.18")]
861    pub const PYPI_ID_TOKEN: &'static str = "PYPI_ID_TOKEN";
862
863    /// Used for testing GitLab CI trusted publishing.
864    #[attr_hidden]
865    #[attr_added_in("0.8.18")]
866    pub const TESTPYPI_ID_TOKEN: &'static str = "TESTPYPI_ID_TOKEN";
867
868    /// Sets the encoding for standard I/O streams (e.g., PYTHONIOENCODING=utf-8).
869    #[attr_hidden]
870    #[attr_added_in("0.4.18")]
871    pub const PYTHONIOENCODING: &'static str = "PYTHONIOENCODING";
872
873    /// Forces unbuffered I/O streams, equivalent to `-u` in Python.
874    #[attr_hidden]
875    #[attr_added_in("0.1.15")]
876    pub const PYTHONUNBUFFERED: &'static str = "PYTHONUNBUFFERED";
877
878    /// Enables UTF-8 mode for Python, equivalent to `-X utf8`.
879    #[attr_hidden]
880    #[attr_added_in("0.4.19")]
881    pub const PYTHONUTF8: &'static str = "PYTHONUTF8";
882
883    /// Adds directories to Python module search path (e.g., `PYTHONPATH=/path/to/modules`).
884    #[attr_added_in("0.1.22")]
885    pub const PYTHONPATH: &'static str = "PYTHONPATH";
886
887    /// Used to set the location of Python stdlib when using trampolines.
888    #[attr_hidden]
889    #[attr_added_in("0.7.13")]
890    pub const PYTHONHOME: &'static str = "PYTHONHOME";
891
892    /// Used to correctly detect virtual environments when using trampolines.
893    #[attr_hidden]
894    #[attr_added_in("0.7.13")]
895    pub const PYVENV_LAUNCHER: &'static str = "__PYVENV_LAUNCHER__";
896
897    /// Used in tests to enforce a consistent locale setting.
898    #[attr_hidden]
899    #[attr_added_in("0.4.28")]
900    pub const LC_ALL: &'static str = "LC_ALL";
901
902    /// Typically set by CI runners, used to detect a CI runner.
903    #[attr_hidden]
904    #[attr_added_in("0.0.5")]
905    pub const CI: &'static str = "CI";
906
907    /// Azure DevOps build identifier, used to detect CI environments.
908    #[attr_hidden]
909    #[attr_added_in("0.1.22")]
910    pub const BUILD_BUILDID: &'static str = "BUILD_BUILDID";
911
912    /// Generic build identifier, used to detect CI environments.
913    #[attr_hidden]
914    #[attr_added_in("0.1.22")]
915    pub const BUILD_ID: &'static str = "BUILD_ID";
916
917    /// Pip environment variable to indicate CI environment.
918    #[attr_hidden]
919    #[attr_added_in("0.1.22")]
920    pub const PIP_IS_CI: &'static str = "PIP_IS_CI";
921
922    /// Use to set the .netrc file location.
923    #[attr_added_in("0.1.16")]
924    pub const NETRC: &'static str = "NETRC";
925
926    /// The standard `PAGER` posix env var. Used by `uv` to configure the appropriate pager.
927    #[attr_added_in("0.4.18")]
928    pub const PAGER: &'static str = "PAGER";
929
930    /// Used to detect when running inside a Jupyter notebook.
931    #[attr_added_in("0.2.6")]
932    pub const JPY_SESSION_NAME: &'static str = "JPY_SESSION_NAME";
933
934    /// Use to create the tracing root directory via the `tracing-durations-export` feature.
935    #[attr_hidden]
936    #[attr_added_in("0.1.32")]
937    pub const TRACING_DURATIONS_TEST_ROOT: &'static str = "TRACING_DURATIONS_TEST_ROOT";
938
939    /// Use to create the tracing durations file via the `tracing-durations-export` feature.
940    #[attr_added_in("0.0.5")]
941    pub const TRACING_DURATIONS_FILE: &'static str = "TRACING_DURATIONS_FILE";
942
943    /// Used to set `RUST_HOST_TARGET` at build time via `build.rs`.
944    #[attr_hidden]
945    #[attr_added_in("0.1.11")]
946    pub const TARGET: &'static str = "TARGET";
947
948    /// If set, uv will use this value as the log level for its `--verbose` output. Accepts
949    /// any filter compatible with the `tracing_subscriber` crate.
950    ///
951    /// For example:
952    ///
953    /// * `RUST_LOG=uv=debug` is the equivalent of adding `--verbose` to the command line
954    /// * `RUST_LOG=trace` will enable trace-level logging.
955    ///
956    /// See the [tracing documentation](https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#example-syntax)
957    /// for more.
958    #[attr_added_in("0.0.5")]
959    pub const RUST_LOG: &'static str = "RUST_LOG";
960
961    /// If set, it can be used to display more stack trace details when a panic occurs.
962    /// This is used by uv particularly on windows to show more details during a platform exception.
963    ///
964    /// For example:
965    ///
966    /// * `RUST_BACKTRACE=1` will print a short backtrace.
967    /// * `RUST_BACKTRACE=full` will print a full backtrace.
968    ///
969    /// See the [Rust backtrace documentation](https://doc.rust-lang.org/std/backtrace/index.html)
970    /// for more.
971    #[attr_added_in("0.7.22")]
972    pub const RUST_BACKTRACE: &'static str = "RUST_BACKTRACE";
973
974    /// Add additional context and structure to log messages.
975    ///
976    /// If logging is not enabled, e.g., with `RUST_LOG` or `-v`, this has no effect.
977    #[attr_added_in("0.6.4")]
978    pub const UV_LOG_CONTEXT: &'static str = "UV_LOG_CONTEXT";
979
980    /// Use to set the stack size used by uv.
981    ///
982    /// The value is in bytes, and if both `UV_STACK_SIZE` are `RUST_MIN_STACK` unset, uv uses a 4MB
983    /// (4194304) stack. `UV_STACK_SIZE` takes precedence over `RUST_MIN_STACK`.
984    ///
985    /// Unlike the normal `RUST_MIN_STACK` semantics, this can affect main thread
986    /// stack size, because we actually spawn our own main2 thread to work around
987    /// the fact that Windows' real main thread is only 1MB. That thread has size
988    /// `max(UV_STACK_SIZE, 1MB)`.
989    #[attr_added_in("0.0.5")]
990    pub const UV_STACK_SIZE: &'static str = "UV_STACK_SIZE";
991
992    /// Use to set the stack size used by uv.
993    ///
994    /// The value is in bytes, and if both `UV_STACK_SIZE` are `RUST_MIN_STACK` unset, uv uses a 4MB
995    /// (4194304) stack. `UV_STACK_SIZE` takes precedence over `RUST_MIN_STACK`.
996    ///
997    /// Prefer setting `UV_STACK_SIZE`, since `RUST_MIN_STACK` also affects subprocesses, such as
998    /// build backends that use Rust code.
999    ///
1000    /// Unlike the normal `RUST_MIN_STACK` semantics, this can affect main thread
1001    /// stack size, because we actually spawn our own main2 thread to work around
1002    /// the fact that Windows' real main thread is only 1MB. That thread has size
1003    /// `max(RUST_MIN_STACK, 1MB)`.
1004    #[attr_added_in("0.5.19")]
1005    pub const RUST_MIN_STACK: &'static str = "RUST_MIN_STACK";
1006
1007    /// The directory containing the `Cargo.toml` manifest for a package.
1008    #[attr_hidden]
1009    #[attr_added_in("0.1.11")]
1010    pub const CARGO_MANIFEST_DIR: &'static str = "CARGO_MANIFEST_DIR";
1011
1012    /// Specifies the directory where Cargo stores build artifacts (target directory).
1013    #[attr_hidden]
1014    #[attr_added_in("0.0.5")]
1015    pub const CARGO_TARGET_DIR: &'static str = "CARGO_TARGET_DIR";
1016
1017    /// Set by cargo when compiling for Windows-like platforms.
1018    #[attr_hidden]
1019    #[attr_added_in("0.0.5")]
1020    pub const CARGO_CFG_WINDOWS: &'static str = "CARGO_CFG_WINDOWS";
1021
1022    /// Specifies the directory where Cargo stores intermediate build artifacts.
1023    #[attr_hidden]
1024    #[attr_added_in("0.8.25")]
1025    pub const OUT_DIR: &'static str = "OUT_DIR";
1026
1027    /// Used in tests for environment substitution testing in `requirements.in`.
1028    #[attr_hidden]
1029    #[attr_added_in("0.1.18")]
1030    pub const URL: &'static str = "URL";
1031
1032    /// Used in tests for environment substitution testing in `requirements.in`.
1033    #[attr_hidden]
1034    #[attr_added_in("0.1.18")]
1035    pub const FILE_PATH: &'static str = "FILE_PATH";
1036
1037    /// Used in tests for environment substitution testing in `requirements.in`.
1038    #[attr_hidden]
1039    #[attr_added_in("0.1.25")]
1040    pub const HATCH_PATH: &'static str = "HATCH_PATH";
1041
1042    /// Used in tests for environment substitution testing in `requirements.in`.
1043    #[attr_hidden]
1044    #[attr_added_in("0.1.25")]
1045    pub const BLACK_PATH: &'static str = "BLACK_PATH";
1046
1047    /// Used in testing Hatch's root.uri feature
1048    ///
1049    /// See: <https://hatch.pypa.io/dev/config/dependency/#local>.
1050    #[attr_hidden]
1051    #[attr_added_in("0.1.22")]
1052    pub const ROOT_PATH: &'static str = "ROOT_PATH";
1053
1054    /// Used in testing extra build dependencies.
1055    #[attr_hidden]
1056    #[attr_added_in("0.8.5")]
1057    pub const EXPECTED_ANYIO_VERSION: &'static str = "EXPECTED_ANYIO_VERSION";
1058
1059    /// Used to set test credentials for keyring tests.
1060    #[attr_hidden]
1061    #[attr_added_in("0.1.34")]
1062    pub const KEYRING_TEST_CREDENTIALS: &'static str = "KEYRING_TEST_CREDENTIALS";
1063
1064    /// Used to disable delay for HTTP retries in tests.
1065    #[attr_added_in("0.7.21")]
1066    pub const UV_TEST_NO_HTTP_RETRY_DELAY: &'static str = "UV_TEST_NO_HTTP_RETRY_DELAY";
1067
1068    /// Used to set a packse index url for tests.
1069    #[attr_hidden]
1070    #[attr_added_in("0.2.12")]
1071    pub const UV_TEST_PACKSE_INDEX: &'static str = "UV_TEST_PACKSE_INDEX";
1072
1073    /// Used for testing named indexes in tests.
1074    #[attr_hidden]
1075    #[attr_added_in("0.5.21")]
1076    pub const UV_INDEX_MY_INDEX_USERNAME: &'static str = "UV_INDEX_MY_INDEX_USERNAME";
1077
1078    /// Used for testing named indexes in tests.
1079    #[attr_hidden]
1080    #[attr_added_in("0.5.21")]
1081    pub const UV_INDEX_MY_INDEX_PASSWORD: &'static str = "UV_INDEX_MY_INDEX_PASSWORD";
1082
1083    /// Used to set the GitHub fast-path url for tests.
1084    #[attr_hidden]
1085    #[attr_added_in("0.7.15")]
1086    pub const UV_GITHUB_FAST_PATH_URL: &'static str = "UV_GITHUB_FAST_PATH_URL";
1087
1088    /// Hide progress messages with non-deterministic order in tests.
1089    #[attr_hidden]
1090    #[attr_added_in("0.5.29")]
1091    pub const UV_TEST_NO_CLI_PROGRESS: &'static str = "UV_TEST_NO_CLI_PROGRESS";
1092
1093    /// Used to mock the current timestamp for relative `--exclude-newer` times in tests.
1094    /// Should be set to an RFC 3339 timestamp (e.g., `2025-11-21T12:00:00Z`).
1095    #[attr_hidden]
1096    #[attr_added_in("0.9.8")]
1097    pub const UV_TEST_CURRENT_TIMESTAMP: &'static str = "UV_TEST_CURRENT_TIMESTAMP";
1098
1099    /// `.env` files from which to load environment variables when executing `uv run` commands.
1100    #[attr_added_in("0.4.30")]
1101    pub const UV_ENV_FILE: &'static str = "UV_ENV_FILE";
1102
1103    /// Ignore `.env` files when executing `uv run` commands.
1104    #[attr_added_in("0.4.30")]
1105    pub const UV_NO_ENV_FILE: &'static str = "UV_NO_ENV_FILE";
1106
1107    /// The URL from which to download uv using the standalone installer and `self update` feature,
1108    /// in lieu of the default GitHub URL.
1109    #[attr_added_in("0.5.0")]
1110    pub const UV_INSTALLER_GITHUB_BASE_URL: &'static str = "UV_INSTALLER_GITHUB_BASE_URL";
1111
1112    /// The URL from which to download uv using the standalone installer and `self update` feature,
1113    /// in lieu of the default GitHub Enterprise URL.
1114    #[attr_added_in("0.5.0")]
1115    pub const UV_INSTALLER_GHE_BASE_URL: &'static str = "UV_INSTALLER_GHE_BASE_URL";
1116
1117    /// The directory in which to install uv using the standalone installer and `self update` feature.
1118    /// Defaults to `~/.local/bin`.
1119    #[attr_added_in("0.5.0")]
1120    pub const UV_INSTALL_DIR: &'static str = "UV_INSTALL_DIR";
1121
1122    /// Used ephemeral environments like CI to install uv to a specific path while preventing
1123    /// the installer from modifying shell profiles or environment variables.
1124    #[attr_added_in("0.5.0")]
1125    pub const UV_UNMANAGED_INSTALL: &'static str = "UV_UNMANAGED_INSTALL";
1126
1127    /// The URL from which to download uv using the standalone installer. By default, installs from
1128    /// uv's GitHub Releases. `INSTALLER_DOWNLOAD_URL` is also supported as an alias, for backwards
1129    /// compatibility.
1130    #[attr_added_in("0.8.4")]
1131    pub const UV_DOWNLOAD_URL: &'static str = "UV_DOWNLOAD_URL";
1132
1133    /// Avoid modifying the `PATH` environment variable when installing uv using the standalone
1134    /// installer and `self update` feature. `INSTALLER_NO_MODIFY_PATH` is also supported as an
1135    /// alias, for backwards compatibility.
1136    #[attr_added_in("0.8.4")]
1137    pub const UV_NO_MODIFY_PATH: &'static str = "UV_NO_MODIFY_PATH";
1138
1139    /// Skip writing `uv` installer metadata files (e.g., `INSTALLER`, `REQUESTED`, and `direct_url.json`) to site-packages `.dist-info` directories.
1140    #[attr_added_in("0.5.7")]
1141    pub const UV_NO_INSTALLER_METADATA: &'static str = "UV_NO_INSTALLER_METADATA";
1142
1143    /// Enables fetching files stored in Git LFS when installing a package from a Git repository.
1144    #[attr_added_in("0.5.19")]
1145    pub const UV_GIT_LFS: &'static str = "UV_GIT_LFS";
1146
1147    /// Number of times that `uv run` has been recursively invoked. Used to guard against infinite
1148    /// recursion, e.g., when `uv run`` is used in a script shebang.
1149    #[attr_hidden]
1150    #[attr_added_in("0.5.31")]
1151    pub const UV_RUN_RECURSION_DEPTH: &'static str = "UV_RUN_RECURSION_DEPTH";
1152
1153    /// Number of times that `uv run` will allow recursive invocations, before exiting with an
1154    /// error.
1155    #[attr_hidden]
1156    #[attr_added_in("0.5.31")]
1157    pub const UV_RUN_MAX_RECURSION_DEPTH: &'static str = "UV_RUN_MAX_RECURSION_DEPTH";
1158
1159    /// Overrides terminal width used for wrapping. This variable is not read by uv directly.
1160    ///
1161    /// This is a quasi-standard variable, described, e.g., in `ncurses(3x)`.
1162    #[attr_added_in("0.6.2")]
1163    pub const COLUMNS: &'static str = "COLUMNS";
1164
1165    /// The CUDA driver version to assume when inferring the PyTorch backend (e.g., `550.144.03`).
1166    #[attr_hidden]
1167    #[attr_added_in("0.6.9")]
1168    pub const UV_CUDA_DRIVER_VERSION: &'static str = "UV_CUDA_DRIVER_VERSION";
1169
1170    /// The AMD GPU architecture to assume when inferring the PyTorch backend (e.g., `gfx1100`).
1171    #[attr_hidden]
1172    #[attr_added_in("0.7.14")]
1173    pub const UV_AMD_GPU_ARCHITECTURE: &'static str = "UV_AMD_GPU_ARCHITECTURE";
1174
1175    /// Equivalent to the `--torch-backend` command-line argument (e.g., `cpu`, `cu126`, or `auto`).
1176    #[attr_added_in("0.6.9")]
1177    pub const UV_TORCH_BACKEND: &'static str = "UV_TORCH_BACKEND";
1178
1179    /// Equivalent to the `--project` command-line argument.
1180    #[attr_added_in("0.4.4")]
1181    pub const UV_PROJECT: &'static str = "UV_PROJECT";
1182
1183    /// Equivalent to the `--directory` command-line argument. `UV_WORKING_DIRECTORY` (added in
1184    /// v0.9.1) is also supported for backwards compatibility.
1185    #[attr_added_in("next version")]
1186    pub const UV_WORKING_DIR: &'static str = "UV_WORKING_DIR";
1187
1188    /// Equivalent to the `--directory` command-line argument.
1189    #[attr_hidden]
1190    #[attr_added_in("0.9.1")]
1191    pub const UV_WORKING_DIRECTORY: &'static str = "UV_WORKING_DIRECTORY";
1192
1193    /// Disable GitHub-specific requests that allow uv to skip `git fetch` in some circumstances.
1194    #[attr_added_in("0.7.13")]
1195    pub const UV_NO_GITHUB_FAST_PATH: &'static str = "UV_NO_GITHUB_FAST_PATH";
1196
1197    /// Authentication token for Hugging Face requests. When set, uv will use this token
1198    /// when making requests to `https://huggingface.co/` and any subdomains.
1199    #[attr_added_in("0.8.1")]
1200    pub const HF_TOKEN: &'static str = "HF_TOKEN";
1201
1202    /// Disable Hugging Face authentication, even if `HF_TOKEN` is set.
1203    #[attr_added_in("0.8.1")]
1204    pub const UV_NO_HF_TOKEN: &'static str = "UV_NO_HF_TOKEN";
1205
1206    /// The URL to treat as an S3-compatible storage endpoint. Requests to this endpoint
1207    /// will be signed using AWS Signature Version 4 based on the `AWS_ACCESS_KEY_ID`,
1208    /// `AWS_SECRET_ACCESS_KEY`, `AWS_PROFILE`, and `AWS_CONFIG_FILE` environment variables.
1209    #[attr_added_in("0.8.21")]
1210    pub const UV_S3_ENDPOINT_URL: &'static str = "UV_S3_ENDPOINT_URL";
1211
1212    /// The URL to treat as a GCS-compatible storage endpoint. Requests to this endpoint
1213    /// will be signed using Google Cloud authentication based on the `GOOGLE_APPLICATION_CREDENTIALS`
1214    /// environment variable or Application Default Credentials.
1215    #[attr_added_in("0.9.26")]
1216    pub const UV_GCS_ENDPOINT_URL: &'static str = "UV_GCS_ENDPOINT_URL";
1217
1218    /// The URL of the pyx Simple API server.
1219    #[attr_added_in("0.8.15")]
1220    pub const PYX_API_URL: &'static str = "PYX_API_URL";
1221
1222    /// The domain of the pyx CDN.
1223    #[attr_added_in("0.8.15")]
1224    pub const PYX_CDN_DOMAIN: &'static str = "PYX_CDN_DOMAIN";
1225
1226    /// The pyx API key (e.g., `sk-pyx-...`).
1227    #[attr_added_in("0.8.15")]
1228    pub const PYX_API_KEY: &'static str = "PYX_API_KEY";
1229
1230    /// The pyx API key, for backwards compatibility.
1231    #[attr_hidden]
1232    #[attr_added_in("0.8.15")]
1233    pub const UV_API_KEY: &'static str = "UV_API_KEY";
1234
1235    /// The pyx authentication token (e.g., `eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...`), as output by `uv auth token`.
1236    #[attr_added_in("0.8.15")]
1237    pub const PYX_AUTH_TOKEN: &'static str = "PYX_AUTH_TOKEN";
1238
1239    /// The pyx authentication token, for backwards compatibility.
1240    #[attr_hidden]
1241    #[attr_added_in("0.8.15")]
1242    pub const UV_AUTH_TOKEN: &'static str = "UV_AUTH_TOKEN";
1243
1244    /// Specifies the directory where uv stores pyx credentials.
1245    #[attr_added_in("0.8.15")]
1246    pub const PYX_CREDENTIALS_DIR: &'static str = "PYX_CREDENTIALS_DIR";
1247
1248    /// The AWS region to use when signing S3 requests.
1249    #[attr_added_in("0.8.21")]
1250    pub const AWS_REGION: &'static str = "AWS_REGION";
1251
1252    /// The default AWS region to use when signing S3 requests, if `AWS_REGION` is not set.
1253    #[attr_added_in("0.8.21")]
1254    pub const AWS_DEFAULT_REGION: &'static str = "AWS_DEFAULT_REGION";
1255
1256    /// The AWS access key ID to use when signing S3 requests.
1257    #[attr_added_in("0.8.21")]
1258    pub const AWS_ACCESS_KEY_ID: &'static str = "AWS_ACCESS_KEY_ID";
1259
1260    /// The AWS secret access key to use when signing S3 requests.
1261    #[attr_added_in("0.8.21")]
1262    pub const AWS_SECRET_ACCESS_KEY: &'static str = "AWS_SECRET_ACCESS_KEY";
1263
1264    /// The AWS session token to use when signing S3 requests.
1265    #[attr_added_in("0.8.21")]
1266    pub const AWS_SESSION_TOKEN: &'static str = "AWS_SESSION_TOKEN";
1267
1268    /// The AWS profile to use when signing S3 requests.
1269    #[attr_added_in("0.8.21")]
1270    pub const AWS_PROFILE: &'static str = "AWS_PROFILE";
1271
1272    /// The AWS config file to use when signing S3 requests.
1273    #[attr_added_in("0.8.21")]
1274    pub const AWS_CONFIG_FILE: &'static str = "AWS_CONFIG_FILE";
1275
1276    /// The AWS shared credentials file to use when signing S3 requests.
1277    #[attr_added_in("0.8.21")]
1278    pub const AWS_SHARED_CREDENTIALS_FILE: &'static str = "AWS_SHARED_CREDENTIALS_FILE";
1279
1280    /// Avoid verifying that wheel filenames match their contents when installing wheels. This
1281    /// is not recommended, as wheels with inconsistent filenames should be considered invalid and
1282    /// corrected by the relevant package maintainers; however, this option can be used to work
1283    /// around invalid artifacts in rare cases.
1284    #[attr_added_in("0.8.23")]
1285    pub const UV_SKIP_WHEEL_FILENAME_CHECK: &'static str = "UV_SKIP_WHEEL_FILENAME_CHECK";
1286
1287    /// Suppress output from the build backend when building source distributions, even in the event
1288    /// of build failures.
1289    #[attr_added_in("0.9.15")]
1290    pub const UV_HIDE_BUILD_OUTPUT: &'static str = "UV_HIDE_BUILD_OUTPUT";
1291
1292    /// The time in seconds uv waits for a file lock to become available.
1293    ///
1294    /// Defaults to 300s (5 min).
1295    #[attr_added_in("0.9.4")]
1296    pub const UV_LOCK_TIMEOUT: &'static str = "UV_LOCK_TIMEOUT";
1297}