Move the python parser tree.

This commit is contained in:
Dave Halter
2017-03-16 17:20:32 +01:00
parent b136800cfc
commit 448bfd0992
28 changed files with 1670 additions and 1671 deletions

View File

@@ -14,7 +14,7 @@ import warnings
import sys import sys
from jedi.parser.python import load_grammar from jedi.parser.python import load_grammar
from jedi.parser import tree from jedi.parser.python import tree
from jedi.parser.diff import FastParser from jedi.parser.diff import FastParser
from jedi.parser.utils import save_parser from jedi.parser.utils import save_parser
from jedi import debug from jedi import debug

View File

@@ -1,5 +1,5 @@
from jedi.parser import token from jedi.parser import token
from jedi.parser import tree from jedi.parser.python import tree
from jedi import debug from jedi import debug
from jedi import settings from jedi import settings
from jedi.api import classes from jedi.api import classes

View File

@@ -7,7 +7,7 @@ from collections import namedtuple
from jedi._compatibility import u from jedi._compatibility import u
from jedi.evaluate.helpers import evaluate_call_of_leaf from jedi.evaluate.helpers import evaluate_call_of_leaf
from jedi import parser from jedi import parser
from jedi.parser import tree from jedi.parser.python import tree
from jedi.parser import tokenize from jedi.parser import tokenize
from jedi.cache import time_cache from jedi.cache import time_cache
from jedi import common from jedi import common

View File

@@ -4,7 +4,7 @@ import keyword
from jedi._compatibility import is_py3, is_py35 from jedi._compatibility import is_py3, is_py35
from jedi import common from jedi import common
from jedi.evaluate.filters import AbstractNameDefinition from jedi.evaluate.filters import AbstractNameDefinition
from jedi.parser.tree import Leaf from jedi.parser.python.tree import Leaf
try: try:
from pydoc_data import topics as pydoc_topics from pydoc_data import topics as pydoc_topics
except ImportError: except ImportError:

View File

@@ -1,5 +1,5 @@
from jedi.api import classes from jedi.api import classes
from jedi.parser import tree from jedi.parser.python import tree
from jedi.evaluate import imports from jedi.evaluate import imports
from jedi.evaluate.filters import TreeNameDefinition from jedi.evaluate.filters import TreeNameDefinition
from jedi.evaluate.representation import ModuleContext from jedi.evaluate.representation import ModuleContext

View File

@@ -63,7 +63,7 @@ that are not used are just being ignored.
import copy import copy
import sys import sys
from jedi.parser import tree from jedi.parser.python import tree
from jedi import debug from jedi import debug
from jedi.common import unite from jedi.common import unite
from jedi.evaluate import representation as er from jedi.evaluate import representation as er

View File

@@ -2,7 +2,7 @@
Module for statical analysis. Module for statical analysis.
""" """
from jedi import debug from jedi import debug
from jedi.parser import tree from jedi.parser.python import tree
from jedi.evaluate.compiled import CompiledObject from jedi.evaluate.compiled import CompiledObject
from jedi.common import unite from jedi.common import unite

View File

@@ -10,7 +10,7 @@ from functools import partial
from jedi._compatibility import builtins as _builtins, unicode from jedi._compatibility import builtins as _builtins, unicode
from jedi import debug from jedi import debug
from jedi.cache import underscore_memoization, memoize_method from jedi.cache import underscore_memoization, memoize_method
from jedi.parser.tree import Param, Operator from jedi.parser.python.tree import Param, Operator
from jedi.evaluate.helpers import FakeName from jedi.evaluate.helpers import FakeName
from jedi.evaluate.filters import AbstractFilter, AbstractNameDefinition, \ from jedi.evaluate.filters import AbstractFilter, AbstractNameDefinition, \
ContextNameMixin ContextNameMixin

View File

