mirror of
https://chromium.googlesource.com/chromium/tools/depot_tools.git
synced 2026-01-11 10:41:31 +00:00
gclient_eval: Make compatible with Python 3.
Bug: 984182 Change-Id: I9485614658efa0ea9d50ea666210af63c3b97adc Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1716131 Reviewed-by: Andrii Shyshkalov <tandrii@chromium.org> Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
This commit is contained in:
@@ -11,18 +11,13 @@ import tokenize
|
||||
import gclient_utils
|
||||
|
||||
from third_party import schema
|
||||
from third_party import six
|
||||
|
||||
if sys.version_info.major == 2:
|
||||
if six.PY2:
|
||||
# We use cStringIO.StringIO because it is equivalent to Py3's io.StringIO.
|
||||
from cStringIO import StringIO
|
||||
else:
|
||||
from io import StringIO
|
||||
|
||||
|
||||
# TODO(crbug.com/953884): Remove this when python3 migration is done.
|
||||
try:
|
||||
basestring
|
||||
except NameError:
|
||||
# pylint: disable=redefined-builtin
|
||||
basestring = str
|
||||
|
||||
@@ -57,7 +52,7 @@ class _NodeDict(collections.MutableMapping):
|
||||
def MoveTokens(self, origin, delta):
|
||||
if self.tokens:
|
||||
new_tokens = {}
|
||||
for pos, token in self.tokens.iteritems():
|
||||
for pos, token in six.iteritems(self.tokens):
|
||||
if pos[0] >= origin:
|
||||
pos = (pos[0] + delta, pos[1])
|
||||
token = token[:2] + (pos,) + token[3:]
|
||||
@@ -245,7 +240,7 @@ def _gclient_eval(node_or_string, filename='<unknown>', vars_dict=None):
|
||||
raise KeyError(
|
||||
'%s was used as a variable, but was not declared in the vars dict '
|
||||
'(file %r, line %s)' % (
|
||||
e.message, filename, getattr(node, 'lineno', '<unknown>')))
|
||||
e.args[0], filename, getattr(node, 'lineno', '<unknown>')))
|
||||
elif isinstance(node, ast.Num):
|
||||
return node.n
|
||||
elif isinstance(node, ast.Tuple):
|
||||
@@ -514,14 +509,14 @@ def Parse(content, validate_syntax, filename, vars_override=None,
|
||||
|
||||
if 'deps_os' in result:
|
||||
deps = result.setdefault('deps', {})
|
||||
for os_name, os_deps in result['deps_os'].iteritems():
|
||||
for os_name, os_deps in six.iteritems(result['deps_os']):
|
||||
os_deps = _StandardizeDeps(os_deps, vars_dict)
|
||||
_MergeDepsOs(deps, os_deps, os_name)
|
||||
del result['deps_os']
|
||||
|
||||
if 'hooks_os' in result:
|
||||
hooks = result.setdefault('hooks', [])
|
||||
for os_name, os_hooks in result['hooks_os'].iteritems():
|
||||
for os_name, os_hooks in six.iteritems(result['hooks_os']):
|
||||
for hook in os_hooks:
|
||||
UpdateCondition(hook, 'and', 'checkout_' + os_name)
|
||||
hooks.extend(os_hooks)
|
||||
@@ -569,6 +564,9 @@ def EvaluateCondition(condition, variables, referenced_variables=None):
|
||||
# between arguments for GN to be passed verbatim, and ones to
|
||||
# be evaluated.
|
||||
return node.id
|
||||
elif not sys.version_info[:2] < (3, 4) and isinstance(
|
||||
node, ast.NameConstant): # Since Python 3.4
|
||||
return node.value
|
||||
elif isinstance(node, ast.BoolOp) and isinstance(node.op, ast.Or):
|
||||
if len(node.values) != 2:
|
||||
raise ValueError(
|
||||
|
||||
Reference in New Issue
Block a user