Skip to content

Commit

Permalink
tools: python3 compat for inspector code generator
Browse files Browse the repository at this point in the history
The code generator takes a dict and turns it into a namedtuple. The dict
contains the key "async", which is a keyword in python 3, and rejected
by the namedtuple constructor. Rename it to "_async" to avoid the clash.

Fixes: #29326
  • Loading branch information
bnoordhuis authored and sam-github committed Sep 5, 2019
1 parent cac9cea commit ac43504
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion tools/inspector_protocol/code_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ def json_object_hook(object_dict):
items = [(k, os.path.join(output_base, v) if k == "path" else v) for (k, v) in object_dict.items()]
items = [(k, os.path.join(output_base, v) if k == "output" else v) for (k, v) in items]
keys, values = list(zip(*items))
# 'async' is a python 3 keyword. Don't use namedtuple(rename=True)
# because that only renames it in python 3 but not python 2.
keys = tuple('_async' if k == 'async' else k for k in keys)
return collections.namedtuple('X', keys)(*values)
return json.loads(data, object_hook=json_object_hook)

Expand Down Expand Up @@ -521,7 +524,7 @@ def generate_type(self, domain, typename):
def is_async_command(self, domain, command):
if not self.config.protocol.options:
return False
return self.check_options(self.config.protocol.options, domain, command, "async", None, False)
return self.check_options(self.config.protocol.options, domain, command, "_async", None, False)


def is_exported(self, domain, name):
Expand Down

0 comments on commit ac43504

Please sign in to comment.