[Python-checkins] bpo-35328: Set VIRTUAL_ENV_PROMPT at venv activation (GH-21587)
Zackery Spytz
webhook-mailer at python.org
Tue Jul 28 04:42:05 EDT 2020
https://github.com/python/cpython/commit/c82dda1e08c4b74ca24f88d6a549d93108c319cf
commit: c82dda1e08c4b74ca24f88d6a549d93108c319cf
branch: master
author: Zackery Spytz <zspytz at gmail.com>
committer: GitHub <noreply at github.com>
date: 2020-07-28T09:41:57+01:00
summary:
bpo-35328: Set VIRTUAL_ENV_PROMPT at venv activation (GH-21587)
Co-Authored-By: Baptiste Darthenay <baptiste.darthenay at gmail.com>
files:
A Misc/NEWS.d/next/Library/2020-07-21-16-20-55.bpo-35328.jXovHb.rst
M Lib/venv/scripts/common/Activate.ps1
M Lib/venv/scripts/common/activate
M Lib/venv/scripts/nt/activate.bat
M Lib/venv/scripts/nt/deactivate.bat
M Lib/venv/scripts/posix/activate.csh
M Lib/venv/scripts/posix/activate.fish
diff --git a/Lib/venv/scripts/common/Activate.ps1 b/Lib/venv/scripts/common/Activate.ps1
index a3bc6fb1f05bf..51fc55c4ec7cb 100644
--- a/Lib/venv/scripts/common/Activate.ps1
+++ b/Lib/venv/scripts/common/Activate.ps1
@@ -96,6 +96,11 @@ function global:deactivate ([switch]$NonDestructive) {
Remove-Item -Path env:VIRTUAL_ENV
}
+ # Just remove VIRTUAL_ENV_PROMPT altogether.
+ if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) {
+ Remove-Item -Path env:VIRTUAL_ENV_PROMPT
+ }
+
# Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether:
if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) {
Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force
@@ -228,6 +233,7 @@ if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) {
Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) "
_OLD_VIRTUAL_PROMPT
}
+ $env:VIRTUAL_ENV_PROMPT = $Prompt
}
# Clear PYTHONHOME
diff --git a/Lib/venv/scripts/common/activate b/Lib/venv/scripts/common/activate
index 45af3536aa191..6fbc2b8801da0 100644
--- a/Lib/venv/scripts/common/activate
+++ b/Lib/venv/scripts/common/activate
@@ -28,6 +28,7 @@ deactivate () {
fi
unset VIRTUAL_ENV
+ unset VIRTUAL_ENV_PROMPT
if [ ! "${1:-}" = "nondestructive" ] ; then
# Self destruct!
unset -f deactivate
@@ -56,6 +57,8 @@ if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
_OLD_VIRTUAL_PS1="${PS1:-}"
PS1="__VENV_PROMPT__${PS1:-}"
export PS1
+ VIRTUAL_ENV_PROMPT="__VENV_PROMPT__"
+ export VIRTUAL_ENV_PROMPT
fi
# This should detect bash and zsh, which have a hash command that must
diff --git a/Lib/venv/scripts/nt/activate.bat b/Lib/venv/scripts/nt/activate.bat
index af4c7e0abacb1..c1c3c82ee37f1 100644
--- a/Lib/venv/scripts/nt/activate.bat
+++ b/Lib/venv/scripts/nt/activate.bat
@@ -25,6 +25,7 @@ if defined _OLD_VIRTUAL_PATH set PATH=%_OLD_VIRTUAL_PATH%
if not defined _OLD_VIRTUAL_PATH set _OLD_VIRTUAL_PATH=%PATH%
set PATH=%VIRTUAL_ENV%\__VENV_BIN_NAME__;%PATH%
+set VIRTUAL_ENV_PROMPT=__VENV_PROMPT__
:END
if defined _OLD_CODEPAGE (
diff --git a/Lib/venv/scripts/nt/deactivate.bat b/Lib/venv/scripts/nt/deactivate.bat
index 1205c618686fb..62a39a7584f4d 100644
--- a/Lib/venv/scripts/nt/deactivate.bat
+++ b/Lib/venv/scripts/nt/deactivate.bat
@@ -17,5 +17,6 @@ if defined _OLD_VIRTUAL_PATH (
set _OLD_VIRTUAL_PATH=
set VIRTUAL_ENV=
+set VIRTUAL_ENV_PROMPT=
:END
diff --git a/Lib/venv/scripts/posix/activate.csh b/Lib/venv/scripts/posix/activate.csh
index 68a0dc74e1a3c..d6f697c55ed81 100644
--- a/Lib/venv/scripts/posix/activate.csh
+++ b/Lib/venv/scripts/posix/activate.csh
@@ -3,7 +3,7 @@
# Created by Davide Di Blasi <davidedb at gmail.com>.
# Ported to Python 3.3 venv by Andrew Svetlov <andrew.svetlov at gmail.com>
-alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate'
+alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate'
# Unset irrelevant variables.
deactivate nondestructive
@@ -18,6 +18,7 @@ set _OLD_VIRTUAL_PROMPT="$prompt"
if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then
set prompt = "__VENV_PROMPT__$prompt"
+ setenv VIRTUAL_ENV_PROMPT "__VENV_PROMPT__"
endif
alias pydoc python -m pydoc
diff --git a/Lib/venv/scripts/posix/activate.fish b/Lib/venv/scripts/posix/activate.fish
index 54b9ea5676b66..e40a1d714894f 100644
--- a/Lib/venv/scripts/posix/activate.fish
+++ b/Lib/venv/scripts/posix/activate.fish
@@ -20,6 +20,7 @@ function deactivate -d "Exit virtual environment and return to normal shell env
end
set -e VIRTUAL_ENV
+ set -e VIRTUAL_ENV_PROMPT
if test "$argv[1]" != "nondestructive"
# Self-destruct!
functions -e deactivate
@@ -61,4 +62,5 @@ if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
end
set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
+ set -gx VIRTUAL_ENV_PROMPT "__VENV_PROMPT__"
end
diff --git a/Misc/NEWS.d/next/Library/2020-07-21-16-20-55.bpo-35328.jXovHb.rst b/Misc/NEWS.d/next/Library/2020-07-21-16-20-55.bpo-35328.jXovHb.rst
new file mode 100644
index 0000000000000..f4d1c6511d0d1
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2020-07-21-16-20-55.bpo-35328.jXovHb.rst
@@ -0,0 +1,2 @@
+Set the environment variable ``VIRTUAL_ENV_PROMPT`` at :mod:`venv`
+activation.
More information about the Python-checkins
mailing list