Pylint выдает ложную положительную ошибку E1101 «no-member» для «http.HTTPStatus» - PullRequest
0 голосов
/ 05 июля 2019

Я использую Pylint для кодирования (внутри VS Code с Pylint 2.3.1, Astroid 2.2.5, Python 3.6.2).

Поведение можно воспроизвести с помощью следующего фрагмента:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from http import HTTPStatus

print(HTTPStatus.NOT_ACCEPTABLE.phrase)

Распишем этот фрагмент по телефону

$ pylint snippet.py 

выдает следующее сообщение об ошибке:

E1101: Instance of 'NOT_ACCEPTABLE' has no 'phrase' member (no-member)

Тем не менее, я думаю, .phrase является членом данного экземпляра, так как код работает, печатает желаемый результат и ссылка на .phrase указана в документах . Что приводит к предположению, что сообщение об ошибке является ложноположительным.

Затем я посмотрел параметры конфигурации pylint в его собственной документации и в VS Code docs и сгенерировал файл .pylintrc, выполнив

pylint --generate-rcfile > .pylintrc

Внутри этого файла конфигурации мне удалось найти следующую строку:

enable=c-extension-no-member

Закомментируя эту строку и, таким образом, отключая проверки c-extension-no-member, ложное положительное сообщение об ошибке E1101 подавляется. Однако мне все еще интересно, является ли это просто обходным решением или реальным ложным срабатыванием, поскольку оно отключает все проверки c-extension-no-member и кажется непригодным для общего подхода. Конечно, можно указать конкретные модули, которые будут игнорироваться при выполнении проверок, но я просто хочу узнать причину этого сообщения об ошибке.

...