[Python-checkins] cpython: Closes #18479: Changed venv Activate.ps1 to make deactivate a function, and

vinay.sajip python-checkins at python.org
Fri Jul 19 12:04:06 CEST 2013


http://hg.python.org/cpython/rev/1ff5e7505696
changeset:   84716:1ff5e7505696
user:        Vinay Sajip <vinay_sajip at yahoo.co.uk>
date:        Fri Jul 19 11:03:55 2013 +0100
summary:
  Closes #18479: Changed venv Activate.ps1 to make deactivate a function, and removed Deactivate.ps1.

files:
  Lib/venv/scripts/nt/Activate.ps1   |  51 +++++++++++------
  Lib/venv/scripts/nt/Deactivate.ps1 |  19 ------
  Misc/NEWS                          |   3 +
  3 files changed, 36 insertions(+), 37 deletions(-)


diff --git a/Lib/venv/scripts/nt/Activate.ps1 b/Lib/venv/scripts/nt/Activate.ps1
--- a/Lib/venv/scripts/nt/Activate.ps1
+++ b/Lib/venv/scripts/nt/Activate.ps1
@@ -1,25 +1,40 @@
+function global:deactivate ([switch]$NonDestructive) {
+    # Revert to original values
+    if (Test-Path function:_OLD_VIRTUAL_PROMPT) {
+        copy-item function:_OLD_VIRTUAL_PROMPT function:prompt
+        remove-item function:_OLD_VIRTUAL_PROMPT
+    }
+
+    if (Test-Path env:_OLD_VIRTUAL_PYTHONHOME) {
+        copy-item env:_OLD_VIRTUAL_PYTHONHOME env:PYTHONHOME
+        remove-item env:_OLD_VIRTUAL_PYTHONHOME
+    }
+
+    if (Test-Path env:_OLD_VIRTUAL_PATH) {
+        copy-item env:_OLD_VIRTUAL_PATH env:PATH
+        remove-item env:_OLD_VIRTUAL_PATH
+    }
+
+    if (Test-Path env:VIRTUAL_ENV) {
+        remove-item env:VIRTUAL_ENV
+    }
+
+    if (!$NonDestructive) {
+        # Self destruct!
+        remove-item function:deactivate
+    }
+}
+
+deactivate -nondestructive
+
 $env:VIRTUAL_ENV="__VENV_DIR__"
 
-# Revert to original values
-if (Test-Path function:_OLD_VIRTUAL_PROMPT) {
-    copy-item function:_OLD_VIRTUAL_PROMPT function:prompt
-    remove-item function:_OLD_VIRTUAL_PROMPT
-}
-
-if (Test-Path env:_OLD_VIRTUAL_PYTHONHOME) {
-    copy-item env:_OLD_VIRTUAL_PYTHONHOME env:PYTHONHOME
-    remove-item env:_OLD_VIRTUAL_PYTHONHOME
-}
-
-if (Test-Path env:_OLD_VIRTUAL_PATH) {
-    copy-item env:_OLD_VIRTUAL_PATH env:PATH
-    remove-item env:_OLD_VIRTUAL_PATH
-}
-
 # Set the prompt to include the env name
+# Make sure _OLD_VIRTUAL_PROMPT is global
+function global:_OLD_VIRTUAL_PROMPT {""}
 copy-item function:prompt function:_OLD_VIRTUAL_PROMPT
-function prompt {
-    Write-Host -NoNewline -ForegroundColor Green '[__VENV_NAME__]'
+function global:prompt {
+    Write-Host -NoNewline -ForegroundColor Green '__VENV_NAME__'
     _OLD_VIRTUAL_PROMPT
 }
 
diff --git a/Lib/venv/scripts/nt/Deactivate.ps1 b/Lib/venv/scripts/nt/Deactivate.ps1
deleted file mode 100644
--- a/Lib/venv/scripts/nt/Deactivate.ps1
+++ /dev/null
@@ -1,19 +0,0 @@
-# Revert to original values
-if (Test-Path function:_OLD_VIRTUAL_PROMPT) {
-    copy-item function:_OLD_VIRTUAL_PROMPT function:prompt
-    remove-item function:_OLD_VIRTUAL_PROMPT
-}
-
-if (Test-Path env:_OLD_VIRTUAL_PYTHONHOME) {
-    copy-item env:_OLD_VIRTUAL_PYTHONHOME env:PYTHONHOME
-    remove-item env:_OLD_VIRTUAL_PYTHONHOME
-}
-
-if (Test-Path env:_OLD_VIRTUAL_PATH) {
-    copy-item env:_OLD_VIRTUAL_PATH env:PATH
-    remove-item env:_OLD_VIRTUAL_PATH
-}
-
-if (Test-Path env:VIRTUAL_ENV) {
-    remove-item env:VIRTUAL_ENV
-}
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -159,6 +159,9 @@
 Library
 -------
 
+- Issue #18479: Changed venv Activate.ps1 to make deactivate a function, and
+  removed Deactivate.ps1.
+
 - Issue #18480: Add missing call to PyType_Ready to the _elementtree extension.
 
 - Issue #17778: Fix test discovery for test_multiprocessing. (Patch by

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list