Можно ли назвать черных 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)

https://github.com/psf/black/blob/19.3b0/black.py

Официально он не поддерживается , но вы можете позвонить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 , чтобы узнать о возможных дальнейших изменениях.

(источник: тот же вопрос на странице часто задаваемых вопросов Блэка )

Другие вопросы по тегам