Search code examples
mypypre-commitpre-commit.com

Is it possible to run mypy pre-commit without making it fail?


I would like to add the following to pre-commit for a team:

-   repo: https://github.com/pre-commit/mirrors-mypy
    rev: 'v0.720'
    hooks:
    -   id: mypy
        args: [--ignore-missing-imports]

My team is worried that this might be too strict. To have a gradual introduction, I would like this hook not to make the commit fail, but only to show the issues. Is that possible?


Solution

  • you can, but I wouldn't suggest it -- warning noise is likely to have your whole team ignore the entire output and the entire tool

    here's how you would do such a thing (note that it has reduced portability due to bash -- mostly because the framework intentionally does not suggest this)

    -   repo: https://github.com/pre-commit/mirrors-mypy
        rev: v0.720
        hooks:
        -   id: mypy
            verbose: true
            entry: bash -c 'mypy "$@" || true' --
    

    two pieces make this work:

    1. verbose: true always produces the output -- this option is really only intended for debugging purposes, but you can turn it on always (it can be noisy / annoying though)
    2. bash + || true -- ignore the exit code

    disclaimer: I am the author of pre-commit