From b2d25cedeecbc13ae8997d778271ce91ebb184bf Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Tue, 27 Aug 2019 12:16:31 +0200 Subject: [PATCH] tools: python3 compat for inspector code generator 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.7, and rejected by the namedtuple constructor. Rename it to "async_" to avoid the clash. Fixes: https://github.com/nodejs/node/issues/29326 --- tools/inspector_protocol/code_generator.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/inspector_protocol/code_generator.py b/tools/inspector_protocol/code_generator.py index 7b555d7478a0c7..c1f78dc7492d78 100755 --- a/tools/inspector_protocol/code_generator.py +++ b/tools/inspector_protocol/code_generator.py @@ -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.7 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) @@ -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):