Pylint E1103 Ложный Позитив? - PullRequest
2 голосов
/ 09 марта 2012

Следуя моему предыдущему вопросу ( "Pylint E0202 False Positive?" ), вот еще один (вполне определенный, я думаю)

мы используем подпроцесс модуля для выполнения, ну, в общем,подпроцесс.
Создание примера кода привело к следующему:

"Example code for E1103"

import subprocess

pipeOpen = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)

(responseData, errorData) = pipeOpen.communicate()

print "Error code: '%s'. Error data: '%s'" % (pipeOpen.returncode, errorData.strip("\n").strip("\r"))

Pylint скажет:

E1103: 9,67: Экземпляр 'list' не имеетчлен 'strip' (но некоторые типы не могут быть выведены)

Если посмотреть на pipeOpen.communicate (), он опускается до _communicate.И действительно, stderr инициализируется в список, однако перед возвращением, если self.universal_newlines имеет значение true, он преобразует список в строку с символами новой строки.

Это случай #pylint: ignore-msg=E1103 или лучшесообщить об этом разработчикам Pylint?

1 Ответ

1 голос
/ 09 марта 2012

хорошо, если print(pipeOpen.universal_newlines and hasattr(file, 'newlines')) возвращает True, и вы не получаете никаких ошибок при фактическом выполнении кода, то вы должны сообщить об этом разработчикам Pylint + игнорировать сообщение в это время

...