.. currentmodule:: pycodestyle ============== Advanced usage ============== Automated tests --------------- You can also execute ``pycodestyle`` tests from Python code. For example, this can be highly useful for automated testing of coding style conformance in your project:: import unittest import pycodestyle class TestCodeFormat(unittest.TestCase): def test_conformance(self): """Test that we conform to PEP-8.""" style = pycodestyle.StyleGuide(quiet=True) result = style.check_files(['file1.py', 'file2.py']) self.assertEqual(result.total_errors, 0, "Found code style errors (and warnings).") There's also a shortcut for checking a single file:: import pycodestyle fchecker = pycodestyle.Checker('testing/data/E27.py', show_source=True) file_errors = fchecker.check_all() print("Found %s errors (and warnings)" % file_errors) Configuring tests ----------------- You can configure automated ``pycodestyle`` tests in a variety of ways. For example, you can pass in a path to a configuration file that ``pycodestyle`` should use:: import pycodestyle style = pycodestyle.StyleGuide(config_file='/path/to/tox.ini') You can also set specific options explicitly:: style = pycodestyle.StyleGuide(ignore=['E501']) Skip file header ---------------- Another example is related to the `feature request #143 `_: skip a number of lines at the beginning and the end of a file. This use case is easy to implement through a custom wrapper for the PEP 8 library:: #!python import pycodestyle LINES_SLICE = slice(14, -20) class StyleGuide(pycodestyle.StyleGuide): """This subclass of pycodestyle.StyleGuide will skip the first and last lines of each file.""" def input_file(self, filename, lines=None, expected=None, line_offset=0): if lines is None: assert line_offset == 0 line_offset = LINES_SLICE.start or 0 lines = pycodestyle.readlines(filename)[LINES_SLICE] return super(StyleGuide, self).input_file( filename, lines=lines, expected=expected, line_offset=line_offset) if __name__ == '__main__': style = StyleGuide(parse_argv=True, config_file=True) report = style.check_files() if report.total_errors: raise SystemExit(1) This module declares a lines' window which skips 14 lines at the beginning and 20 lines at the end. If there's no line to skip at the end, it could be changed with ``LINES_SLICE = slice(14, None)`` for example. You can save it in a file and use it with the same options as the original ``pycodestyle``.