diff --git a/jedi/api.py b/jedi/api.py index 1cb82c2b..f1e60c43 100644 --- a/jedi/api.py +++ b/jedi/api.py @@ -529,8 +529,7 @@ class Script(object): if call is None: user_stmt = self._user_stmt() if user_stmt is not None and isinstance(user_stmt, pr.Statement): - call, index, _ = helpers.search_call_signatures( - user_stmt, self._pos) + call, index, _ = helpers.search_call_signatures(user_stmt, self._pos) debug.speed('func_call parsed') return call, index diff --git a/jedi/evaluate.py b/jedi/evaluate.py index a58146b5..e6da339e 100644 --- a/jedi/evaluate.py +++ b/jedi/evaluate.py @@ -477,7 +477,7 @@ def check_getattr(inst, name_str): result = [] # str is important to lose the NamePart! module = builtin.Builtin.scope - name = pr.String(module, str(name_str), (0, 0), (0, 0), inst) + name = pr.String(module, "'%s'" % name_str, (0, 0), (0, 0), inst) with common.ignored(KeyError): result = inst.execute_subscope_by_name('__getattr__', [name]) if not result: diff --git a/jedi/evaluate_representation.py b/jedi/evaluate_representation.py index 485acedc..9fd5d0bf 100644 --- a/jedi/evaluate_representation.py +++ b/jedi/evaluate_representation.py @@ -861,7 +861,7 @@ class Array(use_metaclass(cache.CachedMetaClass, pr.Base)): continue key = key_commands[0] if isinstance(key, pr.String): - str_key = key.name + str_key = key.value elif isinstance(key, pr.Name): str_key = str(key) diff --git a/jedi/helpers.py b/jedi/helpers.py index 532c3d8a..d91076fd 100644 --- a/jedi/helpers.py +++ b/jedi/helpers.py @@ -123,12 +123,12 @@ def search_call_signatures(stmt, pos): # some parts will of the statement will be removed stmt = fast_parent_copy(stmt) arr, index = array_for_pos(stmt, pos, [pr.Array.TUPLE, pr.Array.NOARRAY]) - if arr is not None and isinstance(arr.parent, pr.Call): + if arr is not None and isinstance(arr.parent, pr.StatementElement): call = arr.parent - while isinstance(call.parent, pr.Call): + while isinstance(call.parent, pr.StatementElement): call = call.parent arr.parent.execution = None - return call if isinstance(call, pr.Name) else None, index, False + return call if isinstance(call, pr.Call) else None, index, False return None, 0, False diff --git a/jedi/parsing_representation.py b/jedi/parsing_representation.py index 00cac798..9edeb62c 100644 --- a/jedi/parsing_representation.py +++ b/jedi/parsing_representation.py @@ -1214,7 +1214,11 @@ class Literal(StatementElement): return type(self.value).__name__ def __repr__(self): - return "<%s: %s>" % (type(self).__name__, self.literal) + if is_py3k: + s = self.literal + else: + s = self.literal.encode('ascii', 'replace') + return "<%s: %s>" % (type(self).__name__, s) class String(Literal): diff --git a/test/completion/import_tree/__init__.py b/test/completion/import_tree/__init__.py index 717a6745..8153c451 100644 --- a/test/completion/import_tree/__init__.py +++ b/test/completion/import_tree/__init__.py @@ -1 +1 @@ -a = "" +a = ''