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
------
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
-------------------------
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 ``""``.
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
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
-# 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
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__"
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
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