From 484c24fd4e3de3c43dacaec4f709736527e449ca Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Tue, 27 Aug 2019 12:16:31 +0200 Subject: tools: python3 compat for inspector code generator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 PR-URL: https://github.com/nodejs/node/pull/29340 Reviewed-By: Christian Clauss Reviewed-By: Michaƫl Zasso Reviewed-By: Richard Lau Reviewed-By: Rich Trott --- tools/inspector_protocol/code_generator.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/inspector_protocol/code_generator.py b/tools/inspector_protocol/code_generator.py index 7b555d7478..c1f78dc749 100755 --- a/tools/inspector_protocol/code_generator.py +++ b/tools/inspector_protocol/code_generator.py @@ -41,6 +41,9 @@ def read_config(): 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 @@ class Protocol(object): 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): -- cgit v1.2.3