Можно ли назвать черных API-интерфейсом?
Скажем, я хочу использовать черный в качестве API и сделать что-то вроде:
import black
black.format("some python code")
Форматирование кода путем вызова black
бинарный с Popen
это альтернатива, но я не об этом.
4 ответа
Вы можете попробовать использовать format_str
:
from black import format_str, FileMode
res = format_str("some python code", mode=FileMode())
print(res)
Использование black.format_file_contents
,
например
import black
mode = black.FileMode()
fast = False
out = black.format_file_contents("some python code", fast, mode)
Официально он не поддерживается , но вы можете позвонитьblack.format_file_contents
как видно вblack.format_stdin_to_stdout
функция.
В упрощенном виде это всего лишь несколько строк:
import black # version: 22.10.0
BLACK_MODE = black.Mode(target_versions={black.TargetVersion.PY311}, line_length=120)
code = ... # some python code to reformat
try:
code = black.format_file_contents(code, fast=False, mode=BLACK_MODE)
except black.NothingChanged:
pass
finally:
# Make sure there's a newline after the content
if code and code[-1] != "\n":
code += "\n"
print(code) # print result
У Блэка есть API?
Еще нет. Black — это, по сути, инструмент командной строки. Предусмотрено множество интеграций , но интерфейс Python не входит в их число. простой API .
На данный момент вы должны коллировать черных, используяsubprocess
. Другие ответы, которыеimport black
не поддерживаются и могут сломаться без предупреждения.
Следите за выпуском Однако планируетсяобщедоступного API Блэка № 779 , чтобы узнать о возможных дальнейших изменениях.
(источник: тот же вопрос на странице часто задаваемых вопросов Блэка )