)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f10ae95e8b48bfb0861dd6ec01da73020af4e76d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"2daba75a_8c06d2e1","updated":"2026-02-12 15:21:03.000000000","message":"General idea lgtm. I just have two small requests","commit_id":"def7bc0475159b8b1838dc6e15577d272f3bc4e9"}],"cliff/sphinxext.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f10ae95e8b48bfb0861dd6ec01da73020af4e76d","unresolved":true,"context_lines":[{"line_number":84,"context_line":"        re.VERBOSE,"},{"line_number":85,"context_line":"    )"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    if hasattr(fmt, \"_format_actions_usage\"):"},{"line_number":88,"context_line":"        # Python \u003c\u003d 3.13"},{"line_number":89,"context_line":"        opt_usage \u003d fmt._format_actions_usage(optionals, groups)"},{"line_number":90,"context_line":"        pos_usage \u003d fmt._format_actions_usage(positionals, groups)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        opt_parts \u003d part_regexp.findall(opt_usage)"},{"line_number":93,"context_line":"        pos_parts \u003d part_regexp.findall(pos_usage)"},{"line_number":94,"context_line":"        parts \u003d opt_parts + pos_parts"},{"line_number":95,"context_line":"    else:"},{"line_number":96,"context_line":"        # Python \u003e\u003d 3.14"},{"line_number":97,"context_line":"        usage \u003d parser.format_usage().strip()"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if usage.lower().startswith(\"usage:\"):"},{"line_number":100,"context_line":"            usage \u003d usage.split(\":\", 1)[1].strip()"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        if usage.startswith(parser.prog):"},{"line_number":103,"context_line":"            usage \u003d usage[len(parser.prog):].lstrip()"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        parts \u003d part_regexp.findall(usage)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    if len(\u0027 \u0027.join([parser.prog] + parts)) \u003c 72:"},{"line_number":108,"context_line":"        return [\u0027 \u0027.join([parser.prog] + parts)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3291b738_3bfa30a9","line":105,"range":{"start_line":87,"start_character":1,"end_line":105,"end_character":42},"updated":"2026-02-12 15:21:03.000000000","message":"nit: Could you invert this so that the \"modern\" path (which will only grow in use over time) comes first? Also, perhaps we can rely on `sys.version_info` instead of the `hasattr` check?","commit_id":"def7bc0475159b8b1838dc6e15577d272f3bc4e9"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"ebb7400f6b4ab708f17d93c9d6b208c3f34028d7","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        re.VERBOSE,"},{"line_number":85,"context_line":"    )"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    if hasattr(fmt, \"_format_actions_usage\"):"},{"line_number":88,"context_line":"        # Python \u003c\u003d 3.13"},{"line_number":89,"context_line":"        opt_usage \u003d fmt._format_actions_usage(optionals, groups)"},{"line_number":90,"context_line":"        pos_usage \u003d fmt._format_actions_usage(positionals, groups)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        opt_parts \u003d part_regexp.findall(opt_usage)"},{"line_number":93,"context_line":"        pos_parts \u003d part_regexp.findall(pos_usage)"},{"line_number":94,"context_line":"        parts \u003d opt_parts + pos_parts"},{"line_number":95,"context_line":"    else:"},{"line_number":96,"context_line":"        # Python \u003e\u003d 3.14"},{"line_number":97,"context_line":"        usage \u003d parser.format_usage().strip()"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        if usage.lower().startswith(\"usage:\"):"},{"line_number":100,"context_line":"            usage \u003d usage.split(\":\", 1)[1].strip()"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        if usage.startswith(parser.prog):"},{"line_number":103,"context_line":"            usage \u003d usage[len(parser.prog):].lstrip()"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        parts \u003d part_regexp.findall(usage)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    if len(\u0027 \u0027.join([parser.prog] + parts)) \u003c 72:"},{"line_number":108,"context_line":"        return [\u0027 \u0027.join([parser.prog] + parts)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"f653d5ff_541cfae1","line":105,"range":{"start_line":87,"start_character":1,"end_line":105,"end_character":42},"in_reply_to":"3291b738_3bfa30a9","updated":"2026-02-14 14:31:21.000000000","message":"Done","commit_id":"def7bc0475159b8b1838dc6e15577d272f3bc4e9"}]}