@@ -10,7 +10,7 @@ import types
from jedi._compatibility import is_py3, builtins, unicode, is_py34 from jedi._compatibility import is_py3, builtins, unicode, is_py34
from jedi.parser.python import parse from jedi.parser.python import parse
from jedi.parser import tree as pt from jedi.parser.python import tree as pt
modules = {} modules = {}
@@ -113,7 +113,7 @@ def _faked(module, obj, name):
if faked_mod is None: if faked_mod is None:
return None, None return None, None
# Having the module as a `parser.tree.Module`, we need to scan # Having the module as a `parser.python.tree.Module`, we need to scan
# for methods. # for methods.
if name is None: if name is None:
if inspect.isbuiltin(obj) or inspect.isclass(obj): if inspect.isbuiltin(obj) or inspect.isclass(obj):

View File

@@ -17,7 +17,7 @@ class MixedObject(object):
""" """
A ``MixedObject`` is used in two ways: A ``MixedObject`` is used in two ways:
1. It uses the default logic of ``parser.tree`` objects, 1. It uses the default logic of ``parser.python.tree`` objects,
2. except for getattr calls. The names dicts are generated in a fashion 2. except for getattr calls. The names dicts are generated in a fashion
like ``CompiledObject``. like ``CompiledObject``.

View File

@@ -23,7 +23,7 @@ from jedi.common import unite
from jedi.evaluate import context from jedi.evaluate import context
from jedi.evaluate.cache import memoize_default from jedi.evaluate.cache import memoize_default
from jedi.parser.python import parse from jedi.parser.python import parse
from jedi.parser.tree import search_ancestor from jedi.parser.python.tree import search_ancestor
from jedi.common import indent_block from jedi.common import indent_block
from jedi.evaluate.iterable import SequenceLiteralContext, FakeSequence from jedi.evaluate.iterable import SequenceLiteralContext, FakeSequence

View File

@@ -17,7 +17,7 @@ It works as follows:
- execute these calls and check the input. This work with a ``ParamListener``. - execute these calls and check the input. This work with a ``ParamListener``.
""" """
from jedi.parser import tree from jedi.parser.python import tree
from jedi import settings from jedi import settings
from jedi import debug from jedi import debug
from jedi.evaluate.cache import memoize_default from jedi.evaluate.cache import memoize_default

View File

@@ -4,7 +4,7 @@ are needed for name resolution.
""" """
from abc import abstractmethod from abc import abstractmethod
from jedi.parser.tree import search_ancestor from jedi.parser.python.tree import search_ancestor
from jedi.evaluate import flow_analysis from jedi.evaluate import flow_analysis
from jedi.common import to_list, unite from jedi.common import to_list, unite

View File

@@ -15,7 +15,7 @@ Unfortunately every other thing is being ignored (e.g. a == '' would be easy to
check for -> a is a string). There's big potential in these checks. check for -> a is a string). There's big potential in these checks.
""" """
from jedi.parser import tree from jedi.parser.python import tree
from jedi import debug from jedi import debug
from jedi.common import unite from jedi.common import unite
from jedi import settings from jedi import settings

View File

@@ -2,7 +2,7 @@ import copy
from itertools import chain from itertools import chain
from contextlib import contextmanager from contextlib import contextmanager
from jedi.parser import tree from jedi.parser.python import tree
def deep_ast_copy(obj): def deep_ast_copy(obj):

View File

@@ -21,7 +21,7 @@ from jedi import debug
from jedi import settings from jedi import settings
from jedi.common import source_to_unicode, unite from jedi.common import source_to_unicode, unite
from jedi.parser.diff import FastParser from jedi.parser.diff import FastParser
from jedi.parser import tree from jedi.parser.python import tree
from jedi.parser.utils import save_parser, load_parser, parser_cache from jedi.parser.utils import save_parser, load_parser, parser_cache
from jedi.evaluate import sys_path from jedi.evaluate import sys_path
from jedi.evaluate import helpers from jedi.evaluate import helpers

View File

