Wie soll ich eine lange URL in einem Python-Kommentar formatieren und trotzdem PEP8-konform sein?

82

In einem Blockkommentar möchte ich auf eine URL verweisen, die über 80 Zeichen lang ist.

Was ist die bevorzugte Konvention zum Anzeigen dieser URL?

Ich weiß, dass bit.ly eine Option ist, aber die URL selbst ist beschreibend. Es zu verkürzen und dann einen verschachtelten Kommentar zu haben, der die verkürzte URL beschreibt, scheint eine beschissene Lösung zu sein.

Zach
quelle

Antworten:

76

Brechen Sie nicht die 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
quelle
5
Genau; PyCharm macht es jedoch nicht einfach zu ignorieren (ohne Ihren Code mit hässlichen '# noinspection LongLine' (und ähnlichen) Referenzen überall zu lesen. Ich denke, das größere Problem ist, dass das RST-Format die Einschränkung hat, dies nicht zu können haben einen Zeilenumbruch (der nicht angezeigt wird) innerhalb der URL.
4
Die Antwort gibt keine Antwort darauf, wie man konform ist. Wenn Sie also einen Linter haben, bleiben die Warnungen erhalten.
Efren
4
@jfs also sollte die Antwort wirklich sein: "Eine lange Schlange ist in diesem Fall PEP8-konform"
Efren
2
@Efren es ist genau meine Antwort: * "wie soll ich formatieren .. und pep-8-konform sein" * -> "nicht die URL brechen"
jfs
2
Ich habe gerade Control-Click entdeckt !! Deshalb möchten Sie eine URL in einem Kommentar nicht brechen.
Bob Stein
68

Von PEP8

Vor allem aber: Wissen, wann man inkonsistent ist - manchmal trifft der Styleguide einfach nicht zu. Verwenden Sie im Zweifelsfall Ihr bestes Urteilsvermögen. Schauen Sie sich andere Beispiele an und entscheiden Sie, was am besten aussieht. Und zögern Sie nicht zu fragen!

Zwei gute Gründe, eine bestimmte Regel zu brechen:

  • Wenn Sie die Regel anwenden, wird der Code weniger lesbar, selbst für jemanden, der es gewohnt ist, Code zu lesen, der den Regeln folgt.

Persönlich würde ich diesen Rat verwenden und lieber die vollständige beschreibende URL in Ihrem Kommentar für die Leute hinterlassen.

Christian Witts
quelle
45

Sie können das # noqaam Ende der Zeile verwenden, um zu verhindern, dass PEP8 / Flake8 diese Prüfung ausführt. Dies ist von PEP8 über Folgendes zulässig:

Sonderfälle sind nicht speziell genug, um gegen die Regeln zu verstoßen.

Sardathrion - gegen SE-Missbrauch
quelle
3
Elegant. Ich verwende Pyflakes in Vim und werde keine Änderung vornehmen, bis keine Warnungen aus dem vereinbarten Regelwerk zurückgegeben werden (die Maccabe-Anforderung ist in unserem Fall lockerer, aber nicht das Limit von 80 Zeilen). Der kürzeste Weg, um Kollegen zu sagen: Ich habe Multiline nicht aufgeteilt, weil es keinen Sinn macht, dies zu tun.
Peter Host
4
Danke @Sardathrion, sollte mehr Stimmen haben, da es tatsächlich eine praktische Lösung beiträgt.
Ezdazuzena
22

Ich würde sagen, lass es ...

PEP20 :

Sonderfälle sind nicht speziell genug, um gegen die Regeln zu verstoßen.

Obwohl Praktikabilität die Reinheit übertrifft.

Es ist praktischer, eine URL schnell kopieren / einfügen zu können, als Zeilenumbrüche beim Einfügen in den Browser zu entfernen.

mata
quelle
14

Wenn Sie flake8 verwenden:

"""
long-url: http://stackoverflow.com/questions/10739843/how-should-i-format-a-long-url-in-a-python-comment-and-still-be-pep8-compliant
"""  # noqa
Jungskk
quelle
-2

Sie verwenden einen URL-Shortener wie Google, also aus diesem:

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

du erhältst:

http://goo.gl/93ZLQ

Low Kian Seong
quelle
9
Das Risiko besteht natürlich darin, dass der Link-Shortener verschwindet und wir den Link nicht kennen. ArchiveTeam (geleitet von der mit Archive.org verbundenen Führung) hat eine ganze Anstrengung unternommen, um Link-
Ahmed Fasih
1
Und nicht nur das, sondern die ursprüngliche URL enthält Informationen darüber, was es ist. URL-Shortener verlieren diese Informationen.
Julien Chastang
-5

Meine Option wäre:

URL = ('http://stackoverflow.com/questions/10739843/'
       'how-should-i-format-a-long-url-in-a-python-'
       'comment-and-still-be-pep8-compliant')
Medardo Rodriguez
quelle
3
Es ist zu schmerzhaft, auf diese Weise Paste kopierbar zu kopieren.
Kel Solaar