Skip to content

Commit

Permalink
Revert to treating exclude in .ini as single string (python#11881)
Browse files Browse the repository at this point in the history
Partially reverts python#11329 (with respect to `.ini` documentation).
Modifies existing unit tests.

Fixes python#11830.

Co-authored-by: Matthew W <matthew@willcockson.family>
  • Loading branch information
2 people authored and tushar-deepsource committed Jan 20, 2022
1 parent 158233a commit 3296a21
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 9 deletions.
20 changes: 15 additions & 5 deletions docs/source/config_file.rst
Original file line number Diff line number Diff line change
Expand Up @@ -197,18 +197,28 @@ section of the command line docs.

.. confval:: exclude

:type: newline separated list of regular expressions
:type: regular expression

A newline list of regular expression that matches file names, directory names and paths
A regular expression that matches file names, directory names and paths
which mypy should ignore while recursively discovering files to check.
Use forward slashes on all platforms.

.. code-block:: ini
[mypy]
exclude =
^file1\.py$
^file2\.py$
exclude = (?x)(
^one\.py$ # files named "one.py"
| two\.pyi$ # or files ending with "two.pyi"
| ^three\. # or files starting with "three."
)
Crafting a single regular expression that excludes multiple files while remaining
human-readable can be a challenge. The above example demonstrates one approach.
``(?x)`` enables the ``VERBOSE`` flag for the subsequent regular expression, which
`ignores most whitespace and supports comments`__. The above is equivalent to:
``(^one\.py$|two\.pyi$|^three\.)``.

.. __: https://docs.python.org/3/library/re.html#re.X

For more details, see :option:`--exclude <mypy --exclude>`.

Expand Down
2 changes: 1 addition & 1 deletion mypy/config_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ def check_follow_imports(choice: str) -> str:
'cache_dir': expand_path,
'python_executable': expand_path,
'strict': bool,
'exclude': lambda s: [p.strip() for p in s.split('\n') if p.strip()],
'exclude': lambda s: [s.strip()],
}

# Reuse the ini_config_types and overwrite the diff
Expand Down
7 changes: 4 additions & 3 deletions test-data/unit/cmdline.test
Original file line number Diff line number Diff line change
Expand Up @@ -1354,9 +1354,10 @@ b/bpkg.py:1: error: "int" not callable
# cmd: mypy .
[file mypy.ini]
\[mypy]
exclude =
abc
b
exclude = (?x)(
^abc/
|^b/
)
[file abc/apkg.py]
1()
[file b/bpkg.py]
Expand Down

0 comments on commit 3296a21

Please sign in to comment.