)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"368d7e93ddd9ef151911acdf9a7785b7a1d85b44","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e0f630a8_91e09be2","updated":"2026-04-06 11:07:39.000000000","message":"This change could maybe wait as it should not be necessary very shortly?","commit_id":"0e3d9feccf50d120bc82561e260f43c352d376dc"}],"ironicclient/osc/command.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"368d7e93ddd9ef151911acdf9a7785b7a1d85b44","unresolved":true,"context_lines":[{"line_number":35,"context_line":"# Return type of cliff/osc-lib Command.get_parser (extends stdlib"},{"line_number":36,"context_line":"# ArgumentParser). Exposed for annotations so get_parser overrides satisfy"},{"line_number":37,"context_line":"# mypy without ignore[override]. cliff._argparse is private; import only here."},{"line_number":38,"context_line":"CliffArgumentParser \u003d _cliff_argparse.ArgumentParser"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class _ClientManager(clientmanager.ClientManager):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5d83ad72_5df94146","line":38,"updated":"2026-04-06 11:07:39.000000000","message":"FYI, I am in the process of fixing this so this will not be necessary very shortly\n\n* https://review.opendev.org/c/openstack/cliff/+/982446 (merged)\n* https://review.opendev.org/c/openstack/cliff/+/982553 (merged)\n* https://review.opendev.org/c/openstack/osc-lib/+/983356 (waiting on cliff release with above changes)","commit_id":"0e3d9feccf50d120bc82561e260f43c352d376dc"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"57de7a6f3c282a34158af9f91f298acf4824dea6","unresolved":true,"context_lines":[{"line_number":35,"context_line":"# Return type of cliff/osc-lib Command.get_parser (extends stdlib"},{"line_number":36,"context_line":"# ArgumentParser). Exposed for annotations so get_parser overrides satisfy"},{"line_number":37,"context_line":"# mypy without ignore[override]. cliff._argparse is private; import only here."},{"line_number":38,"context_line":"CliffArgumentParser \u003d _cliff_argparse.ArgumentParser"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class _ClientManager(clientmanager.ClientManager):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3d56f10b_f482e5c1","line":38,"in_reply_to":"347841ab_85802661","updated":"2026-04-08 16:32:30.000000000","message":"As an additional note, as we tested during our sync group review, you can reference argparse.ArgumentParser directly from the classes implementing get_parser() as the return type, and remove this indirection entirely. Then we can later clean these up if still needed.","commit_id":"0e3d9feccf50d120bc82561e260f43c352d376dc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"028848c36b5aa80e081ce0bce166c254ae11ccc3","unresolved":true,"context_lines":[{"line_number":35,"context_line":"# Return type of cliff/osc-lib Command.get_parser (extends stdlib"},{"line_number":36,"context_line":"# ArgumentParser). Exposed for annotations so get_parser overrides satisfy"},{"line_number":37,"context_line":"# mypy without ignore[override]. cliff._argparse is private; import only here."},{"line_number":38,"context_line":"CliffArgumentParser \u003d _cliff_argparse.ArgumentParser"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class _ClientManager(clientmanager.ClientManager):"}],"source_content_type":"text/x-python","patch_set":1,"id":"d9398c25_0d705bc1","line":38,"in_reply_to":"3d56f10b_f482e5c1","updated":"2026-04-08 16:39:34.000000000","message":"Oh, great. This is now happening because https://review.opendev.org/c/openstack/requirements/+/983697 merged earlier today.","commit_id":"0e3d9feccf50d120bc82561e260f43c352d376dc"},{"author":{"_account_id":38828,"name":"Karan Anand","display_name":"Karan","email":"anandkarancompsci@gmail.com","username":"anandkaranubc"},"change_message_id":"0ff94e76f1f8ef4039128b1d2b19afcd86eec858","unresolved":true,"context_lines":[{"line_number":35,"context_line":"# Return type of cliff/osc-lib Command.get_parser (extends stdlib"},{"line_number":36,"context_line":"# ArgumentParser). Exposed for annotations so get_parser overrides satisfy"},{"line_number":37,"context_line":"# mypy without ignore[override]. cliff._argparse is private; import only here."},{"line_number":38,"context_line":"CliffArgumentParser \u003d _cliff_argparse.ArgumentParser"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class _ClientManager(clientmanager.ClientManager):"}],"source_content_type":"text/x-python","patch_set":1,"id":"dc1961fb_2e3d46e4","line":38,"in_reply_to":"58718052_7df7b6b9","updated":"2026-04-08 15:52:55.000000000","message":"I can add a comment like this in the last patch in the series if that looks good?\n\n```suggestion\n# TODO(anandkaranubc): Remove this alias once osc-lib publicly exports the\n# parser type\nCliffArgumentParser \u003d _cliff_argparse.ArgumentParser\n```\n\ncc: @jay@jvf.cc @stephenfin@redhat.com","commit_id":"0e3d9feccf50d120bc82561e260f43c352d376dc"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"93b45009cca4543fecd0844999e226b46a2321a5","unresolved":true,"context_lines":[{"line_number":35,"context_line":"# Return type of cliff/osc-lib Command.get_parser (extends stdlib"},{"line_number":36,"context_line":"# ArgumentParser). Exposed for annotations so get_parser overrides satisfy"},{"line_number":37,"context_line":"# mypy without ignore[override]. cliff._argparse is private; import only here."},{"line_number":38,"context_line":"CliffArgumentParser \u003d _cliff_argparse.ArgumentParser"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class _ClientManager(clientmanager.ClientManager):"}],"source_content_type":"text/x-python","patch_set":1,"id":"8b97f469_bdb0e3f0","line":38,"in_reply_to":"5d83ad72_5df94146","updated":"2026-04-08 15:42:44.000000000","message":"We\u0027d still need it in global-requirements.txt as well. Generally I\u0027d apply patience, but Karan\u0027s MLH fellowship is over very soon and I\u0027d like him to get this completed. Are you OK if we merged this and back it out later if needed?","commit_id":"0e3d9feccf50d120bc82561e260f43c352d376dc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5075e2c6965a391ca3289428324583602207e5bc","unresolved":true,"context_lines":[{"line_number":35,"context_line":"# Return type of cliff/osc-lib Command.get_parser (extends stdlib"},{"line_number":36,"context_line":"# ArgumentParser). Exposed for annotations so get_parser overrides satisfy"},{"line_number":37,"context_line":"# mypy without ignore[override]. cliff._argparse is private; import only here."},{"line_number":38,"context_line":"CliffArgumentParser \u003d _cliff_argparse.ArgumentParser"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class _ClientManager(clientmanager.ClientManager):"}],"source_content_type":"text/x-python","patch_set":1,"id":"58718052_7df7b6b9","line":38,"in_reply_to":"8b97f469_bdb0e3f0","updated":"2026-04-08 15:45:26.000000000","message":"Yes, I\u0027m happy to merge this as-is (hence no -1). I should have been more explicit that this was a comment rather than an ask, sorry.\n\n\nWith that said, it might be worth adding a TODO here, either in this change or (easier?) a follow-up tacked on at the end.","commit_id":"0e3d9feccf50d120bc82561e260f43c352d376dc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"efa260789c6786d00865464e0e2cfe079467fe94","unresolved":true,"context_lines":[{"line_number":35,"context_line":"# Return type of cliff/osc-lib Command.get_parser (extends stdlib"},{"line_number":36,"context_line":"# ArgumentParser). Exposed for annotations so get_parser overrides satisfy"},{"line_number":37,"context_line":"# mypy without ignore[override]. cliff._argparse is private; import only here."},{"line_number":38,"context_line":"CliffArgumentParser \u003d _cliff_argparse.ArgumentParser"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class _ClientManager(clientmanager.ClientManager):"}],"source_content_type":"text/x-python","patch_set":1,"id":"347841ab_85802661","line":38,"in_reply_to":"dc1961fb_2e3d46e4","updated":"2026-04-08 16:05:09.000000000","message":"This would be more accurate.\n\n```suggestion\n# TODO(anandkaranubc): Remove this once [1] is merged and released\n# [1] https://review.opendev.org/c/openstack/osc-lib/+/983356\nCliffArgumentParser \u003d _cliff_argparse.ArgumentParser\n```\n\nWe\u0027re not planning to publicly export that symbol. Rather, we\u0027re broadening our types to indicate that we return a standard `argparse.ArgumentParser` since, from an API perspective, there is no difference.","commit_id":"0e3d9feccf50d120bc82561e260f43c352d376dc"}]}
