diff --git a/python/mujoco/codegen/generate_function_traits.py b/python/mujoco/codegen/generate_function_traits.py index a92604a1..5730d04a 100644 --- a/python/mujoco/codegen/generate_function_traits.py +++ b/python/mujoco/codegen/generate_function_traits.py @@ -14,6 +14,7 @@ # ============================================================================== """Code generator for function_traits.h.""" +import keyword from typing import Mapping, Sequence from absl import app @@ -24,6 +25,12 @@ from introspect import functions FUNCTIONS: Mapping[str, ast_nodes.FunctionDecl] = functions.FUNCTIONS +def _sanitize_keyword(s: str) -> str: + if keyword.iskeyword(s): + return s + '_' + return s + + def main(argv: Sequence[str]) -> None: if len(argv) > 1: raise app.UsageError('Too many command-line arguments.') @@ -59,7 +66,9 @@ def main(argv: Sequence[str]) -> None: else: getfunc = f'::{func.name}' - param_names = ', '.join(f'"{p.name}"' for p in parameters) + param_names = ', '.join( + f'"{_sanitize_keyword(p.name)}"' for p in parameters + ) struct_decls.append(f""" struct {func.name} {{