microsoft / microsoft/vscode-mypy

Unable to set config to ignore errors related to a specific module

Open
#329 5 comments 0 reactions 1 assignee Claimed by @karthiknadig View on GitHub
bug triage-needed
Dominant language
Python
Stars
150
Forks
39
Avg merge
21h 45m
Merged PRs (30d)
8

Description

## Diagnostic Data
- Python version (& distribution if applicable, e.g., Anaconda): Python 3.9.7 (via `mayapy`)
- Type of virtual environment used (e.g., conda, venv, virtualenv, etc.): Not really using a venv
- Operating system (and version): macOS 14.7 (23H124)
- Version of tool extension you are using: v2024.0.0

## Behaviour
### Expected Behavior
The `mypy` extension should fully respect the config in the `pyproject.toml` and I should see identical results to what I get when running directly on the cli.

### Actual Behavior
I am trying to get `mypy` in VSCode to ignore `maya.*` modules. When I run `mypy` directly via the command line using my `pyproject.toml` config, it does not raise errors as expected, but when I refresh `mypy` in VSCode, no matter what I do, it always hightlights error related to the `maya.cmds` module that I am using in my code.

More info on the `maya.*` modules: These are made available via Autodesk Maya's utility `mayapy`, which sets things up to use the `maya.*` packages that are internal to your Maya installation (previously, this was a shell script, but it appears to be a binary these days). I had previously set VSCode to use `mayapy` as the interpreter in order to get better auto-completion, but it turned out that is actually what caused a lot of new errors to show up due to how the `maya.cmds` module is written (it seems the functions only have the "short names" for their params as far as VSCode/mypy are concerned, but the long versions still work and are what I prefer to use `e.g. maya.cmds.ls(sl=True) vs maya.cmds.ls(selection=True)`).

Oddly, when I change the interpreter that VSCode uses to a different empty venv, it still raises errors that it could not possibly know about unless it followed the imports somehow, but that should not even be possible in an empty venv that does not have any connection to Maya. I'm also curious: is it possible to unset the Python interpreter? That setting doesn't seem to be store in the project's `.vscode/settings`.

## Reproduction Steps:
This the `mypy` config from my `pyproject.toml`:
```toml
####################################################################################################
# MyPy
####################################################################################################

[tool.mypy]
disallow_untyped_calls = false
exclude = []
files = [
"src/Dev/Pipeline/Maya/scripts/hz_p3d_tools",
]
ignore_missing_imports = true
strict = true

[[tool.mypy.overrides]]
ignore_errors = true
module = [
"maya.*",
]
```

I have tried various other possibilities for the module name/pattern, including `maya.cmds`, `cmds` (since I import as that), etc. Unfortunately, nothing works, and it still complains about an error that it could not possibly know about based on the current interpreter selected.

## Extra Details

- Medium size monorepo
- 10+ python packages that all use their own `pyproject.toml`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.