From 588fbea4f9bf49afb5d71a6e80ee51c59c79c2e8 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Fri, 17 Jan 2014 00:25:30 +0100 Subject: [PATCH] start to remove user_stmt parsing --- jedi/api/__init__.py | 1 - jedi/parser/user_context.py | 11 ++++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/jedi/api/__init__.py b/jedi/api/__init__.py index 75cdb172..1defb6c2 100644 --- a/jedi/api/__init__.py +++ b/jedi/api/__init__.py @@ -16,7 +16,6 @@ from itertools import chain from jedi._compatibility import next, unicode, builtins from jedi.parser import Parser from jedi.parser import representation as pr -from jedi.parser import fast from jedi.parser.user_context import UserContext, UserContextParser from jedi import debug from jedi import settings diff --git a/jedi/parser/user_context.py b/jedi/parser/user_context.py index 4cc774d6..cb158daa 100644 --- a/jedi/parser/user_context.py +++ b/jedi/parser/user_context.py @@ -195,16 +195,21 @@ class UserContextParser(object): cache.save_parser(self._path, None, parser, pickling=False) return parser + @cache.underscore_memoization + def _get_user_stmt(self): + return self.module().get_statement_for_position(self._position, + include_imports=True) + def user_stmt(self, is_completion=False): - user_stmt = self._parser().user_stmt + user_stmt = self._get_user_stmt() debug.speed('parsed') if is_completion and not user_stmt: # for statements like `from x import ` (cursor not in statement) pos = next(self._user_context.get_context(yield_positions=True)) - last_stmt = pos and self._parser().module.get_statement_for_position( - pos, include_imports=True) + last_stmt = pos and \ + self.module().get_statement_for_position(pos, include_imports=True) if isinstance(last_stmt, representation.Import): user_stmt = last_stmt return user_stmt