Как мне отформатировать длинный URL в комментарии к Python и при этом быть совместимым с PEP8?
В комментарии к блоку я хочу указать URL длиной более 80 символов.
Каково предпочтительное соглашение для отображения этого URL?
Я знаю, что bit.ly - вариант, но сам URL носит описательный характер. Сокращение его, а затем наличие вложенного комментария, описывающего сокращенный URL-адрес, кажется дурацким решением.
8 ответов
Не нарушайте URL:
# A Foolish Consistency is the Hobgoblin of Little Minds [1]
# [1]: http://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds
Из PEP8
Но самое главное: знать, когда нужно быть непоследовательным - иногда руководство по стилю просто не применяется. В случае сомнений используйте свое лучшее суждение. Посмотрите на другие примеры и решите, что выглядит лучше. И не стесняйтесь спрашивать!
Две веские причины нарушить определенное правило:
- Применение правила сделает код менее читабельным даже для тех, кто привык читать код, соответствующий правилам.
Лично я бы воспользовался этим советом и оставил бы полный описательный URL в вашем комментарии для людей.
Вы можете использовать # noqa
в конце строки, чтобы остановить PEP8/Flake8 от выполнения этой проверки. Это разрешено PEP8 через:
Особые случаи не настолько особенные, чтобы нарушать правила.
Я бы сказал, оставь это...
Особые случаи не настолько особенные, чтобы нарушать правила.
Хотя практичность превосходит чистоту.
Более практично иметь возможность быстро копировать / вставлять URL-адрес, а затем удалять разрывы строк при вставке в браузер.
Если вы используете flake8:
"""
long-url: http://stackru.com/questions/10739843/how-should-i-format-a-long-url-in-a-python-comment-and-still-be-pep8-compliant
""" # noqa
Вы используете сокращение URL, как Google, так из этого:
http://www.python.org/dev/peps/pep-0008/
ты получаешь:
Добавление «# noqa» работает, но если оно находится в строке документации, «# noqa» отображается в документах при сборке с помощью spinx. В этом случае вы можете создать собственный метод процесса autodoc. Смотрите этот ответ .
Вот моя адаптированная версия этого,
from sphinx.application import Sphinx
import re
def setup(app):
noqa_regex = re.compile('^(.*)\s\s#\snoqa.*$')
def trim_noqa(app, what_, name, obj, options):
for i, line in enumerate(lines):
if noqa_regex.match(line):
new_line = noqa_regex.sub(r'\1', line)
lines[i] = new_line
app.connect('autodoc-process-docstring', trim_noqa)
return app
Мой вариант будет:
URL = ('http://stackru.com/questions/10739843/'
'how-should-i-format-a-long-url-in-a-python-'
'comment-and-still-be-pep8-compliant')