Как мне отформатировать длинный URL-адрес в комментарии Python и по-прежнему соответствовать PEP8

85

В комментарии к блоку я хочу сослаться на URL длиной более 80 символов.

Каково предпочтительное соглашение для отображения этого URL-адреса?

Я знаю, что bit.ly - это вариант, но сам URL носит описательный характер. Сокращение его, а затем наличие вложенного комментария, описывающего сокращенный URL-адрес, кажется паршивым решением.

Зак
источник

Ответы:

77

Не нарушайте 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
jfs
источник
5
Я согласен; однако PyCharm не позволяет легко игнорировать (не засоряя ваш код уродливыми ссылками '# noinspection LongLine' (и подобными) повсюду. Я думаю, что более серьезная проблема заключается в том, что формат RST имеет ограничение, заключающееся в невозможности иметь разрыв строки (который не отображается) в URL-адресе.
4
Ответ не отвечает на вопрос, как быть совместимым, поэтому, если у вас есть линтер, он остается с предупреждениями.
Эфрен
4
@jfs, так что ответ действительно должен быть: «В данном случае длинная строка соответствует требованиям PEP8»
Эфрен
2
@Efren, это именно мой ответ: * "как мне отформатировать ... и быть совместимым с pep-8" * -> "не нарушайте URL"
jfs
2
Я только что обнаружил Ctrl + щелчок !! Вот почему вы не хотите разбивать URL-адрес в комментарии.
Боб Штейн
69

Из PEP8

Но самое главное: знайте, когда нужно быть непоследовательным - иногда руководство по стилю просто неприменимо. В случае сомнений используйте здравый смысл. Посмотрите другие примеры и решите, что выглядит лучше всего. И не стесняйтесь спрашивать!

Две веские причины нарушить то или иное правило:

  • Применение правила сделает код менее читаемым даже для тех, кто привык читать код, который следует правилам.

Лично я бы воспользовался этим советом и оставил бы для людей полный описательный URL-адрес в вашем комментарии.

Кристиан Уиттс
источник
46

Вы можете использовать # noqaсимвол в конце строки, чтобы PEP8 / Flake8 не запускал эту проверку. Это разрешено PEP8 через:

Особых случаев недостаточно, чтобы нарушать правила.

Сардатрион - против злоупотребления SE
источник
3
Элегантный. Я использую pyflakes в Vim и не буду фиксировать изменения, пока он не вернет ноль предупреждений из согласованного набора правил (в нашем случае требование maccabe более слабое, но не ограничение в 80 строк). Кратчайший способ сказать коллегам: я не разделял многострочность, потому что в этом нет смысла.
Питер Хост
4
Спасибо, @Sardathrion, должно набрать больше голосов, так как он действительно способствует практическому решению.
ezdazuzena
22

Я бы сказал, оставь это ...

PEP20 :

Особых случаев недостаточно, чтобы нарушать правила.

Хотя практичность лучше чистоты.

Более практично иметь возможность быстро скопировать / вставить URL-адрес, чем удалять разрывы строк при вставке в браузер.

мата
источник
15

Если вы используете flake8:

"""
long-url: http://stackoverflow.com/questions/10739843/how-should-i-format-a-long-url-in-a-python-comment-and-still-be-pep8-compliant
"""  # noqa
ребята
источник
-2

Вы используете сокращение URL-адресов, например Google, поэтому из этого:

http://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds

Вы получаете:

http://goo.gl/93ZLQ

Лоу Киан Сеонг
источник
9
Конечно, существует риск того, что сокращатель ссылок исчезнет, ​​и мы не сможем узнать ссылку. ArchiveTeam (во главе с руководством, связанным с Archive.org) прилагает все усилия, чтобы сохранить средства, сокращающие ссылки…
Ахмед Фасих
1
И не только это, но и исходный URL-адрес содержит информацию о том, что это такое. Сокращатели URL-адресов теряют эту информацию.
Жюльен
-5

Мой вариант:

URL = ('http://stackoverflow.com/questions/10739843/'
       'how-should-i-format-a-long-url-in-a-python-'
       'comment-and-still-be-pep8-compliant')
Медардо Родригес
источник
3
Слишком болезненно копировать пасту таким способом.
Кел Солаар,