Сообщение Pylint: недопустимое имя константы (недопустимое имя)
Пилинт жалуется на Invalid constant name "myprint" (invalid-name)
в случае сокращения для функции журнала.
# import
from utils import get_logger
LOGFILE = '6_evaluator.log'
myprint = get_logger(LOGFILE)
def main():
# some stuff
myprint('log log')
if __name__ == '__main__':
main()
Можно ли это сделать без настройки конфигурации pylint?
Если необходимо, вот определение get_logger
:
import logging
import os
def get_logger(logfile):
""" Return a logger that log on stdout and in LOGFILE"""
if os.path.isfile('{}'.format(logfile)):
os.remove('{}'.format(logfile))
logging.basicConfig(filename='{}'.format(logfile), level=logging.INFO)
logger = logging.getLogger('')
logger.addHandler(logging.StreamHandler())
myprint = logger.info
myprint('log file at: {}'.format(logfile))
myprint('Again Hello from logger')
return myprint
Ответы
Ответ 1
Перемещение определения myprint
на main()
является одним из способов подавления сообщения.
В документах Pylint для invalid-name
(C0103) кажется, что постоянное имя должно быть заглавным. Таким образом, имя MYPRINT
не будет генерировать сообщение.
Если вы добавите комментарий, как показано ниже, в строку, сообщение не должно генерироваться.
log = get_logger() # pylint: disable=locally-disabled, invalid-name
Кроме того, добавьте следующее в .pylintrc
для своего проекта. Это мое предпочтительное решение.
[BASIC]
good-names=log
Если вы хотите, чтобы весь шаблон недействительных имен (а не только одно имя) был действительным, вы можете в противном случае настроить const-rgx
и т.д. В том же разделе. Обратитесь к странице pylint, связанной ранее.
Наконец, если ваше приложение малое и независимое, вы можете просто настроить и использовать корневой регистратор, а не logging.warn('test')
.
Ответ 2
Проблема в том, что вы определяете myprint на уровне модуля.
Если вы определяете его в основном, вы не получите эту ошибку из pylint.