mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-07 22:44:27 +08:00
CompiledContext should not have a file
This commit is contained in:
@@ -77,12 +77,13 @@ class BaseDefinition(object):
|
||||
@property
|
||||
def module_path(self):
|
||||
"""Shows the file path of a module. e.g. ``/usr/lib/python2.7/os.py``"""
|
||||
try:
|
||||
py__file__ = self._get_module().py__file__
|
||||
except AttributeError:
|
||||
module = self._get_module()
|
||||
if module.is_stub() or not module.is_compiled():
|
||||
# Compiled modules should not return a module path even if they
|
||||
# have one.
|
||||
return self._get_module().py__file__()
|
||||
|
||||
return None
|
||||
else:
|
||||
return py__file__()
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
|
||||
@@ -9,6 +9,7 @@ import pytest
|
||||
import jedi
|
||||
from jedi import __doc__ as jedi_doc, names
|
||||
from ..helpers import TestCase
|
||||
from jedi.evaluate.compiled import CompiledContextName
|
||||
|
||||
|
||||
def test_is_keyword(Script):
|
||||
@@ -439,3 +440,18 @@ def test_added_equals_to_params(Script):
|
||||
assert run(' bar').complete == ''
|
||||
x = run('foo(bar=isins').name_with_symbols
|
||||
assert x == 'isinstance'
|
||||
|
||||
|
||||
def test_builtin_module_with_path(Script):
|
||||
"""
|
||||
This test simply tests if a module from /usr/lib/python3.8/lib-dynload/ has
|
||||
a path or not. It shouldn't have a module_path, because that is just
|
||||
confusing.
|
||||
"""
|
||||
semlock, = Script('from _multiprocessing import SemLock').goto_definitions()
|
||||
assert isinstance(semlock._name, CompiledContextName)
|
||||
assert semlock.module_path is None
|
||||
assert semlock.in_builtin_module() is True
|
||||
assert semlock.name == 'SemLock'
|
||||
assert semlock.line is None
|
||||
assert semlock.column is None
|
||||
|
||||
Reference in New Issue
Block a user