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