web-dev-qa-db-fra.com

Comment réparer Pylint "Wrong suspend indentation" et PEP8 E121?

J'essaie de mettre correctement en retrait le code suivant:

RULES_LIST = [
    ('Name1', 1, 'Long string upto 40 chars'),
    ('Name2', 2, 'Long string upto 40 chars'),
    ('Name3', 3, 'Long string upto 40 chars'),
    ('Name4', 4, 'Long string upto 40 chars'),
    ('Name5', 5, 'Long string upto 40 chars'),
    ('Name6', 6, 'Long string upto 40 chars'),
    ('Name7', 7, 'Long string upto 40 chars'),
    ('Name8', 8, 'Long string upto 40 chars')
]

Pylint se plaint Wrong hanging indentation. pour le code ci-dessus, et PEP8 se plaint E121: under-indented for hanging indent.

Un correctif possible pour pylint le change en:

RULES_LIST = [\
    ('Name1', 1, 'Long string upto 40 chars'),
     ...
    ('Name8', 8, 'Long string upto 40 chars')]

mais PEP8 se plaint E121 and E502

PEP8: 1.5.7 (configuration par défaut)
Pylint: 1.3.0 (configuration par défaut)
Python: 2.7.5 (fonctionnant sous OSX 10.9.3)

La liste peut s'allonger. Quelqu'un peut-il suggérer une indentation appropriée pour cela?

31
Jatin Kumar

Vous utilisez des tabulations au lieu de quatre espaces.

Ces trois possibilités sont correctes, si vous utilisez quatre espaces au lieu de tabulations:

RULES_LIST = [('Name1', 1, 'Long string upto 40 chars'),
              ('Name2', 2, 'Long string upto 40 chars'),
              ('Name3', 3, 'Long string upto 40 chars'),
              ('Name4', 4, 'Long string upto 40 chars'),
              ('Name5', 5, 'Long string upto 40 chars'),
              ('Name6', 6, 'Long string upto 40 chars'),
              ('Name7', 7, 'Long string upto 40 chars'),
              ('Name8', 8, 'Long string upto 40 chars')]

RULES_LIST = [
    ('Name1', 1, 'Long string upto 40 chars'),
    ('Name2', 2, 'Long string upto 40 chars'),
    ('Name3', 3, 'Long string upto 40 chars'),
    ('Name4', 4, 'Long string upto 40 chars'),
    ('Name5', 5, 'Long string upto 40 chars'),
    ('Name6', 6, 'Long string upto 40 chars'),
    ('Name7', 7, 'Long string upto 40 chars'),
    ('Name8', 8, 'Long string upto 40 chars')]

RULES_LIST = [
    ('Name1', 1, 'Long string upto 40 chars'),
    ('Name2', 2, 'Long string upto 40 chars'),
    ('Name3', 3, 'Long string upto 40 chars'),
    ('Name4', 4, 'Long string upto 40 chars'),
    ('Name5', 5, 'Long string upto 40 chars'),
    ('Name6', 6, 'Long string upto 40 chars'),
    ('Name7', 7, 'Long string upto 40 chars'),
    ('Name8', 8, 'Long string upto 40 chars')
]
10
Julien Palard

Si vous souhaitez continuer à utiliser les onglets, vous pouvez modifier les paramètres suivants dans le fichier .pylintrc:

indent-string='\t'
indent-after-paren=1

Si vous modifiez uniquement le premier, pylint s'attendra à ce que quatre onglets soient utilisés pour l'indentation.

8
James Brierley