Игнорировать doctests/docstrings с pyflakes/pylint

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

def myfunction(ind, other):
   """
   Parameters
   ----------
   ind: Index
   other: Index or set

   Returns
   -------
   Index.

   Examples
   --------

   >>> myfunction(some_index, other)
   """
   return index + other

Если я запускаю это через flake8, я получаю:

file.py:15:1: F821 undefined name 'other'
file.py:15:1: F821 undefined name 'some_index'
file.py:17:1: F821 undefined name 'index'

Но я хочу видеть только ошибку индекса и игнорировать остальные:

file.py:17:1: F821 undefined name 'index'

Если я запускаю на нем pylint или pyflakes, выдается ошибка о том, что некоторые_индексы и другие не определены (что верно, но не всегда полезно). Как сообщить программам, чтобы они пропускали эти ошибки? Я работаю над большой библиотекой, в которой разбросано множество примеров, некоторые из которых не определены, а просто установлены как примеры того, как их вызывать. Да, это не здорово, что нельзя запускать doctests, но на данный момент это добавляет тонну шума в вывод pylint или pyflakes. Flake8, похоже, тоже не предлагает возможности их пропустить.

Как я могу заставить это работать? Есть ли простой способ определить, какие вещи являются строками документации в Python, и таким образом отфильтровать результаты?


person Jeff Tratner    schedule 29.09.2013    source источник


Ответы (2)


Проверка строк документации — это регрессия в pyflakes; пожалуйста, прокомментируйте эту ошибку, чтобы добавить свой голос в обсуждение.

Вы можете отключить его на данный момент, установив переменную среды PYFLAKES_NODOCTEST.

person Glyph    schedule 30.10.2013
comment
да - я тот, кто открыл вопрос :) - person Jeff Tratner; 31.10.2013
comment
Ааа. Спасибо за это! - person Glyph; 01.11.2013
comment
Это было интересно — помогло мне вникнуть в модуль, и как раз когда я собирался вставить свой собственный хак, чтобы полностью игнорировать строки документации, я заметил, что проверялась переменная среды PYFLAKES_NODOCTEST — whee. - person Jeff Tratner; 01.11.2013

flake8 предоставляет опцию ignore:

flake8 --ignore=F821 a.py
person iMom0    schedule 29.09.2013
comment
F821 для доктестов? Я не мог найти для этого. - person Jeff Tratner; 29.09.2013
comment
это не работает, тогда вы не видите этих ошибок в реальном коде - person Jeff Tratner; 29.09.2013