coverage flake8 pre-commit pytest