This is a test of pylint's ability to use abstract base classes to test for missing methods. twomod imports one of two modules: py2prn (Python 2.x-compatible code) or py3prn (Python 3.x-compatible code). ./this-pylint is a script that mostly just makes a successful pylint run silent. It runs with both pylint and pylint3 by default - specifying one of these as None (see the Makefile) means it will only check the other. We invoke this-pylint twice - once for 2.x only, once for 3.x only. Sadly, pylint does not detect the missing method in the 3.x code. The missing method is print_thing(). Instead, the 3.x code has print_thing2(), which is misnamed and unused. ----- This now works. One of the pylint folks improved pylint, and suggested using "import six" instead of the if for specifying the ABC metaclass. I also needed to fix this-pylint a bit - a bogus pylint command line option was making it seem as though everything was fine, when in fact there were relevant messages to be seen. So we need pylint 1.8.0, or something similar. We're using something similar via ~/virtualenvs/pylint-interface-experiment/bin/pylint . Getting a prerelease 1.8.0 involves: pip install --upgrade git+https://github.com/PyCQA/pylint