20241105
20241105
今作っているパーサープログラムには、parse_v1とparse_v2のパーサーがあります。parse_v1はデフォルトで利用されます。parse_v2は試験的な位置付けを持っていて、parser_v1に依存した機能(たとえば、サブコマンド sort, unique)は全く利用できません。
そこで、argparseで、parse_v2を利用するオプション'-2'が指定された際、parser_v2に紐づいている機能を使えなくしたいです。どのようにすればよいでしょうか? code:py
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--verbose", action="store_true",)
parser.add_argument("-2", "--use-parser-v2", action="store_true",)
# '-2'が指定された際、sort, uniqueなど、一連のコマンドの使用を禁止したいです。
subparsers = parser.add_subparsers()
parser_sort = subparsers.add_parser("sort")
parser_sort.add_argument(
"sort",
action="store_true",
help="reorder duplicate tokens with their strength to make them consecutive",
)
parser_unique = subparsers.add_parser("unique")
parser_unique.add_argument(
"unique",
action="store_true",
help="reorder duplicate tokens with their strength to make them unique",
)
そういう機能はargparseにはないから自分で実装してねということだった(こんな感じ)
code:py
if args.use_parser_v2 and args.subcommand in {"sort", "unique"}:
raise Exception(f"Error: The '{args.subcommand}' command is not available when using parse_v2.")