Permalink
Browse files

make source_path in script optional, fixes #32

  • Loading branch information...
1 parent 95481be commit bb76792ea86404c154158dc9339d128d488b25b0 @davidhalter committed Oct 20, 2012
Showing with 16 additions and 9 deletions.
  1. +1 −1 jedi/api.py
  2. +2 −1 jedi/builtin.py
  3. +8 −3 jedi/imports.py
  4. +3 −2 jedi/modules.py
  5. +1 −1 jedi/parsing.py
  6. +1 −1 test/regression.py
View
@@ -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
@@ -50,7 +50,8 @@ def _load_module(self):
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
@@ -37,7 +37,8 @@ def __init__(self, import_stmt, is_like_search=False, kill_count=0,
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 @@ def follow_str(ns, string):
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
@@ -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 @@ def __init__(self, path, source, position):
# 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
@@ -300,7 +300,7 @@ def get_name(self):
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
@@ -16,7 +16,7 @@
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):

0 comments on commit bb76792

Please sign in to comment.