web-dev-qa-db-fra.com

La ligne est trop longue. Django PEP8

PEP8 info: 

models.py:10:80: E501 line too long (83 > 79 characters)

Models.py: 

field = TreeForeignKey('self', null=True, blank=True, related_name='abcdefgh')

Comment écrire correctement cette ligne?

17
Angelina

C'est "correct", PEP8 marque juste des lignes de plus de 79 caractères. Mais si cela vous préoccupe, vous pouvez l'écrire comme ceci:

field = TreeForeignKey('self',
                       null=True,
                       blank=True,
                       related_name='abcdefgh')

Ou ca:

field = TreeForeignKey(
    'self',
    null=True,
    blank=True,
    related_name='abcdefgh',
)

Ou, vraiment, tout autre style qui séparerait la ligne unique en plusieurs lignes plus courtes.

26
mipadi

Je viens de trouver ce programme appelé autopep8! https://github.com/hhatto/autopep8

pip install autopep8
autopep8 -i models.py

Vous pouvez aussi faire (récursivement):

autopep8 -ri package/

Auto PEP8 n'apporte que des modifications sécurisées aux fichiers, uniquement la disposition, pas la logique de code.

12
umeboshi

C'est très subjectif. J'écrirais, si je suivais strictement E501: 

field = TreeForeignKey('self',
                       null=True,
                       blank=True,
                       related_name='abcdefgh')

Je considère habituellement 100 trop long, pas 80.

5
Pavel Anossov

Si vous avez une longue chaîne ridicule qu'il n'est pas très commode de décomposer (en pensant à des choses comme Sentry DSN, le module occasionnel dans MIDDLEWARE ou INSTALLED_APPS), vous pouvez simplement mettre # noqa à la fin de la ligne et les linters ignoreront la ligne. Utilisez-le avec parcimonie et certainement pas pour le cas que vous avez demandé.

4

Je divise généralement cela pour aligner les paramètres d'un niveau d'indentation plus profond que la ligne d'origine, comme:

field = TreeForeignKey('self', null=True,
    blank=True, related_name='abcdefgh')

Surtout si TreeForeignKey est quelque chose comme TreeForeignKeyWithReferencesToSomethingElse, auquel cas tous les paramètres commenceraient à l'extrême droite de la fenêtre si vous les aligniez tous avec la parenthèse qui s'ouvre. Si l'un des paramètres porte un nom long comme defaultvalueforcertaincircumstances, vous ne pourrez peut-être pas l'intégralité du texte dans moins de 80 colonnes:

field = TreeForeignKeyWithReferencesToSomethingElse('self',
                                                    defaultvalueforcertaincircumstances='foo')

Je préfère également mettre plusieurs paramètres de fonction sur la même ligne (sauf quand cela ne semble pas juste; je ne suis pas puriste!) Afin que l'espace vertical ne soit pas trop étendu, ce qui me fait passer plus de temps à faire défiler mon éditeur que par ailleurs nécessaire.

0
Kirk Strauser