From 6df69478dcf5ffbfedf1b27808e26812605271ae Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Sun, 5 Jan 2014 13:51:22 +0100 Subject: [PATCH] move load_module to imports --- jedi/evaluate/dynamic.py | 4 ++-- jedi/evaluate/imports.py | 27 +++++++++++++++++++++++---- jedi/modules.py | 21 --------------------- 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/jedi/evaluate/dynamic.py b/jedi/evaluate/dynamic.py index 53d1c2db..a9cdb307 100644 --- a/jedi/evaluate/dynamic.py +++ b/jedi/evaluate/dynamic.py @@ -56,7 +56,6 @@ import os from jedi import cache from jedi.common import source_to_unicode from jedi.parser import representation as pr -from jedi import modules from jedi import settings from jedi.parser import fast as fast_parser from jedi.evaluate.cache import memoize_default @@ -84,7 +83,8 @@ def get_directory_modules_for_name(mods, name): with open(path) as f: source = source_to_unicode(f.read()) if name in source: - return modules.load_module(path, source) + from jedi.evaluate import imports + return imports.load_module(path, source) # skip non python modules mods = set(m for m in mods if m.path is None or m.path.endswith('.py')) diff --git a/jedi/evaluate/imports.py b/jedi/evaluate/imports.py index 635379af..4a108730 100644 --- a/jedi/evaluate/imports.py +++ b/jedi/evaluate/imports.py @@ -22,7 +22,7 @@ from jedi._compatibility import find_module from jedi import common from jedi import debug from jedi import cache -from jedi import modules +from jedi.parser import fast from jedi.parser import representation as pr from jedi.evaluate import sys_path @@ -112,7 +112,7 @@ class ImportPath(pr.Base): if self._is_relative_import(): rel_path = self._get_relative_path() + '/__init__.py' if os.path.exists(rel_path): - m = modules.load_module(rel_path) + m = load_module(rel_path) names += m.get_defined_names() else: if on_import_stmt and isinstance(scope, pr.Module) \ @@ -359,9 +359,9 @@ class ImportPath(pr.Base): else: source = current_namespace[0].read() current_namespace[0].close() - return modules.load_module(path, source), rest + return load_module(path, source), rest else: - return modules.load_module(name=path), rest + return load_module(name=path), rest def strip_imports(evaluator, scopes): @@ -395,3 +395,22 @@ def remove_star_imports(evaluator, scope, ignored_modules=()): # Filter duplicate modules. return set(modules) + + +def load_module(path=None, source=None, name=None): + def load(source): + if path is not None and path.endswith('.py'): + if source is None: + with open(path) as f: + source = f.read() + else: + # TODO refactoring remove + from jedi.evaluate import builtin + return builtin.BuiltinModule(path, name).parser.module + p = path or name + p = fast.FastParser(common.source_to_unicode(source), p) + cache.save_parser(path, name, p) + return p.module + + cached = cache.load_parser(path, name) + return load(source) if cached is None else cached.module diff --git a/jedi/modules.py b/jedi/modules.py index 6200918c..3f8af2ce 100644 --- a/jedi/modules.py +++ b/jedi/modules.py @@ -18,31 +18,10 @@ import sys import os from jedi import cache -from jedi.common import source_to_unicode from jedi.parser import tokenize -from jedi.parser import fast from jedi import debug -def load_module(path=None, source=None, name=None): - def load(source): - if path is not None and path.endswith('.py'): - if source is None: - with open(path) as f: - source = f.read() - else: - # TODO refactoring remove - from jedi.evaluate import builtin - return builtin.BuiltinModule(path, name).parser.module - p = path or name - p = fast.FastParser(source_to_unicode(source), p) - cache.save_parser(path, name, p) - return p.module - - cached = cache.load_parser(path, name) - return load(source) if cached is None else cached.module - - class ModuleWithCursor(object): """ Manages all files, that are parsed and caches them.