Я решил улучшить качество своего кода, запустив известный рабочий код через pylint
. В частности, у меня есть milter, использующий pymilter
. Вот действительно простой код, который я запускаю:
#!/usr/bin/python3
"Test Milter"
import Milter
# Configuration
# List of email addresses for which incoming mail should be rejected:
EMAILS = ('mailinglist1@domain.com', 'mailinglist2@domain.com')
# Socket for milter
SOCKETNAME = 'inet:14201@127.0.0.1'
# End of Configuration
class TestMilter(Milter.Milter):
"Test Milter"
def __init__(self):
self.milter_id = Milter.uniqueID()
def envrcpt(self, to, *str):
"Reject mail if the To: address is one of the specified e-mail addresses."
if any(e in to for e in EMAILS):
return Milter.REJECT
return Milter.ACCEPT
if __name__ == "__main__":
Milter.factory = TestMilter
Milter.runmilter("test_milter", SOCKETNAME, 240)
Вот вывод pylint -E
:
************* Module test_milter
test_milter.py:24:19: E1101: Module 'Milter' has no 'REJECT' member (no-member)
test_milter.py:25:15: E1101: Module 'Milter' has no 'ACCEPT' member (no-member)
Я выглядел высоко и низко, и просто делаю не понимаю, почему pylint
дает мне этот вывод. Я не хочу говорить ему игнорировать это конкретное правило, потому что это на самом деле очень полезное правило в большинстве случаев. Есть идеи?