X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/92c93a278036870a76740d5b0b8f06504925e7dc..2fd9d8b339e1e2e1b93956c6d68b2b358b3fc29d:/autoload/black.vim diff --git a/autoload/black.vim b/autoload/black.vim index e87a1e4..4eb9b25 100644 --- a/autoload/black.vim +++ b/autoload/black.vim @@ -9,7 +9,7 @@ def strtobool(text): return True if text.lower() in ['n', 'no', 'f', 'false', 'off', '0']: return False - raise ValueError(f"{text} is not convertable to boolean") + raise ValueError(f"{text} is not convertible to boolean") class Flag(collections.namedtuple("FlagBase", "name, cast")): @property @@ -34,7 +34,7 @@ FLAGS = [ ] -def _get_python_binary(exec_prefix): +def _get_python_binary(exec_prefix, pyver): try: default = vim.eval("g:pymode_python").strip() except vim.error: @@ -43,7 +43,15 @@ def _get_python_binary(exec_prefix): return default if sys.platform[:3] == "win": return exec_prefix / 'python.exe' - return exec_prefix / 'bin' / 'python3' + bin_path = exec_prefix / "bin" + exec_path = (bin_path / f"python{pyver[0]}.{pyver[1]}").resolve() + if exec_path.exists(): + return exec_path + # It is possible that some environments may only have python3 + exec_path = (bin_path / f"python3").resolve() + if exec_path.exists(): + return exec_path + raise ValueError("python executable not found") def _get_pip(venv_path): if sys.platform[:3] == "win": @@ -56,9 +64,19 @@ def _get_virtualenv_site_packages(venv_path, pyver): return venv_path / 'lib' / f'python{pyver[0]}.{pyver[1]}' / 'site-packages' def _initialize_black_env(upgrade=False): + if vim.eval("g:black_use_virtualenv ? 'true' : 'false'") == "false": + if upgrade: + print("Upgrade disabled due to g:black_use_virtualenv being disabled.") + print("Either use your system package manager (or pip) to upgrade black separately,") + print("or modify your vimrc to have 'let g:black_use_virtualenv = 1'.") + return False + else: + # Nothing needed to be done. + return True + pyver = sys.version_info[:3] - if pyver < (3, 6, 2): - print("Sorry, Black requires Python 3.6.2+ to run.") + if pyver < (3, 7): + print("Sorry, Black requires Python 3.7+ to run.") return False from pathlib import Path @@ -72,7 +90,7 @@ def _initialize_black_env(upgrade=False): _executable = sys.executable _base_executable = getattr(sys, "_base_executable", _executable) try: - executable = str(_get_python_binary(Path(sys.exec_prefix))) + executable = str(_get_python_binary(Path(sys.exec_prefix), pyver)) sys.executable = executable sys._base_executable = executable print(f'Creating a virtualenv in {virtualenv_path}...')