@@ -3,7 +3,7 @@ from collections import defaultdict
from jedi._compatibility import zip_longest from jedi._compatibility import zip_longest
from jedi import debug from jedi import debug
from jedi import common from jedi import common
from jedi.parser import tree from jedi.parser.python import tree
from jedi.evaluate import iterable from jedi.evaluate import iterable
from jedi.evaluate import analysis from jedi.evaluate import analysis
from jedi.evaluate import context from jedi.evaluate import context

View File

@@ -22,8 +22,8 @@ x support for type hint comments for functions, `# type: (int, str) -> int`.
import itertools import itertools
import os import os
from jedi.parser import ParserSyntaxError, tree from jedi.parser import ParserSyntaxError
from jedi.parser.python import parse from jedi.parser.python import parse, tree
from jedi.common import unite from jedi.common import unite
from jedi.evaluate.cache import memoize_default from jedi.evaluate.cache import memoize_default
from jedi.evaluate import compiled from jedi.evaluate import compiled

View File

@@ -4,7 +4,7 @@ Handles operator precedence.
import operator as op import operator as op
from jedi._compatibility import unicode from jedi._compatibility import unicode
from jedi.parser import tree from jedi.parser.python import tree
from jedi import debug from jedi import debug
from jedi.evaluate.compiled import CompiledObject, create, builtin_from_name from jedi.evaluate.compiled import CompiledObject, create, builtin_from_name
from jedi.evaluate import analysis from jedi.evaluate import analysis

View File

@@ -1,5 +1,5 @@
""" """
Like described in the :mod:`jedi.parser.tree` module, Like described in the :mod:`jedi.parser.python.tree` module,
there's a need for an ast like module to represent the states of parsed there's a need for an ast like module to represent the states of parsed
modules. modules.
@@ -42,7 +42,7 @@ import re
from itertools import chain from itertools import chain
from jedi._compatibility import use_metaclass from jedi._compatibility import use_metaclass
from jedi.parser import tree from jedi.parser.python import tree
from jedi import debug from jedi import debug
from jedi import common from jedi import common
from jedi.evaluate.cache import memoize_default, CachedMetaClass, NO_DEFAULT from jedi.evaluate.cache import memoize_default, CachedMetaClass, NO_DEFAULT

View File

@@ -4,7 +4,7 @@ import sys
from jedi.evaluate.site import addsitedir from jedi.evaluate.site import addsitedir
from jedi._compatibility import exec_function, unicode from jedi._compatibility import exec_function, unicode
from jedi.parser import tree from jedi.parser.python import tree
from jedi.parser import ParserWithRecovery from jedi.parser import ParserWithRecovery
from jedi.evaluate.cache import memoize_default from jedi.evaluate.cache import memoize_default
from jedi import debug from jedi import debug

View File

