mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 22:14:27 +08:00
Start using the correct parser for each environment
This commit is contained in:
@@ -115,7 +115,7 @@ class Script(object):
|
|||||||
# Load the Python grammar of the current interpreter.
|
# Load the Python grammar of the current interpreter.
|
||||||
self._grammar = parso.load_grammar()
|
self._grammar = parso.load_grammar()
|
||||||
project = Project(sys_path=sys_path)
|
project = Project(sys_path=sys_path)
|
||||||
self._evaluator = Evaluator(self._grammar, project, environment)
|
self._evaluator = Evaluator(project, environment)
|
||||||
project.add_script_path(self.path)
|
project.add_script_path(self.path)
|
||||||
debug.speed('init')
|
debug.speed('init')
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class _BaseEnvironment(object):
|
|||||||
return Project(self.get_sys_path())
|
return Project(self.get_sys_path())
|
||||||
|
|
||||||
@memoize_method
|
@memoize_method
|
||||||
def get_parser(self):
|
def get_grammar(self):
|
||||||
version_string = '%s.%s' % (self.version_info.major, self.version_info.minor)
|
version_string = '%s.%s' % (self.version_info.major, self.version_info.minor)
|
||||||
return parso.load_grammar(version=version_string)
|
return parso.load_grammar(version=version_string)
|
||||||
|
|
||||||
|
|||||||
@@ -87,8 +87,13 @@ from jedi.evaluate.syntax_tree import eval_trailer, eval_expr_stmt, \
|
|||||||
|
|
||||||
|
|
||||||
class Evaluator(object):
|
class Evaluator(object):
|
||||||
def __init__(self, grammar, project, environment=None):
|
def __init__(self, project, environment=None):
|
||||||
self.grammar = grammar
|
if environment is None:
|
||||||
|
environment = get_default_environment()
|
||||||
|
self.environment = environment
|
||||||
|
self.compiled_subprocess = environment.get_evaluator_subprocess(self)
|
||||||
|
self.grammar = environment.get_grammar()
|
||||||
|
|
||||||
self.latest_grammar = parso.load_grammar(version='3.6')
|
self.latest_grammar = parso.load_grammar(version='3.6')
|
||||||
self.memoize_cache = {} # for memoize decorators
|
self.memoize_cache = {} # for memoize decorators
|
||||||
# To memorize modules -> equals `sys.modules`.
|
# To memorize modules -> equals `sys.modules`.
|
||||||
@@ -104,11 +109,6 @@ class Evaluator(object):
|
|||||||
self.access_cache = {}
|
self.access_cache = {}
|
||||||
project.add_evaluator(self)
|
project.add_evaluator(self)
|
||||||
|
|
||||||
if environment is None:
|
|
||||||
environment = get_default_environment()
|
|
||||||
self.environment = environment
|
|
||||||
self.compiled_subprocess = environment.get_evaluator_subprocess(self)
|
|
||||||
|
|
||||||
self.reset_recursion_limitations()
|
self.reset_recursion_limitations()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|||||||
@@ -203,7 +203,6 @@ class Listener(object):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
from jedi.api.environment import InterpreterEnvironment
|
from jedi.api.environment import InterpreterEnvironment
|
||||||
evaluator = Evaluator(
|
evaluator = Evaluator(
|
||||||
grammar=None,
|
|
||||||
project=project.Project(),
|
project=project.Project(),
|
||||||
environment=InterpreterEnvironment()
|
environment=InterpreterEnvironment()
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ def test_find_python_environments():
|
|||||||
for env in envs:
|
for env in envs:
|
||||||
assert env.version_info
|
assert env.version_info
|
||||||
assert env.get_sys_path()
|
assert env.get_sys_path()
|
||||||
parser_version = env.get_parser().version_info
|
parser_version = env.get_grammar().version_info
|
||||||
assert parser_version[:2] == env.version_info[:2]
|
assert parser_version[:2] == env.version_info[:2]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user