Может ли программа форматирования python black использовать табуляторы вместо пробелов?
Я хочу использовать средство переформатирования кода python black в своих хуках перед фиксацией, но в моей компании решили использовать табуляторы в коде python вместо пробелов. Итак, я попытался изменить конфигурацию черного, но я не видел никакой возможности использовать табуляторы, единственное, на что вы можете повлиять, - это длина строки.
Неужели черный так сильно привязан к стандарту PEP8, что никогда не допустит табуляторов?
2 ответа
Это невозможно. Python Black поддерживает только пробелы.
Вот билет на это: https://github.com/psf/black/issues/47 (он содержит разговор, почему Python Black не поддерживает вкладки).
Как они сказали, закрывая билет:
Нет, табуляторы для отступов - черт. Настраиваемость противоречит философии Блэка.
Если черные не дадут вам выбора, просто обработайте результат...
import sys, pathlib, re
def spaces2tabs(t):
while True:
t, n = re.subn('^(\t*) {4}', '\\1\t', t, flags=re.MULTILINE)
if not n: return t
p = pathlib.Path(sys.argv[1])
p.write_text(spaces2tabs(p.read_text()))