@@ -13,7 +13,7 @@ from jedi._compatibility import use_metaclass
from jedi import settings from jedi import settings
from jedi.common import splitlines from jedi.common import splitlines
from jedi.parser import ParserWithRecovery from jedi.parser import ParserWithRecovery
from jedi.parser.tree import EndMarker from jedi.parser.python.tree import EndMarker
from jedi.parser.utils import parser_cache from jedi.parser.utils import parser_cache
from jedi import debug from jedi import debug
from jedi.parser.tokenize import (generate_tokens, NEWLINE, TokenInfo, from jedi.parser.tokenize import (generate_tokens, NEWLINE, TokenInfo,

View File

@@ -1,6 +1,6 @@
import re import re
from jedi.parser import tree from jedi.parser.python import tree
from jedi.parser import tokenize from jedi.parser import tokenize
from jedi.parser.token import (DEDENT, INDENT, ENDMARKER, NEWLINE, NUMBER, from jedi.parser.token import (DEDENT, INDENT, ENDMARKER, NEWLINE, NUMBER,
STRING, tok_name) STRING, tok_name)

1631
jedi/parser/python/tree.py Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -16,7 +16,7 @@ import difflib
from jedi import common from jedi import common
from jedi.evaluate import helpers from jedi.evaluate import helpers
from jedi.parser import tree as pt from jedi.parser.python import tree as pt
class Refactoring(object): class Refactoring(object):

View File

@@ -6,7 +6,7 @@ import jedi
from jedi._compatibility import u, is_py3 from jedi._compatibility import u, is_py3
from jedi.parser import ParserWithRecovery from jedi.parser import ParserWithRecovery
from jedi.parser.python import parse, load_grammar from jedi.parser.python import parse, load_grammar
from jedi.parser import tree as pt from jedi.parser.python import tree
def test_user_statement_on_import(): def test_user_statement_on_import():
@@ -17,7 +17,7 @@ def test_user_statement_on_import():
for pos in [(2, 1), (2, 4)]: for pos in [(2, 1), (2, 4)]:
p = parse(s) p = parse(s)
stmt = p.get_statement_for_position(pos) stmt = p.get_statement_for_position(pos)
assert isinstance(stmt, pt.Import) assert isinstance(stmt, tree.Import)
assert [str(n) for n in stmt.get_defined_names()] == ['time'] assert [str(n) for n in stmt.get_defined_names()] == ['time']
@@ -41,19 +41,19 @@ class TestCallAndName():
def test_call_type(self): def test_call_type(self):
call = self.get_call('hello') call = self.get_call('hello')
assert isinstance(call, pt.Name) assert isinstance(call, tree.Name)
def test_literal_type(self): def test_literal_type(self):
literal = self.get_call('1.0') literal = self.get_call('1.0')
assert isinstance(literal, pt.Literal) assert isinstance(literal, tree.Literal)
assert type(literal.eval()) == float assert type(literal.eval()) == float
literal = self.get_call('1') literal = self.get_call('1')
assert isinstance(literal, pt.Literal) assert isinstance(literal, tree.Literal)
assert type(literal.eval()) == int assert type(literal.eval()) == int
literal = self.get_call('"hello"') literal = self.get_call('"hello"')
assert isinstance(literal, pt.Literal) assert isinstance(literal, tree.Literal)
assert literal.eval() == 'hello' assert literal.eval() == 'hello'
@@ -204,7 +204,7 @@ def test_param_splitting():
def test_unicode_string(): def test_unicode_string():
s = pt.String(None, u(''), (0, 0)) s = tree.String(None, u(''), (0, 0))
assert repr(s) # Should not raise an Error! assert repr(s) # Should not raise an Error!

View File

@@ -6,7 +6,7 @@ import pytest
from jedi._compatibility import u, unicode from jedi._compatibility import u, unicode
from jedi.parser.python import parse from jedi.parser.python import parse
from jedi.parser import tree as pt from jedi.parser.python import tree
class TestsFunctionAndLambdaParsing(object): class TestsFunctionAndLambdaParsing(object):
@@ -34,14 +34,14 @@ class TestsFunctionAndLambdaParsing(object):
@pytest.fixture() @pytest.fixture()
def expected(self, request, node): def expected(self, request, node):
return request.keywords['expected'] return request.keywords['expected']
def test_name(self, node, expected): def test_name(self, node, expected):
assert isinstance(node.name, pt.Name) assert isinstance(node.name, tree.Name)
assert unicode(node.name) == u(expected['name']) assert unicode(node.name) == u(expected['name'])
def test_params(self, node, expected): def test_params(self, node, expected):
assert isinstance(node.params, list) assert isinstance(node.params, list)
assert all(isinstance(x, pt.Param) for x in node.params) assert all(isinstance(x, tree.Param) for x in node.params)
assert [unicode(x.name) for x in node.params] == [u(x) for x in expected['params']] assert [unicode(x.name) for x in node.params] == [u(x) for x in expected['params']]
def test_is_generator(self, node, expected): def test_is_generator(self, node, expected):