diff --git a/jedi/_compatibility.py b/jedi/_compatibility.py index 85b74133..78abf874 100644 --- a/jedi/_compatibility.py +++ b/jedi/_compatibility.py @@ -182,3 +182,8 @@ try: except ImportError: # python 2.5 import simplejson as json + +try: + encoding = sys.stdout.encoding +except AttributeError: + encoding = 'ascii' diff --git a/jedi/evaluate.py b/jedi/evaluate.py index 3c8cb69a..84173c6c 100644 --- a/jedi/evaluate.py +++ b/jedi/evaluate.py @@ -68,7 +68,7 @@ backtracking algorithm. .. todo:: nonlocal statement, needed or can be ignored? (py3k) """ -from _compatibility import next, hasattr, is_py3k, unicode +from _compatibility import next, hasattr, is_py3k, unicode, utf8 import sys import itertools diff --git a/jedi/parsing_representation.py b/jedi/parsing_representation.py index b6a4646a..fd8ee013 100644 --- a/jedi/parsing_representation.py +++ b/jedi/parsing_representation.py @@ -25,7 +25,7 @@ import re import tokenize from _compatibility import next, literal_eval, cleandoc, Python3Method, \ - property + property, encoding import common import debug @@ -92,9 +92,8 @@ class Simple(Base): self._end_pos = value def __repr__(self): - code = self.get_code().replace('\n', ' ') - return "<%s: %s@%s>" % \ - (type(self).__name__, code, self.start_pos[0]) + code = self.get_code().replace('\n', ' ').encode(encoding, 'replace') + return '<%s: %s@%s>' % (type(self).__name__, code, self.start_pos[0]) class Scope(Simple): diff --git a/test/regression.py b/test/regression.py index 30916979..c115d0f6 100755 --- a/test/regression.py +++ b/test/regression.py @@ -265,7 +265,7 @@ class TestRegression(TestBase): completions1 = self.complete(s1) assert 'strip' in [c.word for c in completions1] s2 = utf8('#-*- coding: utf-8 -*-\nclass Person():\n name = "é"\n\nPerson().name.') - completions = self.complete(s2) + completions2 = self.complete(s2) assert 'strip' in [c.word for c in completions2] def test_os_nowait(self):