Merge branch 'master' into pr

This commit is contained in:
Ivan Pozdeev
2022-10-14 17:23:37 +03:00
25 changed files with 272 additions and 152 deletions

View File

@@ -52,13 +52,18 @@ while [ $# -gt 0 ]; do
shift 1
done
get_current_versions() {
local IFS=:
current_versions=($(pyenv-version-name 2>/dev/null))
}
no_shell=
versions=("$@")
current_versions=()
if [ -z "${versions}" ]; then
no_shell=1
OLDIFS="$IFS"
IFS=: versions=($(pyenv-version-name 2>/dev/null))
IFS="$OLDIFS"
get_current_versions
versions=("${current_versions[@]}")
fi
if [ -z "${PYENV_VIRTUALENV_INIT}" ]; then
@@ -84,9 +89,7 @@ fi
if ! pyenv-virtualenv-prefix "${venv}" 1>/dev/null 2>&1; then
# fallback to virtualenv of current version
OLDIFS="$IFS"
IFS=: current_versions=($(pyenv-version-name))
IFS="$OLDIFS"
[ -n "${current_versions}" ] || get_current_versions
new_venv="${current_versions%/envs/*}/envs/${venv}"
if pyenv-virtualenv-prefix "${new_venv}" 1>/dev/null 2>&1; then
venv="${new_venv}"
@@ -228,8 +231,8 @@ if [ -z "${PYENV_VIRTUALENV_DISABLE_PROMPT}" ]; then
echo "pyenv-virtualenv: prompt changing will be removed from future release. configure \`export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior." 1>&2
fi
cat <<EOS
export _OLD_VIRTUAL_PS1="\${PS1}";
export PS1="(${venv}) \${PS1}";
export _OLD_VIRTUAL_PS1="\${PS1:-}";
export PS1="(${venv}) \${PS1:-}";
EOS
;;
esac

View File

@@ -134,7 +134,7 @@ EOS
;;
* )
cat <<EOS
if [ -n "\${_OLD_VIRTUAL_PATH}" ]; then
if [ -n "\${_OLD_VIRTUAL_PATH:-}" ]; then
export PATH="\${_OLD_VIRTUAL_PATH}";
unset _OLD_VIRTUAL_PATH;
fi;
@@ -153,7 +153,7 @@ EOS
;;
* )
cat <<EOS
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME}" ]; then
if [ -n "\${_OLD_VIRTUAL_PYTHONHOME:-}" ]; then
export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
unset _OLD_VIRTUAL_PYTHONHOME;
fi;
@@ -167,7 +167,7 @@ fish )
;;
* )
cat <<EOS
if [ -n "\${_OLD_VIRTUAL_PS1}" ]; then
if [ -n "\${_OLD_VIRTUAL_PS1:-}" ]; then
export PS1="\${_OLD_VIRTUAL_PS1}";
unset _OLD_VIRTUAL_PS1;
fi;

View File

@@ -6,7 +6,11 @@
# pyenv virtualenv --version
# pyenv virtualenv --help
#
# -f/--force Install even if the version appears to be installed already
# -f/--force Install even if the version appears to be installed already. Skip
# prompting for confirmation
#
# Notable VIRTUALENV_OPTIONS passed to venv-creating executable, if applicable:
# -u/--upgrade Imply --force
#
PYENV_VIRTUALENV_VERSION="1.1.5"
@@ -145,7 +149,7 @@ detect_venv() {
if [ -x "${prefix}/bin/virtualenv" ]; then
HAS_VIRTUALENV=1
fi
# Prefer `python3.x` executable if avaialble (#206, #282)
# Prefer `python3.x` executable if available (#206, #282)
local python
for python in "python${PYENV_VERSION%.*}" "python${PYENV_VERSION%%.*}" "python"; do
if pyenv-exec "${python}" -m venv --help 1>/dev/null 2>&1; then
@@ -479,16 +483,28 @@ if [ -z "${GET_PIP_URL}" ]; then
# Use custom get-pip URL based on the target version (#1127)
case "${PYENV_VERSION}" in
2.6 | 2.6.* )
GET_PIP_URL="https://bootstrap.pypa.io/2.6/get-pip.py"
GET_PIP_URL="https://bootstrap.pypa.io/pip/2.6/get-pip.py"
;;
2.7 | 2.7.* )
GET_PIP_URL="https://bootstrap.pypa.io/pip/2.7/get-pip.py"
;;
3.2 | 3.2.* )
GET_PIP_URL="https://bootstrap.pypa.io/3.2/get-pip.py"
GET_PIP_URL="https://bootstrap.pypa.io/pip/3.2/get-pip.py"
;;
3.3 | 3.3.* )
GET_PIP_URL="https://bootstrap.pypa.io/3.3/get-pip.py"
GET_PIP_URL="https://bootstrap.pypa.io/pip/3.3/get-pip.py"
;;
3.4 | 3.4.* )
GET_PIP_URL="https://bootstrap.pypa.io/pip/3.4/get-pip.py"
;;
3.5 | 3.5.* )
GET_PIP_URL="https://bootstrap.pypa.io/pip/3.5/get-pip.py"
;;
3.6 | 3.6.* )
GET_PIP_URL="https://bootstrap.pypa.io/pip/3.6/get-pip.py"
;;
* )
GET_PIP_URL="https://bootstrap.pypa.io/get-pip.py"
GET_PIP_URL="https://bootstrap.pypa.io/pip/get-pip.py"
;;
esac
fi

