Skip to content

Commit de1deb1

Browse files
committed
Merge branch 'non-pyenv-virtualenv'
2 parents a73817e + 83bc6a4 commit de1deb1

File tree

5 files changed

+268
-26
lines changed

5 files changed

+268
-26
lines changed

bin/pyenv-sh-activate

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,19 @@ fi
6565

6666
venv="${versions}"
6767

68+
# exit as success if some virtualenv outside from pyenv is already activated
69+
if [ -n "${VIRTUAL_ENV}" ]; then
70+
if [[ "${VIRTUAL_ENV}" != "$(pyenv-root)/"* ]]; then
71+
if [ -z "${FORCE}" ]; then
72+
if [ -z "${QUIET}" ]; then
73+
echo "pyenv-virtualenv: virtualenv \`${VIRTUAL_ENV}' is already activated" 1>&2
74+
fi
75+
echo "true"
76+
exit 0
77+
fi
78+
fi
79+
fi
80+
6881
if ! pyenv-virtualenv-prefix "${venv}" 1>/dev/null 2>&1; then
6982
if [ -z "$QUIET" ]; then
7083
echo "pyenv-virtualenv: version \`${venv}' is not a virtualenv" 1>&2
@@ -94,12 +107,15 @@ if [ -L "${prefix}" ]; then
94107
prefix="$(resolve_link "${prefix}" 2>/dev/null)"
95108
fi
96109

110+
# exit as success if the virtualenv is already activated
97111
if [[ "${VIRTUAL_ENV}" == "${prefix}" ]]; then
98-
if [ -z "${QUIET}" ]; then
99-
echo "pyenv-virtualenv: version \`${venv}' is already activated" 1>&2
112+
if [ -z "${FORCE}" ]; then
113+
if [ -z "${QUIET}" ]; then
114+
echo "pyenv-virtualenv: version \`${venv}' is already activated" 1>&2
115+
fi
116+
echo "true"
117+
exit 0
100118
fi
101-
echo "true"
102-
exit 0
103119
fi
104120

105121
if [[ "${PYENV_DEACTIVATE}" == "${prefix}" ]]; then

bin/pyenv-sh-deactivate

Lines changed: 57 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -98,33 +98,71 @@ if [ -n "${CONDA_DEFAULT_ENV}" ]; then
9898
esac
9999
fi
100100

101-
if [ -n "${_OLD_VIRTUAL_PYTHONHOME}" ]; then
102-
case "${shell}" in
103-
fish )
104-
cat <<EOS
105-
setenv PYTHONHOME "${_OLD_VIRTUAL_PYTHONHOME}";
106-
set -e _OLD_VIRTUAL_PYTHONHOME;
101+
case "${shell}" in
102+
fish )
103+
cat <<EOS
104+
if [ -n "\$_OLD_VIRTUAL_PATH" ];
105+
setenv PATH "\$_OLD_VIRTUAL_PATH";
106+
set -e _OLD_VIRTUAL_PATH;
107+
end;
107108
EOS
108-
;;
109-
* )
110-
cat <<EOS
111-
export PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME}";
112-
unset _OLD_VIRTUAL_PYTHONHOME;
109+
;;
110+
* )
111+
cat <<EOS
112+
if [ -n "\${_OLD_VIRTUAL_PATH}" ]; then
113+
export PATH="\${_OLD_VIRTUAL_PATH}";
114+
unset _OLD_VIRTUAL_PATH;
115+
fi;
113116
EOS
114-
;;
115-
esac
116-
fi
117+
;;
118+
esac
119+
120+
case "${shell}" in
121+
fish )
122+
cat <<EOS
123+
if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
124+
setenv PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
125+
set -e _OLD_VIRTUAL_PYTHONHOME;
126+
end;
127+
EOS
128+
;;
129+
* )
130+
cat <<EOS
131+
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME}" ]; then
132+
export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
133+
unset _OLD_VIRTUAL_PYTHONHOME;
134+
fi;
135+
EOS
136+
;;
137+
esac
117138

