Python flake8 py неправильно сообщает о W391 (без новой строки в конце файла) - PullRequest
0 голосов
/ 10 ноября 2019

W391 говорит, что в конце файла должна быть одна (и только одна) пустая строка. Однако flake8 сообщает об ошибке, когда в конце файла есть хотя бы одна новая строка:

$ cat /tmp/test.py
def hello():
    print('hello')


hello()


$ hexdump -C /tmp/test.py
00000000  64 65 66 20 68 65 6c 6c  6f 28 29 3a 0a 20 20 20  |def hello():.   |
00000010  20 70 72 69 6e 74 28 27  68 65 6c 6c 6f 27 29 0a  | print('hello').|
00000020  0a 0a 68 65 6c 6c 6f 28  29 0a 0a                 |..hello()..|
0000002b

Как вы можете видеть выше, фактически есть одна и только одна пустая строка в концефайл (0a равен \n). Однако, когда я запускаю flake8, я получаю ошибку W391:

$ flake8 /tmp/test.py
/tmp/test.py:6:1: W391 blank line at end of file

Почему это так?

1 Ответ

0 голосов
/ 10 ноября 2019

Очевидно, vim автоматически добавляет новую строку в каждый файл, что вводит меня в заблуждение, что последней пустой строки нет. Со временем этот неявный символ новой строки запутал меня в мысли, что два символа новой строки в конце создали одну пустую строку.

Итак, предупреждение верно. В конце файла должен быть один и только один \n.

...