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.