python / python/mypy

Make type checking mypy more straightforward for new contributors

Open
#11,403 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

topic-developer topic-tests
Dominant language
Python
Stars
20.6k
Forks
3.3k
PR merge metrics
PR metrics pending

Description

There are a couple pitfalls relating to type checking mypy itself that don't seem to be documented anywhere:

  1. Specifying files: Running mypy . and mypy mypy mypyc both result in duplicate module errors that prevent further type checking. The correct way to run mypy is mypy -p mypy -p mypyc, which doesn't appear to be documented anywhere (I only found this by looking at the tox.ini config file).
  2. Specifying the config file: Failing to specify mypy_self_check.ini as the config file results in an error in mypy/bogus_type.py and means that people aren't using mypy's stricter type checking options.

I think the solution to 2 would be to rename mypy_self_check.ini to mypy.ini, because self checking mypy is significantly more common than compiling mypy with mypyc, so making mypy_self_check.ini the default config file seems reasonable.

For 1, we should at the very least document the command to run mypy in CONTRIBUTING.md. I think the ideal solution would involve changing the configuration file so that either mypy . or mypy mypy mypyc just works correctly, the latter of which seems to be possible from my experiments by turning on namespace_packages and excluding mypyc/test-data.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with CONTRIBUTING.md and tox.ini to compare the documented and configured mypy commands. Inspect mypy_self_check.ini and mypy/bogus_type.py, then verify whether the proposed config naming or namespace-package changes avoid duplicate-module errors while retaining strict self-checking. Done means the contributor workflow documents a reliable command and configuration.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system, developer-experience, documentation
Issue type
Documentation
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.