Skip to content

Commit 92eb068

Browse files
authored
Fix #224 add paths in mypy's mypy_path option or MYPYPATH env var for import discovery (#498)
1 parent 9d4d06f commit 92eb068

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

mypy_django_plugin/main.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import configparser
2+
import sys
23
from functools import partial
34
from typing import Callable, Dict, List, NoReturn, Optional, Tuple, cast
45

56
from django.db.models.fields.related import RelatedField
7+
from mypy.modulefinder import mypy_path
68
from mypy.nodes import MypyFile, TypeInfo
79
from mypy.options import Options
810
from mypy.plugin import (
@@ -91,6 +93,10 @@ class NewSemanalDjangoPlugin(Plugin):
9193
def __init__(self, options: Options) -> None:
9294
super().__init__(options)
9395
django_settings_module = extract_django_settings_module(options.config_file)
96+
# Add paths from MYPYPATH env var
97+
sys.path.extend(mypy_path())
98+
# Add paths from mypy_path config option
99+
sys.path.extend(options.mypy_path)
94100
self.django_context = DjangoContext(django_settings_module)
95101

96102
def _get_current_queryset_bases(self) -> Dict[str, int]:

test-data/typecheck/test_config.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,30 @@
3838
class MyModel(models.Model):
3939
user = models.ForeignKey('auth.User', on_delete=models.CASCADE)
4040
41+
- case: add_mypy_path_to_package_search
42+
main: |
43+
import extra_module
44+
mypy_config: |
45+
[mypy]
46+
mypy_path = ./extras
47+
[mypy.plugins.django-stubs]
48+
django_settings_module = mysettings
49+
files:
50+
- path: extras/extra_module.py
51+
content: |
52+
def extra_fn():
53+
pass
54+
55+
- case: add_mypypath_env_var_to_package_search
56+
main: |
57+
import extra_module
58+
mypy_config: |
59+
[mypy.plugins.django-stubs]
60+
django_settings_module = mysettings
61+
env:
62+
- MYPYPATH=./extras
63+
files:
64+
- path: extras/extra_module.py
65+
content: |
66+
def extra_fn():
67+
pass

0 commit comments

Comments
 (0)