1
0
forked from VimPlug/jedi

make source_path in script optional, fixes #32

This commit is contained in:
David Halter
2012-10-20 13:45:15 +02:00
parent 95481be64c
commit bb76792ea8
6 changed files with 16 additions and 9 deletions

View File

@@ -198,7 +198,7 @@ class Script(object):
:param col: The column to complete in.
:type col: int
:param source_path: The path in the os, the current module is in.
:type source_path: string
:type source_path: string or None
"""
def __init__(self, source, line, column, source_path):
self.pos = line, column

View File

@@ -50,7 +50,8 @@ class CachedModule(object):
self._parser = parsing.PyFuzzyParser(source, self.path or self.name)
p_time = None if not self.path else os.path.getmtime(self.path)
self.cache[self.path or self.name] = p_time, self._parser
if self.path or self.name:
self.cache[self.path or self.name] = p_time, self._parser
class Parser(CachedModule):

View File

@@ -37,7 +37,8 @@ class ImportPath(object):
self.is_like_search = is_like_search
self.direct_resolve = direct_resolve
self.is_partial_import = bool(kill_count)
self.file_path = os.path.dirname(import_stmt.get_parent_until().path)
path = import_stmt.get_parent_until().path
self.file_path = os.path.dirname(path) if path is not None else None
# rest is import_path resolution
self.import_path = []
@@ -198,9 +199,13 @@ class ImportPath(object):
sys.path = temp
return i
sys_path_mod = self.sys_path_with_modifications()
if self.file_path:
sys_path_mod = self.sys_path_with_modifications()
sys_path_mod.insert(0, self.file_path)
else:
sys_path_mod = builtin.module_find_path
current_namespace = None
sys_path_mod.insert(0, self.file_path)
# now execute those paths
rest = []
for i, s in enumerate(self.import_path):

View File

@@ -40,7 +40,7 @@ class ModuleWithCursor(Module):
be there.
:param source: The source code of the file.
:param path: The module path of the file.
:param path: The module path of the file or None.
:param position: The position, the user is currently in. Only important \
for the main file.
"""
@@ -62,7 +62,8 @@ class ModuleWithCursor(Module):
# Also, the position is here important (which will not be used by
# default), therefore fill the cache here.
self._parser = parsing.PyFuzzyParser(source, path, position)
builtin.CachedModule.cache[self.path] = time.time(), self._parser
if self.path:
builtin.CachedModule.cache[self.path] = time.time(), self._parser
def get_path_until_cursor(self):
""" Get the path under the cursor. """

View File

@@ -300,7 +300,7 @@ class Module(Scope):
return self._name
def is_builtin(self):
return not self.path.endswith('.py')
return not (self.path is None or self.path.endswith('.py'))
class Class(Scope):

View File

@@ -16,7 +16,7 @@ import api
class TestRegression(unittest.TestCase):
def get_def(self, src, pos):
script = api.Script(src, pos[0], pos[1], '')
script = api.Script(src, pos[0], pos[1], None)
return script.get_definition()
def complete(self, src, pos=None):