Skip to content

--exclude not working as expected #11094

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
RaenonX opened this issue Sep 12, 2021 · 2 comments
Closed

--exclude not working as expected #11094

RaenonX opened this issue Sep 12, 2021 · 2 comments
Labels

Comments

@RaenonX
Copy link

RaenonX commented Sep 12, 2021

Not sure if this is a bug, already consulted the docs, so using this form.

Here's I ran:

PS E:\Personal@SSD\Game\DL\dragalia-data-parse> mypy --verbose tests/conftest.py

LOG:  Mypy Version:           0.910
LOG:  Config File:            pyproject.toml
LOG:  Configured Executable:  e:\personal@ssd\game\dl\dragalia-data-parse\venv\scripts\python.exe
LOG:  Current Executable:     e:\personal@ssd\game\dl\dragalia-data-parse\venv\scripts\python.exe
LOG:  Cache Dir:              .mypy_cache
LOG:  Compiled:               True
LOG:  Exclude:                /tests/
LOG:  Found source:           BuildSource(path='tests\\conftest.py', module='tests.conftest', has_text=False, base_dir='E:\\Personal@SSD\\Game\\DL\\dragalia-data-parse')
LOG:  Could not load cache for tests.conftest: tests\conftest.meta.json
LOG:  Metadata not found for tests.conftest
LOG:  Parsing tests\conftest.py (tests.conftest)
LOG:  Skipping E:\Personal@SSD\Game\DL\dragalia-data-parse\tests\__init__.py (tests)
LOG:  Skipping e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\pytest\__init__.py (pytest)
LOG:  Skipping E:\Personal@SSD\Game\DL\dragalia-data-parse\dlparse\mono\manager.py (dlparse.mono.manager)
LOG:  Skipping E:\Personal@SSD\Game\DL\dragalia-data-parse\dlparse\transformer\__init__.py (dlparse.transformer)
LOG:  Skipping E:\Personal@SSD\Game\DL\dragalia-data-parse\tests\static.py (tests.static)
LOG:  Metadata fresh for builtins: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\builtins.pyi
LOG:  Metadata fresh for sys: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\sys.pyi
LOG:  Metadata fresh for types: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\types.pyi
LOG:  Metadata fresh for _typeshed: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\_typeshed\__init__.pyi
LOG:  Metadata fresh for ast: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\ast.pyi
LOG:  Metadata fresh for io: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\io.pyi
LOG:  Metadata fresh for typing: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\typing.pyi
LOG:  Metadata fresh for typing_extensions: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\typing_extensions.pyi
LOG:  Metadata fresh for importlib.abc: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\importlib\abc.pyi
LOG:  Metadata fresh for importlib.machinery: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\importlib\machinery.pyi
LOG:  Metadata fresh for array: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\array.pyi
LOG:  Metadata fresh for mmap: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\mmap.pyi
LOG:  Metadata fresh for os: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\os\__init__.pyi
LOG:  Metadata fresh for _ast: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\_ast.pyi
LOG:  Metadata fresh for codecs: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\codecs.pyi
LOG:  Metadata fresh for collections: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\collections\__init__.pyi
LOG:  Metadata fresh for abc: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\abc.pyi
LOG:  Metadata fresh for importlib: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\importlib\__init__.pyi
LOG:  Metadata fresh for posix: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\posix.pyi
LOG:  Metadata fresh for subprocess: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\subprocess.pyi
LOG:  Metadata fresh for os.path: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\os\path.pyi
LOG:  Metadata fresh for _collections_abc: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\_collections_abc.pyi
LOG:  Metadata fresh for ntpath: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\ntpath.pyi
LOG:  Metadata fresh for genericpath: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\genericpath.pyi
LOG:  Metadata fresh for posixpath: file e:\personal@ssd\game\dl\dragalia-data-parse\venv\lib\site-packages\mypy\typeshed\stdlib\posixpath.pyi
LOG:  Loaded graph with 26 nodes (0.045 sec)
LOG:  Found 2 SCCs; largest has 25 nodes
LOG:  Processing 1 queued fresh SCCs
LOG:  Processing SCC singleton (tests.conftest) as inherently stale
tests\conftest.py:66: error: Function is missing a type annotation  [no-untyped-def]
tests\conftest.py:76: error: Function is missing a type annotation  [no-untyped-def]
LOG:  Deleting tests.conftest tests\conftest.py tests\conftest.meta.json tests\conftest.data.json
LOG:  No fresh SCCs left in queue
LOG:  Build finished in 0.114 seconds with 26 modules, and 2 errors
Found 2 errors in 1 file (checked 1 source file)

Here's what I have in my pyproject.toml

[tool.mypy]
follow_imports = "skip"
exclude = "/tests/"
show_error_codes = true
disable_error_code = "misc"
disallow_untyped_defs = true
disallow_untyped_decorators = true
disallow_any_expr = true

Added follow_imports = "skip" because some issue about the --exclude flag is because of that.

I expect the file I intend to check to be excluded, however it's not. I also tried the following patterns, but none of them works.

  • /tests
  • tests/
  • tests
  • ./tests/
  • ./tests
  • (^|\\.?)/tests/
  • (^|\\.)/tests/

Double backslash for escape in toml.

I am using Windows 10.

@emmatyping
Copy link
Member

The docs for exclude state

A regular expression that matches file names, directory names and paths which mypy should ignore while recursively discovering files to check

I think if you explicitly pass a file to mypy it will still get checked, even if it is matched by the exclude regex, and this appears to be documented behavior.

@bluebrown
Copy link

Its maybe also worth adding this info about the behaviour of exclude:

Note that this flag only affects recursive discovery, that is, when mypy is discovering files within a directory tree or submodules of a package to check. If you pass a file or module explicitly it will still be checked. For instance, mypy --exclude '/setup.py$' but_still_check/setup.py.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants