Ignore pyflakes warnings with bypass_pyflakes

Pyflakes is a popular linter for python, even if it isn’t being maintained anymore. One long standing request is to allow ignoring of specific warnings with comments, like many other linters allow.

For example, it’s common in python config files to use import *. But you definitely don’t want to allow that in most places.

form settings.base import *
MY_OVERIDE = 'foobar' # over-ride this setting from base

This results in the warning settings/local.py:1: 'from settings.base import *' used; unable to detect undefined names.

It would be nice to be able to do the following.

form settings.base import *  # bypass_pyflakes
MY_OVERIDE = 'foobar' # over-ride this setting from base

Here is a python script that monkey patches pyflakes to add this functionality.

#!/usr/bin/env python

from pyflakes.scripts import pyflakes
from pyflakes.checker import Checker

def report_with_bypass(self, messageClass, *args, **kwargs):
text_lineno = args[0] - 1
with open(self.filename, 'r') as code:
if code.readlines()[text_lineno].find('bypass_pyflakes') >= 0:
self.messages.append(messageClass(self.filename, *args, **kwargs))

# monkey patch checker to support bypass
Checker.report = report_with_bypass


If you save this as pyflakes-bypass.py, instead of running the pyflakes <path> command directly, you would now run pyflakes-bypass.py <path>.