From 1dec7189eda7d745fffdf6d66bc557b71ba5e181 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 13 Jul 2023 09:54:02 +1000 Subject: [PATCH] Fix '--help' message error in code_clean when '%' characters were used --- tools/utils_maintenance/code_clean.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/utils_maintenance/code_clean.py b/tools/utils_maintenance/code_clean.py index c744f35f47b..bb803bcec1e 100755 --- a/tools/utils_maintenance/code_clean.py +++ b/tools/utils_maintenance/code_clean.py @@ -1333,6 +1333,12 @@ def edit_class_from_id(name: str) -> Type[EditGenerator]: return result # type: ignore +def edit_docstring_from_id(name: str) -> str: + from textwrap import dedent + result = getattr(edit_generators, name).__doc__ + return dedent(result or '').strip('\n') + '\n' + + # ----------------------------------------------------------------------------- # Accept / Reject Edits @@ -1602,10 +1608,11 @@ def create_parser(edits_all: Sequence[str]) -> argparse.ArgumentParser: # Create docstring for edits. edits_all_docs = [] for edit in edits_all: + # `%` -> `%%` is needed for `--help` not to interpret these as formatting arguments. edits_all_docs.append( " %s\n%s" % ( edit, - indent(dedent(getattr(edit_generators, edit).__doc__ or '').strip('\n') + '\n', ' '), + indent(edit_docstring_from_id(edit).replace("%", "%%"), ' '), ) )