mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	 83485a0953
			
		
	
	
		83485a0953
		
			
		
	
	
	
	
		
			
			pythongh-112571: allow using fish venv activation script on windows The fish shell can be used on windows under cygwin or msys2. This change moves the script to the common folder so the venv module will install it on both posix and nt systems (like the bash script).
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Fish
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Fish
		
	
	
	
	
	
| # This file must be used with "source <venv>/bin/activate.fish" *from fish*
 | |
| # (https://fishshell.com/). You cannot run it directly.
 | |
| 
 | |
| function deactivate  -d "Exit virtual environment and return to normal shell environment"
 | |
|     # reset old environment variables
 | |
|     if test -n "$_OLD_VIRTUAL_PATH"
 | |
|         set -gx PATH $_OLD_VIRTUAL_PATH
 | |
|         set -e _OLD_VIRTUAL_PATH
 | |
|     end
 | |
|     if test -n "$_OLD_VIRTUAL_PYTHONHOME"
 | |
|         set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
 | |
|         set -e _OLD_VIRTUAL_PYTHONHOME
 | |
|     end
 | |
| 
 | |
|     if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
 | |
|         set -e _OLD_FISH_PROMPT_OVERRIDE
 | |
|         # prevents error when using nested fish instances (Issue #93858)
 | |
|         if functions -q _old_fish_prompt
 | |
|             functions -e fish_prompt
 | |
|             functions -c _old_fish_prompt fish_prompt
 | |
|             functions -e _old_fish_prompt
 | |
|         end
 | |
|     end
 | |
| 
 | |
|     set -e VIRTUAL_ENV
 | |
|     set -e VIRTUAL_ENV_PROMPT
 | |
|     if test "$argv[1]" != "nondestructive"
 | |
|         # Self-destruct!
 | |
|         functions -e deactivate
 | |
|     end
 | |
| end
 | |
| 
 | |
| # 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
 | |
| set -gx VIRTUAL_ENV_PROMPT "__VENV_PROMPT__"
 | |
| 
 | |
| # Unset PYTHONHOME if set.
 | |
| if set -q PYTHONHOME
 | |
|     set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
 | |
|     set -e PYTHONHOME
 | |
| 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.
 | |
|     functions -c fish_prompt _old_fish_prompt
 | |
| 
 | |
|     # With the original prompt function renamed, we can override with our own.
 | |
|     function fish_prompt
 | |
|         # Save the return status of the last command.
 | |
|         set -l old_status $status
 | |
| 
 | |
|         # 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
 | |
| 
 | |
|     set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
 | |
| end
 |