From 1bccdfdf425d7b6863b6908b6aa60904dca2b6a5 Mon Sep 17 00:00:00 2001 From: Cindy Wang Date: Tue, 21 Apr 2026 15:57:31 -0400 Subject: [PATCH 1/2] modulefinder: support .git/info/exclude for --exclude-gitignore --- mypy/modulefinder.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mypy/modulefinder.py b/mypy/modulefinder.py index bf9b833bab87..18f75e520754 100644 --- a/mypy/modulefinder.py +++ b/mypy/modulefinder.py @@ -728,6 +728,14 @@ def find_gitignores(dir: str) -> list[tuple[str, PathSpec]]: parent_dir = os.path.dirname(dir) if parent_dir == dir or os.path.exists(os.path.join(dir, ".git")): parent_gitignores = [] + git_info_exclude = os.path.join(dir, ".git", "info", "exclude") + if os.path.isfile(git_info_exclude): + with open(git_info_exclude) as f: + exclude_lines = f.readlines() + try: + parent_gitignores = [(dir, PathSpec.from_lines("gitignore", exclude_lines))] + except GitIgnorePatternError: + print(f"error: could not parse {git_info_exclude}", file=sys.stderr) else: parent_gitignores = find_gitignores(parent_dir) From d7c4ba9cfe2984f3be14b40758419b13634a081d Mon Sep 17 00:00:00 2001 From: Roger Jin Date: Tue, 21 Apr 2026 16:08:36 -0400 Subject: [PATCH 2/2] Add cmdline test for .git/info/exclude support in --exclude-gitignore --- test-data/unit/cmdline.test | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test-data/unit/cmdline.test b/test-data/unit/cmdline.test index c3440fda74a0..cadb15ee4fcf 100644 --- a/test-data/unit/cmdline.test +++ b/test-data/unit/cmdline.test @@ -989,6 +989,17 @@ b [out] b/bpkg.py:1: error: "int" not callable +[case testCmdlineExcludeGitignoreWithGitInfoExclude] +# cmd: mypy --exclude-gitignore . +[file .git/info/exclude] +abc +[file abc/apkg.py] +1() +[file c/cpkg.py] +1() +[out] +c/cpkg.py:1: error: "int" not callable + [case testCmdlineCfgExclude] # cmd: mypy . [file mypy.ini]