Pylint сообщение: недопустимое имя константы (invalid-name)
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
2 ответов
перемещение определение myprint
to main()
- Это один из способов подавить сообщение.
Per Pylint документы на invalid-name
(C0103), казалось бы, имя константы должно быть фактически прописным. Таким образом, имя MYPRINT
не будет генерировать сообщение.
если вы добавляете комментарий, как показано ниже, к строке, сообщение не должно быть сгенерировано.
log = get_logger() # pylint: disable=locally-disabled, invalid-name
в качестве альтернативы добавьте в .pylintrc
для вашего проекта. Это мой предпочтительное решение.
[BASIC]
good-names=log
если вы хотите, чтобы весь шаблон недопустимых имен (а не только одно имя) был действительным, вы можете настроить const-rgx
, etc. в том же разделе. См. страницу pylint, связанную ранее.
наконец, если ваше приложение небольшое и независимое, вы можете просто настроить и использовать корневой регистратор, например, с logging.warn('test')
.
проблема в том, что вы определяете myprint на уровне модуля.
Если вы определяете его в main, вы не получите эту ошибку от pylint.