118139
case "${shell}" in
119140
fish )
120141
:
121142
;;
122143
* )
123-
if [ -n "${_OLD_VIRTUAL_PS1}" ]; then
124-
cat <<EOS
125-
export PS1='${_OLD_VIRTUAL_PS1}';
126-
unset _OLD_VIRTUAL_PS1;
144+
cat <<EOS
145+
if [ -n "\${_OLD_VIRTUAL_PS1}" ]; then
146+
export PS1="\${_OLD_VIRTUAL_PS1}";
147+
unset _OLD_VIRTUAL_PS1;
148+
fi;
149+
EOS
150+
;;
151+
esac
152+
153+
case "${shell}" in
154+
fish )
155+
cat <<EOS
156+
if functions -g deactivate;
157+
functions -e deactivate;
158+
end;
159+
EOS
160+
;;
161+
* )
162+
cat <<EOS
163+
if declare -f deactivate 1>/dev/null 2>&1; then
164+
unset -f deactivate;
165+
fi;
127166
EOS
128-
fi
129167
;;
130168
esac

test/activate.bats

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -263,13 +263,15 @@ EOS
263263
export VIRTUAL_ENV="${PYENV_ROOT}/versions/venv"
264264
export PYENV_ACTIVATE_SHELL=
265265

266+
stub pyenv-sh-deactivate "echo deactivated"
267+
266268
run pyenv-sh-activate --unset
267269

270+
unstub pyenv-sh-deactivate
271+
268272
assert_success
269273
assert_output <<EOS
270-
pyenv-virtualenv: deactivate venv
271-
export PYENV_DEACTIVATE="${PYENV_ROOT}/versions/venv";
272-
unset VIRTUAL_ENV;
274+
deactivated
273275
EOS
274276
}
275277

test/conda-deactivate.bats

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,21 @@ pyenv-virtualenv: deactivate anaconda-2.3.0
3232
export PYENV_DEACTIVATE="${PYENV_ROOT}/versions/anaconda-2.3.0";
3333
unset VIRTUAL_ENV;
3434
unset CONDA_DEFAULT_ENV;
35+
if [ -n "\${_OLD_VIRTUAL_PATH}" ]; then
36+
export PATH="\${_OLD_VIRTUAL_PATH}";
37+
unset _OLD_VIRTUAL_PATH;
38+
fi;
39+
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME}" ]; then
40+
export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
41+
unset _OLD_VIRTUAL_PYTHONHOME;
42+
fi;
43+
if [ -n "\${_OLD_VIRTUAL_PS1}" ]; then
44+
export PS1="\${_OLD_VIRTUAL_PS1}";
45+
unset _OLD_VIRTUAL_PS1;
46+
fi;
47+
if declare -f deactivate 1>/dev/null 2>&1; then
48+
unset -f deactivate;
49+
fi;
3550
EOS
3651
}
3752

@@ -51,6 +66,17 @@ pyenv-virtualenv: deactivate anaconda-2.3.0
5166
setenv PYENV_DEACTIVATE "${PYENV_ROOT}/versions/anaconda-2.3.0";
5267
set -e VIRTUAL_ENV;
5368
set -e CONDA_DEFAULT_ENV;
69+
if [ -n "\$_OLD_VIRTUAL_PATH" ];
70+
setenv PATH "\$_OLD_VIRTUAL_PATH";
71+
set -e _OLD_VIRTUAL_PATH;
72+
end;
73+
if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
74+
setenv PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
75+
set -e _OLD_VIRTUAL_PYTHONHOME;
76+
end;
77+
if functions -g deactivate;
78+
functions -e deactivate;
79+
end;
5480
EOS
5581
}
5682

@@ -70,5 +96,20 @@ pyenv-virtualenv: deactivate anaconda-2.3.0/envs/foo
7096
export PYENV_DEACTIVATE="${PYENV_ROOT}/versions/anaconda-2.3.0/envs/foo";
7197
unset VIRTUAL_ENV;
7298
unset CONDA_DEFAULT_ENV;
99+
if [ -n "\${_OLD_VIRTUAL_PATH}" ]; then
100+
export PATH="\${_OLD_VIRTUAL_PATH}";
101+
unset _OLD_VIRTUAL_PATH;
102+
fi;
103+
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME}" ]; then
104+
export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
105+
unset _OLD_VIRTUAL_PYTHONHOME;
106+
fi;
107+
if [ -n "\${_OLD_VIRTUAL_PS1}" ]; then
108+
export PS1="\${_OLD_VIRTUAL_PS1}";
109+
unset _OLD_VIRTUAL_PS1;
110+
fi;
111+
if declare -f deactivate 1>/dev/null 2>&1; then
112+
unset -f deactivate;
113+
fi;
73114
EOS
74115
}

0 commit comments

Comments
 (0)