)]}'
{
  "commit": "8f62f9b87aacb787e505308f373a8fa444e6fe8a",
  "tree": "00841c5d0106c9a17d71021096b99c88ca446882",
  "parents": [
    "308637a1b8b48c9004787828a7776f6ad5c62587"
  ],
  "author": {
    "name": "Scott Todd",
    "email": "scotttodd@google.com",
    "time": "Thu Aug 24 13:31:53 2023 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Aug 24 20:31:53 2023 +0000"
  },
  "message": "Fix ir_tool argparse subcommand usage. (#14804)\n\nThe \"cp\" alias for \"copy\" was not working, instead producing an error:\r\n`error: Unrecognized sub-command {args.sub_command}\"`.\r\n\r\nThe docs (https://docs.python.org/3/library/argparse.html#sub-commands)\r\nrecommend using\r\n\r\n```python\r\nparser \u003d argparse.ArgumentParser()\r\nsubparsers \u003d parser.add_subparsers(required\u003dTrue)\r\n\r\nparser_foo \u003d subparsers.add_parser(\u0027foo\u0027)\r\nparser_foo.set_defaults(func\u003dfoo)\r\n\r\n# parse the args and call whatever function was selected\r\nargs \u003d parser.parse_args(...)\r\nargs.func(args)\r\n```\r\n\r\nAfter switching to that style, \"cp\" and \"copy\" both work.\r\n\r\nIf an unknown subcommand is used, argparse has its own error message:\r\n```bash\r\n$ python -m iree.compiler.tools.ir_tool foo\r\nusage: __main__.py [-h] {copy,cp,strip-data} ...\r\n__main__.py: error: argument sub_command: invalid choice: \u0027foo\u0027 (choose from \u0027copy\u0027, \u0027cp\u0027, \u0027strip-data\u0027)\r\n```\r\n(and the program returns exit code `2`, not `0`)",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6d522135f4fb6ac1b9f944a02decc9be4ac71a0b",
      "old_mode": 33188,
      "old_path": "compiler/bindings/python/iree/compiler/tools/ir_tool/__main__.py",
      "new_id": "589b710696df4ed2542f69ab818fa2241846a196",
      "new_mode": 33188,
      "new_path": "compiler/bindings/python/iree/compiler/tools/ir_tool/__main__.py"
    }
  ]
}