View File

@@ -75,7 +75,7 @@ else
if pyenv-virtualenv-prefix "${VERSION_NAME}" 1>/dev/null 2>&1; then
PREFIX="${PYENV_ROOT}/versions/${VERSION_NAME}"
unset COMPAT_PREFIX
else
elif [ -z "$FORCE" ]; then
echo "pyenv-virtualenv: \`${DEFINITION}' is not a virtualenv." 1>&2
exit 1
fi
@@ -88,7 +88,7 @@ if [ -z "$FORCE" ]; then
exit 1
fi
read -p "pyenv-virtualenv: remove $PREFIX? "
read -p "pyenv-virtualenv: remove $PREFIX? (y/N) "
case "$REPLY" in
y* | Y* ) ;;
* ) exit 1 ;;

View File

@@ -50,7 +50,7 @@ fi
if [ -z "$print" ]; then
case "$shell" in
bash )
profile='~/.bash_profile'
profile='~/.bashrc'
;;
zsh )
profile='~/.zshrc'
@@ -86,6 +86,8 @@ fi
case "$shell" in
fish )
cat <<EOS
while set index (contains -i -- "${PYENV_VIRTUALENV_ROOT:-${PYENV_VIRTUALENV_INSTALL_PREFIX}}/shims" \$PATH)
set -eg PATH[\$index]; end; set -e index
set -gx PATH '${PYENV_VIRTUALENV_ROOT:-${PYENV_VIRTUALENV_INSTALL_PREFIX}}/shims' \$PATH;
set -gx PYENV_VIRTUALENV_INIT 1;
EOS
@@ -127,7 +129,7 @@ esac
if [[ "$shell" != "fish" ]]; then
cat <<EOS
local ret=\$?
if [ -n "\$VIRTUAL_ENV" ]; then
if [ -n "\${VIRTUAL_ENV-}" ]; then
eval "\$(pyenv sh-activate --quiet || pyenv sh-deactivate --quiet || true)" || true
else
eval "\$(pyenv sh-activate --quiet || true)" || true
@@ -139,8 +141,8 @@ EOS
case "$shell" in
bash )
cat <<EOS
if ! [[ "\$PROMPT_COMMAND" =~ _pyenv_virtualenv_hook ]]; then
PROMPT_COMMAND="_pyenv_virtualenv_hook;\$PROMPT_COMMAND";
if ! [[ "\${PROMPT_COMMAND-}" =~ _pyenv_virtualenv_hook ]]; then
PROMPT_COMMAND="_pyenv_virtualenv_hook;\${PROMPT_COMMAND-}"
fi
EOS
;;

View File

@@ -6,7 +6,21 @@
set -e
[ -n "$PYENV_DEBUG" ] && set -x
. "${BASH_SOURCE%/*}"/../libexec/pyenv-virtualenv-realpath
if [ -L "${BASH_SOURCE}" ]; then
READLINK=$(type -p greadlink readlink | head -1)
if [ -z "$READLINK" ]; then
echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
exit 1
fi
resolve_link() {
$READLINK -f "$1"
}
script_path=$(resolve_link ${BASH_SOURCE})
else
script_path=${BASH_SOURCE}
fi
. ${script_path%/*}/../libexec/pyenv-virtualenv-realpath
if [ -z "$PYENV_ROOT" ]; then
PYENV_ROOT="${HOME}/.pyenv"

View File

@@ -7,7 +7,21 @@
set -e
[ -n "$PYENV_DEBUG" ] && set -x
. "${BASH_SOURCE%/*}"/../libexec/pyenv-virtualenv-realpath
if [ -L "${BASH_SOURCE}" ]; then
READLINK=$(type -p greadlink readlink | head -1)
if [ -z "$READLINK" ]; then
echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
exit 1
fi
resolve_link() {
$READLINK -f "$1"
}
script_path=$(resolve_link ${BASH_SOURCE})
else
script_path=${BASH_SOURCE}
fi
. ${script_path%/*}/../libexec/pyenv-virtualenv-realpath
if [ -z "$PYENV_ROOT" ]; then
PYENV_ROOT="${HOME}/.pyenv"
@@ -76,6 +90,7 @@ print_version() {
num_versions=$((num_versions + 1))
}
shopt -s dotglob
shopt -s nullglob
for path in "$versions_dir"/*; do
if [ -d "$path" ]; then
@@ -96,6 +111,7 @@ for path in "$versions_dir"/*; do
done
fi
done
shopt -u dotglob
shopt -u nullglob
if [ "$num_versions" -eq 0 ] && [ -n "$include_system" ]; then