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:
            return
    self.messages.append(messageClass(self.filename, *args, **kwargs))

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

pyflakes.main()

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



I'm currently working at NerdWallet, a startup in San Francisco trying to bring clarity to all of life's financial decisions. We're hiring like crazy. Hit me up on Twitter, I would love to talk.

Follow @chase_seibert on Twitter