mirror of
https://github.com/astral-sh/uv.git
synced 2025-08-04 02:48:17 +00:00
![]() ## Summary This PR adds the `--prompt` option to `venv` subcommand. The default behavior for `uv venv` is to create a virtual environment in the current directory with `.venv` name. This is different from `venv` / `virtualenv` where a user always needs to provide the virtual environment path. This allows us to define our own behavior in the default scenario (`uv venv`). We've decided to use the current directory's name in that case. Workflows: | Command | Virtual Environment Name | Prompt | |--------|--------|--------| | `uv venv` | `.venv` (default) | Current directory name | | `uv venv project` | `project` | `project` | | `uv venv --prompt .` | `.venv` | Current directory name | | `uv venv --prompt foobar` | `.venv` | `foobar` | | `uv venv project --prompt foobar` | `project` | `foobar` | Fixes #1445 ## Test Plan This is my first Rust code and I don't know how to write tests yet. I just checked the behavior manually: ``` $ cargo build $ mkdir t $ cd t $ ../target/debug/uv venv -p 3.11 $ rg -w t .venv/bin/acti* .venv/bin/activate.csh 13:setenv VIRTUAL_ENV '/Users/inada-n/work/uv/t/.venv' 20:if ('t' != "") then 21: setenv VIRTUAL_ENV_PROMPT 't' 23: setenv VIRTUAL_ENV_PROMPT "$VIRTUAL_ENV:t:q" 38: # in which case, $prompt is undefined and we wouldn't .venv/bin/activate 48:VIRTUAL_ENV='/Users/inada-n/work/uv/t/.venv' 59: VIRTUAL_ENV_PROMPT="t" .venv/bin/activate.fish 61:set -gx VIRTUAL_ENV '/Users/inada-n/work/uv/t/.venv' 73:if test -n 't' 74: set -gx VIRTUAL_ENV_PROMPT 't' .venv/bin/activate.ps1 40:if ("t" -ne "") { 41: $env:VIRTUAL_ENV_PROMPT = "t" .venv/bin/activate.nu 6:# but then simply `deactivate` won't work because it is just an alias to hide 35: let virtual_env = '/Users/inada-n/work/uv/t/.venv' 50: let virtual_env_prompt = (if ('t' | is-empty) { 53: 't' ``` --------- Co-authored-by: Dhruv Manilawala <dhruvmanila@gmail.com> |
||
---|---|---|
.. | ||
src | ||
.gitignore | ||
Cargo.toml |