From dc765cd8102e6438d7dad6e60885a7ccca0246b2 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 24 Jul 2019 14:33:50 -0700 Subject: [PATCH 1/8] Simplify bash venv activation --- Lib/venv/scripts/common/activate | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/Lib/venv/scripts/common/activate b/Lib/venv/scripts/common/activate index fff0765af53b82..e8248858bdf7d2 100644 --- a/Lib/venv/scripts/common/activate +++ b/Lib/venv/scripts/common/activate @@ -54,17 +54,7 @@ fi if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then _OLD_VIRTUAL_PS1="${PS1:-}" - if [ "x__VENV_PROMPT__" != x ] ; then PS1="__VENV_PROMPT__${PS1:-}" - else - if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then - # special case for Aspen magic directories - # see http://www.zetadev.com/software/aspen/ - PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1" - else - PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1" - fi - fi export PS1 fi From 678c198e38904fc59156d33798308f40239274f4 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 24 Jul 2019 14:34:05 -0700 Subject: [PATCH 2/8] Simply csh venv activation --- Lib/venv/scripts/posix/activate.csh | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/Lib/venv/scripts/posix/activate.csh b/Lib/venv/scripts/posix/activate.csh index b0c7028a92955e..68a0dc74e1a3c7 100644 --- a/Lib/venv/scripts/posix/activate.csh +++ b/Lib/venv/scripts/posix/activate.csh @@ -17,19 +17,7 @@ setenv PATH "$VIRTUAL_ENV/__VENV_BIN_NAME__:$PATH" set _OLD_VIRTUAL_PROMPT="$prompt" if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then - if ("__VENV_NAME__" != "") then - set env_name = "__VENV_NAME__" - else - if (`basename "VIRTUAL_ENV"` == "__") then - # special case for Aspen magic directories - # see http://www.zetadev.com/software/aspen/ - set env_name = `basename \`dirname "$VIRTUAL_ENV"\`` - else - set env_name = `basename "$VIRTUAL_ENV"` - endif - endif - set prompt = "[$env_name] $prompt" - unset env_name + set prompt = "__VENV_PROMPT__$prompt" endif alias pydoc python -m pydoc From cab0b9f0dfbfd292b2565b091f23c8c5c6c15b01 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 24 Jul 2019 14:34:27 -0700 Subject: [PATCH 3/8] Simplify fish venv activation Also make the comments consistent. --- Lib/venv/scripts/posix/activate.fish | 33 ++++++++++------------------ 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/Lib/venv/scripts/posix/activate.fish b/Lib/venv/scripts/posix/activate.fish index b40105825eadb4..52f8441192e14e 100644 --- a/Lib/venv/scripts/posix/activate.fish +++ b/Lib/venv/scripts/posix/activate.fish @@ -1,5 +1,5 @@ -# This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org) -# you cannot run it directly +# This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org); +# you cannot run it directly. function deactivate -d "Exit virtualenv and return to normal shell environment" # reset old environment variables @@ -21,12 +21,12 @@ function deactivate -d "Exit virtualenv and return to normal shell environment" set -e VIRTUAL_ENV if test "$argv[1]" != "nondestructive" - # Self destruct! + # Self-destruct! functions -e deactivate end end -# unset irrelevant variables +# Unset irrelevant variables. deactivate nondestructive set -gx VIRTUAL_ENV "__VENV_DIR__" @@ -34,7 +34,7 @@ set -gx VIRTUAL_ENV "__VENV_DIR__" set -gx _OLD_VIRTUAL_PATH $PATH set -gx PATH "$VIRTUAL_ENV/__VENV_BIN_NAME__" $PATH -# unset PYTHONHOME if set +# Unset PYTHONHOME if set. if set -q PYTHONHOME set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME set -e PYTHONHOME @@ -43,31 +43,20 @@ end if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" # fish uses a function instead of an env var to generate the prompt. - # save the current fish_prompt function as the function _old_fish_prompt + # Save the current fish_prompt function as the function _old_fish_prompt. functions -c fish_prompt _old_fish_prompt - # with the original prompt function renamed, we can override with our own. + # With the original prompt function renamed, we can override with our own. function fish_prompt - # Save the return status of the last command + # Save the return status of the last command. set -l old_status $status - # Prompt override? - if test -n "__VENV_PROMPT__" - printf "%s%s" "__VENV_PROMPT__" (set_color normal) - else - # ...Otherwise, prepend env - set -l _checkbase (basename "$VIRTUAL_ENV") - if test $_checkbase = "__" - # special case for Aspen magic directories - # see http://www.zetadev.com/software/aspen/ - printf "%s[%s]%s " (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal) - else - printf "%s(%s)%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal) - end - end + # Output the venv prompt; colors taken from Python logo (blue & yellow, respectively). + printf "%s%s%s" (set_color -b 4B8BBE FFD43B) "__VENV_PROMPT__" (set_color normal) # Restore the return status of the previous command. echo "exit $old_status" | . + # Output the original/"old" prompt. _old_fish_prompt end From 5e881c68a9420875fc7a72e67583cad85e0a4749 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 24 Jul 2019 14:39:09 -0700 Subject: [PATCH 4/8] Add a news entry --- .../next/Library/2019-07-24-14-38-53.bpo-37663.h4-9-1.rst | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2019-07-24-14-38-53.bpo-37663.h4-9-1.rst diff --git a/Misc/NEWS.d/next/Library/2019-07-24-14-38-53.bpo-37663.h4-9-1.rst b/Misc/NEWS.d/next/Library/2019-07-24-14-38-53.bpo-37663.h4-9-1.rst new file mode 100644 index 00000000000000..1f9f9d9e44a79d --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-07-24-14-38-53.bpo-37663.h4-9-1.rst @@ -0,0 +1,2 @@ +Bring consistency to venv shell activation scripts by always using +__VENV_PROMPT__. From e30259aca40ab66eacd8f898d91c2e7230432ed2 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 24 Jul 2019 15:10:26 -0700 Subject: [PATCH 5/8] Add a What's New entry for the venv shell activation changes --- Doc/whatsnew/3.9.rst | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst index 85e254f061eb9a..666b0ea6a2da19 100644 --- a/Doc/whatsnew/3.9.rst +++ b/Doc/whatsnew/3.9.rst @@ -112,6 +112,16 @@ finalization crashed with a Python fatal error if a daemon thread was still running. (Contributed by Victor Stinner in :issue:`37266`.) +venv +---- + +The activation scripts provided by :mod:`venv` now all specify their prompt +customization consistently by always using the value specified by +``__VENV_PROMPT__``. Previously some scripts unconditionally used +``__VENV_PROMPT__``, others only if it happened to be set (which was the default +case), and one used ``__VENV_NAME__`` instead. +(Contributed by Brett Cannon in :issue:`37663`.) + pprint ------ @@ -176,4 +186,5 @@ Porting to Python 3.9 This section lists previously described changes and other bugfixes that may require changes to your code. - +* The :mod:`venv` activation scripts no longer special-case when + ``__VENV_PROMPT__`` is set to ``""``. From 574e92ba0bc189fc038a4d51f9faeb21a38ce439 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 24 Jul 2019 15:16:14 -0700 Subject: [PATCH 6/8] Drop the background color for fish --- Lib/venv/scripts/posix/activate.fish | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/venv/scripts/posix/activate.fish b/Lib/venv/scripts/posix/activate.fish index 52f8441192e14e..777d51cb69b0cc 100644 --- a/Lib/venv/scripts/posix/activate.fish +++ b/Lib/venv/scripts/posix/activate.fish @@ -51,8 +51,8 @@ if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" # Save the return status of the last command. set -l old_status $status - # Output the venv prompt; colors taken from Python logo (blue & yellow, respectively). - printf "%s%s%s" (set_color -b 4B8BBE FFD43B) "__VENV_PROMPT__" (set_color normal) + # Output the venv prompt; color taken from the blue of the Python logo. + printf "%s%s%s" (set_color 4B8BBE) "__VENV_PROMPT__" (set_color normal) # Restore the return status of the previous command. echo "exit $old_status" | . From a9994a9b507509b205effe714ebb215752b14038 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 24 Jul 2019 15:28:32 -0700 Subject: [PATCH 7/8] Fix indentation --- Lib/venv/scripts/common/activate | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/venv/scripts/common/activate b/Lib/venv/scripts/common/activate index e8248858bdf7d2..6a2320a369cb5c 100644 --- a/Lib/venv/scripts/common/activate +++ b/Lib/venv/scripts/common/activate @@ -54,7 +54,7 @@ fi if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then _OLD_VIRTUAL_PS1="${PS1:-}" - PS1="__VENV_PROMPT__${PS1:-}" + PS1="__VENV_PROMPT__${PS1:-}" export PS1 fi From 46b720622f306aa21f60b6e0aa796b94aee95365 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Wed, 21 Aug 2019 11:32:04 -0700 Subject: [PATCH 8/8] Strip trailing whitespace --- Doc/whatsnew/3.9.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst index 41704d50c48a45..6615a2e28effa1 100644 --- a/Doc/whatsnew/3.9.rst +++ b/Doc/whatsnew/3.9.rst @@ -217,6 +217,6 @@ Changes in the Python API catching the specific exception type and supporting both Python 3.9 and earlier versions will need to catch both: ``except (ImportError, ValueError):`` - + * The :mod:`venv` activation scripts no longer special-case when ``__VENV_PROMPT__`` is set to ``""``.