From 4ae99256bedc7905c1f1a8bd542931b6f6dbc378 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Tue, 22 Apr 2014 16:00:13 +0200 Subject: [PATCH] py3.0, py3.1 and py32 don't support unicode literals. Support those. --- jedi/_compatibility.py | 13 +++++++++++++ jedi/evaluate/precedence.py | 1 - jedi/parser/representation.py | 4 ++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/jedi/_compatibility.py b/jedi/_compatibility.py index fdc11b6d..a704a700 100644 --- a/jedi/_compatibility.py +++ b/jedi/_compatibility.py @@ -5,6 +5,7 @@ created. Clearly there is huge need to use conforming syntax. import sys import imp import os +import re try: import importlib except ImportError: @@ -180,3 +181,15 @@ try: import builtins # module name in python 3 except ImportError: import __builtin__ as builtins + + +import ast + + +def literal_eval(string): + # py3.0, py3.1 and py32 don't support unicode literals. Support those, I + # don't want to write two versions of the tokenizer. + if is_py3 and sys.version_info.minor < 3: + if re.match('[uU][\'"]', string): + string = string[1:] + return ast.literal_eval(string) diff --git a/jedi/evaluate/precedence.py b/jedi/evaluate/precedence.py index 90ac8b7d..5b12d992 100644 --- a/jedi/evaluate/precedence.py +++ b/jedi/evaluate/precedence.py @@ -187,7 +187,6 @@ def calculate(evaluator, left_result, operator, right_result): result = (left_result or []) + (right_result or []) for i, r in enumerate(result): if _is_number(r) or _is_string(r): - print r, left_result, right_result # Literals are only valid as long as the operations are # correct. Otherwise add a value-free instance. cls = CompiledObject(type(r.obj), builtin) diff --git a/jedi/parser/representation.py b/jedi/parser/representation.py index 1ff32867..fc812288 100644 --- a/jedi/parser/representation.py +++ b/jedi/parser/representation.py @@ -37,9 +37,9 @@ See also :attr:`Scope.subscopes` and :attr:`Scope.statements`. import os import re from inspect import cleandoc -from ast import literal_eval -from jedi._compatibility import next, Python3Method, encoding, unicode, is_py3, u +from jedi._compatibility import (next, Python3Method, encoding, unicode, + is_py3, u, literal_eval) from jedi import common from jedi import debug from jedi import cache