Подтвердить что ты не робот

"Неиспользуемое предупреждение о введении" и pylint

Итак, я работаю над проектом на Python и стараюсь поддерживать его со стандартами с pylint и просто в целом. Итак, у меня есть исходный файл (мы просто назовем его a.py)

#a.py
import loggingsetup

def foo():
   log.info("This is a log message")

Но я хочу контролировать, как выглядит журнал, поэтому в loggingsetup у меня есть что-то вроде:

#loggingsetup.py
import logging

logging.root.setLevel(logging.DEBUG)

consoleOut = logging.StreamHandler()
consoleOut.setLevel(logging.INFO)  
consoleOut.setFormatter(logging.Formatter("\t"+logging.BASIC_FORMAT))
logging.root.addHandler(consoleOut)

#etc

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

Но мой главный вопрос заключается в том, что когда я запускаю pylint на a.py, я получаю предупреждение, подобное "unused import - import loggingsetup", поскольку на самом деле я не вызываю никаких методов или функций из loggingsetup.

Я мог бы сделать что-то вроде переопределения тела loggingsetup как функции и вызвать его, но он кажется глупым и подверженным ошибкам (мне придется беспокоиться о его вызове дважды, если я импортирую loggingsetup из другого места, и если Я понимаю, как python обрабатывает импорт, что не проблема с моей текущей настройкой).

Я мог бы просто сказать pylint игнорировать предупреждение, но я подумал, что сначала попрошу здесь убедиться, что на самом деле это не то, что я должен обрабатывать по-разному.

4b9b3361

Ответ 1

Подход, который я хотел бы использовать, - это использовать loggingsetup как своего рода оболочку для logging.

import logging

# set up logging config here

from logging import *

Затем в ваших других модулях вы:

import loggingsetup as logging

В этом случае вы можете использовать имя, отличное от loggingsetup, например. tweaked_logging или logging_with_my_settings.

Ответ 2

В таких случаях вы можете явно указать pylint, что этот неиспользуемый импорт в предполагаемом:

import loggingsetup # pylint: disable=unused-import

Обратите внимание, что инструкция находится в той же строке, что и импорт, поэтому W0611 отключен только для этой строки, а не для всего блока ниже.

Ответ 3

Если вы используете pylint и flake8, вы можете игнорировать неиспользуемое импортное предупреждение в обоих инструментах таким образом:

import loggingsetup  # noqa # pylint: disable=unused-import

Ответ 4

Как вы уже упоминали о том, что обертываете его в функцию и явное указание этой установки разрешает это предупреждение. И, как сказал Стивен, это будет считаться лучшим кодом, поскольку он более четко говорит о том, что вы делаете.

Если вы беспокоитесь о вызове этой функции дважды, вы можете, конечно, использовать флаг intern-модуля, чтобы разрешить выполнение тела функции только один раз.

__initialized = False

def init():
    if not __initialized:
        __initialized = True
        #DoStuff

Ответ 5

ваш код должен быть в функции, вызываемой один раз в главном script