Skip to content

Commit ccbf6cd

Browse files
authored
Fix numpy go-to-definition by taking it off autoimport list for this case (#447)
1 parent 4211502 commit ccbf6cd

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

pylsp/plugins/definition.py

+16-6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
from __future__ import annotations
44
import logging
55
from typing import Any, Dict, List, TYPE_CHECKING
6+
7+
import jedi
8+
69
from pylsp import hookimpl, uris, _utils
710

811
if TYPE_CHECKING:
@@ -43,12 +46,19 @@ def pylsp_definitions(
4346
settings = config.plugin_settings("jedi_definition")
4447
code_position = _utils.position_to_jedi_linecolumn(document, position)
4548
script = document.jedi_script(use_document_path=True)
46-
definitions = script.goto(
47-
follow_imports=settings.get("follow_imports", True),
48-
follow_builtin_imports=settings.get("follow_builtin_imports", True),
49-
**code_position,
50-
)
51-
definitions = [_resolve_definition(d, script, settings) for d in definitions]
49+
auto_import_modules = jedi.settings.auto_import_modules
50+
51+
try:
52+
jedi.settings.auto_import_modules = []
53+
definitions = script.goto(
54+
follow_imports=settings.get("follow_imports", True),
55+
follow_builtin_imports=settings.get("follow_builtin_imports", True),
56+
**code_position,
57+
)
58+
definitions = [_resolve_definition(d, script, settings) for d in definitions]
59+
finally:
60+
jedi.settings.auto_import_modules = auto_import_modules
61+
5262
follow_builtin_defns = settings.get("follow_builtin_definitions", True)
5363
return [
5464
{

test/plugins/test_definitions.py

+12
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ def my_func():
3636
inception = my_list[2]
3737
3838
inception()
39+
40+
import numpy
41+
numpy.ones
3942
"""
4043

4144

@@ -89,6 +92,15 @@ def test_definition_with_multihop_inference_goto(config, workspace):
8992
)
9093

9194

95+
def test_numpy_definition(config, workspace):
96+
# Over numpy.ones
97+
cursor_pos = {"line": 29, "character": 8}
98+
99+
doc = Document(DOC_URI, workspace, DOC)
100+
defns = pylsp_definitions(config, doc, cursor_pos)
101+
assert len(defns) > 0, defns
102+
103+
92104
def test_builtin_definition(config, workspace):
93105
# Over 'i' in dict
94106
cursor_pos = {"line": 8, "character": 24}

0 commit comments

Comments
 (0)