py3.0, py3.1 and py32 don't support unicode literals. Support those.

This commit is contained in:
Dave Halter
2014-04-22 16:00:13 +02:00
parent a49c624154
commit 4ae99256be
3 changed files with 15 additions and 3 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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