import os
import sys
import vim
-from distutils.util import strtobool
+def strtobool(text):
+ if text.lower() in ['y', 'yes', 't', 'true', 'on', '1']:
+ return True
+ if text.lower() in ['n', 'no', 'f', 'false', 'off', '0']:
+ return False
+ raise ValueError(f"{text} is not convertable to boolean")
class Flag(collections.namedtuple("FlagBase", "name, cast")):
@property
Flag(name="fast", cast=strtobool),
Flag(name="skip_string_normalization", cast=strtobool),
Flag(name="quiet", cast=strtobool),
+ Flag(name="skip_magic_trailing_comma", cast=strtobool),
+ Flag(name="preview", cast=strtobool),
]
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
line_length=configs["line_length"],
string_normalization=not configs["skip_string_normalization"],
is_pyi=vim.current.buffer.name.endswith('.pyi'),
+ magic_trailing_comma=not configs["skip_magic_trailing_comma"],
+ preview=configs["preview"],
**black_kwargs,
)
quiet = configs["quiet"]
)
except black.NothingChanged:
if not quiet:
- print(f'Already well formatted, good job. (took {time.time() - start:.4f}s)')
+ print(f'Black: already well formatted, good job. (took {time.time() - start:.4f}s)')
except Exception as exc:
- print(exc)
+ print(f'Black: {exc}')
else:
current_buffer = vim.current.window.buffer
cursors = []
except vim.error:
window.cursor = (len(window.buffer), 0)
if not quiet:
- print(f'Reformatted in {time.time() - start:.4f}s.')
+ print(f'Black: reformatted in {time.time() - start:.4f}s.')
def get_configs():
filename = vim.eval("@%")