]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-35328: Set VIRTUAL_ENV_PROMPT at venv activation (GH-21587)
authorZackery Spytz <zspytz@gmail.com>
Tue, 28 Jul 2020 08:41:57 +0000 (02:41 -0600)
committerGitHub <noreply@github.com>
Tue, 28 Jul 2020 08:41:57 +0000 (09:41 +0100)
Co-Authored-By: Baptiste Darthenay <baptiste.darthenay@gmail.com>
Lib/venv/scripts/common/Activate.ps1
Lib/venv/scripts/common/activate
Lib/venv/scripts/nt/activate.bat
Lib/venv/scripts/nt/deactivate.bat
Lib/venv/scripts/posix/activate.csh
Lib/venv/scripts/posix/activate.fish
Misc/NEWS.d/next/Library/2020-07-21-16-20-55.bpo-35328.jXovHb.rst [new file with mode: 0644]

index a3bc6fb1f05bf96c284d2cba2508314d115ce7e3..51fc55c4ec7cb9cacf8d75734b91e3deb187707f 100644 (file)
@@ -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
index 45af3536aa191d0abae0c775d1b66c2fcba13786..6fbc2b8801da0498b4d526bbac11ab5b0d2a4de7 100644 (file)
@@ -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
index af4c7e0abacb1c4438546edc1d2f903f213482cf..c1c3c82ee37f1079bd20354c8e551bb736184261 100644 (file)
@@ -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 (
index 1205c618686fbb0e28bb9f61a782d7be790d1163..62a39a7584f4d7c5fbc31758e3e9e7eff700276d 100644 (file)
@@ -17,5 +17,6 @@ if defined _OLD_VIRTUAL_PATH (
 set _OLD_VIRTUAL_PATH=
 
 set VIRTUAL_ENV=
+set VIRTUAL_ENV_PROMPT=
 
 :END
index 68a0dc74e1a3c7a48bff0b4b871a4a087a3d2e68..d6f697c55ed81cc4fac7298b7a96e5c53798d74c 100644 (file)
@@ -3,7 +3,7 @@
 # Created by Davide Di Blasi <davidedb@gmail.com>.
 # Ported to Python 3.3 venv by Andrew Svetlov <andrew.svetlov@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
index 54b9ea5676b66b46dd9ba75da71c20cb4f622433..e40a1d714894fa3dca02c2e2c81c32821cd7b05b 100644 (file)
@@ -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 (file)
index 0000000..f4d1c65
--- /dev/null
@@ -0,0 +1,2 @@
+Set the environment variable ``VIRTUAL_ENV_PROMPT`` at :mod:`venv`
+activation.