diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst index f09e09c2b90..6615a2e28ef 100644 --- a/Doc/whatsnew/3.9.rst +++ b/Doc/whatsnew/3.9.rst @@ -118,6 +118,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 ------ @@ -191,12 +201,14 @@ Removed Use :meth:`~threading.Thread.is_alive()` instead. (Contributed by Dong-hee Na in :issue:`37804`.) + Porting to Python 3.9 ===================== This section lists previously described changes and other bugfixes that may require changes to your code. + Changes in the Python API ------------------------- @@ -205,3 +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 ``""``. diff --git a/Lib/venv/scripts/common/activate b/Lib/venv/scripts/common/activate index fff0765af53..6a2320a369c 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 + PS1="__VENV_PROMPT__${PS1:-}" export PS1 fi diff --git a/Lib/venv/scripts/posix/activate.csh b/Lib/venv/scripts/posix/activate.csh index b0c7028a929..68a0dc74e1a 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 diff --git a/Lib/venv/scripts/posix/activate.fish b/Lib/venv/scripts/posix/activate.fish index b40105825ea..777d51cb69b 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; 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" | . + # Output the original/"old" prompt. _old_fish_prompt end 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 00000000000..1f9f9d9e44a --- /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__.