)]}'
{"doc/source/conf.py":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1e297185c160842b6b8fabf7e19d93c98831cd4a","unresolved":true,"context_lines":[{"line_number":54,"context_line":"        \u0027API Working Group\u0027,"},{"line_number":55,"context_line":"        \u0027OpenStack API Working Group Team\u0027,"},{"line_number":56,"context_line":"        \u0027manual\u0027,"},{"line_number":57,"context_line":"    )"},{"line_number":58,"context_line":"]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"# -- Options for openstackdocsthem ---------------------------------------------"}],"source_content_type":"text/x-python","patch_set":1,"id":"a77190c8_444330c2","line":57,"updated":"2025-07-15 18:08:16.000000000","message":"I am a bit confused about this. As seemingly, this supposed to be a list of sets?\n\nAnd in other places we leave comma after last element of list, to allow next person to painlessly extend the list.\n\nWhile I understand we are not gonna have another list element here, I\u0027m not sure I totally get it from formatting convention prespective.","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"83a15cfc556e44704ca2ccee514fbd72288bdbf6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        \u0027API Working Group\u0027,"},{"line_number":55,"context_line":"        \u0027OpenStack API Working Group Team\u0027,"},{"line_number":56,"context_line":"        \u0027manual\u0027,"},{"line_number":57,"context_line":"    )"},{"line_number":58,"context_line":"]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"# -- Options for openstackdocsthem ---------------------------------------------"}],"source_content_type":"text/x-python","patch_set":1,"id":"aeaf121d_6cfff1bb","line":57,"in_reply_to":"2dc31c96_422456c1","updated":"2025-07-16 12:49:17.000000000","message":"yeah, ok, sure, but anyway I\u0027d expect then that last element of tuple should not be having comma for the last element either?","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e8fdaca94bcd3219f68e95aae5f5410a1c647e41","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        \u0027API Working Group\u0027,"},{"line_number":55,"context_line":"        \u0027OpenStack API Working Group Team\u0027,"},{"line_number":56,"context_line":"        \u0027manual\u0027,"},{"line_number":57,"context_line":"    )"},{"line_number":58,"context_line":"]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"# -- Options for openstackdocsthem ---------------------------------------------"}],"source_content_type":"text/x-python","patch_set":1,"id":"6662602b_3dbcdf89","line":57,"in_reply_to":"800f111f_d6c56e10","updated":"2025-07-21 16:59:44.000000000","message":"It\u0027s not that I\u0027m asking you to fix it, but more to confirm if I\u0027m wrong or not in my thinking and to question if it\u0027s considered as \"production ready\" so to say.","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2f1d26196844a1901302e27c5c99a1a389138d37","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        \u0027API Working Group\u0027,"},{"line_number":55,"context_line":"        \u0027OpenStack API Working Group Team\u0027,"},{"line_number":56,"context_line":"        \u0027manual\u0027,"},{"line_number":57,"context_line":"    )"},{"line_number":58,"context_line":"]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"# -- Options for openstackdocsthem ---------------------------------------------"}],"source_content_type":"text/x-python","patch_set":1,"id":"2dc31c96_422456c1","line":57,"in_reply_to":"a77190c8_444330c2","updated":"2025-07-16 09:51:31.000000000","message":"This is happening because of `skip_magic_trailing_comma \u003d true` https://review.opendev.org/c/openstack/service-types-authority/+/953562/1/ruff.toml#9\n\nIf we don\u0027t have that set, ruff (and black) are inclined to split things like function parameters across multiple lines when they could fit on one.\n\nAlso, it\u0027s a list of tuples: sets use curly braces (`{}`).","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f346da1bde096f5516276f3fbdf4ad5a3fb77378","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        \u0027API Working Group\u0027,"},{"line_number":55,"context_line":"        \u0027OpenStack API Working Group Team\u0027,"},{"line_number":56,"context_line":"        \u0027manual\u0027,"},{"line_number":57,"context_line":"    )"},{"line_number":58,"context_line":"]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"# -- Options for openstackdocsthem ---------------------------------------------"}],"source_content_type":"text/x-python","patch_set":1,"id":"c1119d34_c6889c60","line":57,"in_reply_to":"aeaf121d_6cfff1bb","updated":"2025-07-17 15:14:35.000000000","message":"Honestly, you\u0027re directing this at the wrong person. Take it up with the ruff maintainers. This is more than good enough, IMO.","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"671831699962d6e2e891c64a6015c1ddff50f96a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        \u0027API Working Group\u0027,"},{"line_number":55,"context_line":"        \u0027OpenStack API Working Group Team\u0027,"},{"line_number":56,"context_line":"        \u0027manual\u0027,"},{"line_number":57,"context_line":"    )"},{"line_number":58,"context_line":"]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"# -- Options for openstackdocsthem ---------------------------------------------"}],"source_content_type":"text/x-python","patch_set":1,"id":"800f111f_d6c56e10","line":57,"in_reply_to":"c1119d34_c6889c60","updated":"2025-07-17 15:18:53.000000000","message":"I just dropped `skip_magic_trailing_comma \u003d true`","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"}],"tox.ini":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"88d970620c1cdd8b90fe68cc9367057d5e2d03ee","unresolved":true,"context_lines":[{"line_number":23,"context_line":"  ruff"},{"line_number":24,"context_line":"  hacking"},{"line_number":25,"context_line":"commands \u003d"},{"line_number":26,"context_line":"  ruff check"},{"line_number":27,"context_line":"  flake8"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"[testenv:docs]"}],"source_content_type":"text/x-properties","patch_set":1,"id":"03cc2532_66195443","line":26,"range":{"start_line":26,"start_character":2,"end_line":26,"end_character":12},"updated":"2025-06-29 19:12:21.000000000","message":"++ other option to have separate env for this but combining in pep8 is close too.","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"12feb75f719e66c1b671bbab77fe7e3e55d3be70","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  ruff"},{"line_number":24,"context_line":"  hacking"},{"line_number":25,"context_line":"commands \u003d"},{"line_number":26,"context_line":"  ruff check"},{"line_number":27,"context_line":"  flake8"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"[testenv:docs]"}],"source_content_type":"text/x-properties","patch_set":1,"id":"eb7f39db_b8a33a31","line":26,"range":{"start_line":26,"start_character":2,"end_line":26,"end_character":12},"in_reply_to":"03cc2532_66195443","updated":"2025-07-16 10:02:19.000000000","message":"Acknowledged","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"}],"transform.py":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1e297185c160842b6b8fabf7e19d93c98831cd4a","unresolved":true,"context_lines":[{"line_number":136,"context_line":"        output \u003d json.dumps(mapping, indent\u003d2, sort_keys\u003dTrue)"},{"line_number":137,"context_line":"        output.replace(\u0027 \\n\u0027, \u0027\\n\u0027)"},{"line_number":138,"context_line":"        unversioned_filename \u003d \u0027service-types.json\u0027"},{"line_number":139,"context_line":"        versioned_filename \u003d \u0027service-types.json.{version}\u0027.format("},{"line_number":140,"context_line":"            version\u003dmapping[\u0027version\u0027]"},{"line_number":141,"context_line":"        )"},{"line_number":142,"context_line":"        for filename in (unversioned_filename, versioned_filename):"}],"source_content_type":"text/x-python","patch_set":1,"id":"58aba144_2d06ff25","line":139,"updated":"2025-07-15 18:08:16.000000000","message":"any reason not to use f-string here comparing to previous cases?","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f346da1bde096f5516276f3fbdf4ad5a3fb77378","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        output \u003d json.dumps(mapping, indent\u003d2, sort_keys\u003dTrue)"},{"line_number":137,"context_line":"        output.replace(\u0027 \\n\u0027, \u0027\\n\u0027)"},{"line_number":138,"context_line":"        unversioned_filename \u003d \u0027service-types.json\u0027"},{"line_number":139,"context_line":"        versioned_filename \u003d \u0027service-types.json.{version}\u0027.format("},{"line_number":140,"context_line":"            version\u003dmapping[\u0027version\u0027]"},{"line_number":141,"context_line":"        )"},{"line_number":142,"context_line":"        for filename in (unversioned_filename, versioned_filename):"}],"source_content_type":"text/x-python","patch_set":1,"id":"a568b00c_61731ecb","line":139,"in_reply_to":"46a94ca8_591c9b47","updated":"2025-07-17 15:14:35.000000000","message":"I\u0027ve fixed this in the follow-up. Please look there.","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2f1d26196844a1901302e27c5c99a1a389138d37","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        output \u003d json.dumps(mapping, indent\u003d2, sort_keys\u003dTrue)"},{"line_number":137,"context_line":"        output.replace(\u0027 \\n\u0027, \u0027\\n\u0027)"},{"line_number":138,"context_line":"        unversioned_filename \u003d \u0027service-types.json\u0027"},{"line_number":139,"context_line":"        versioned_filename \u003d \u0027service-types.json.{version}\u0027.format("},{"line_number":140,"context_line":"            version\u003dmapping[\u0027version\u0027]"},{"line_number":141,"context_line":"        )"},{"line_number":142,"context_line":"        for filename in (unversioned_filename, versioned_filename):"}],"source_content_type":"text/x-python","patch_set":1,"id":"6ba311ad_8a91bdd3","line":139,"in_reply_to":"58aba144_2d06ff25","updated":"2025-07-16 09:51:31.000000000","message":"I think ruff won\u0027t use f-strings where the value if more complicated that a single value. e.g. it will auto-fix\n\n```\n\u0027service-types.json.{version}\u0027.format(version\u003dversion)\n```\n\nbut not\n\n```\n\u0027service-types.json.{version}\u0027.format(version\u003dmapping[\u0027version\u0027])\n```","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"83a15cfc556e44704ca2ccee514fbd72288bdbf6","unresolved":true,"context_lines":[{"line_number":136,"context_line":"        output \u003d json.dumps(mapping, indent\u003d2, sort_keys\u003dTrue)"},{"line_number":137,"context_line":"        output.replace(\u0027 \\n\u0027, \u0027\\n\u0027)"},{"line_number":138,"context_line":"        unversioned_filename \u003d \u0027service-types.json\u0027"},{"line_number":139,"context_line":"        versioned_filename \u003d \u0027service-types.json.{version}\u0027.format("},{"line_number":140,"context_line":"            version\u003dmapping[\u0027version\u0027]"},{"line_number":141,"context_line":"        )"},{"line_number":142,"context_line":"        for filename in (unversioned_filename, versioned_filename):"}],"source_content_type":"text/x-python","patch_set":1,"id":"46a94ca8_591c9b47","line":139,"in_reply_to":"6ba311ad_8a91bdd3","updated":"2025-07-16 12:49:17.000000000","message":"but um. so we prefer non-uniformal approach to f-strings just to satisfy the tool, rather then do it the same way everywhere?","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"}],"validate.py":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1e297185c160842b6b8fabf7e19d93c98831cd4a","unresolved":true,"context_lines":[{"line_number":46,"context_line":"        if service.get(\u0027secondary\u0027, False):"},{"line_number":47,"context_line":"            continue"},{"line_number":48,"context_line":"        if service[\u0027project\u0027] in projects:"},{"line_number":49,"context_line":"            yield \"\u0027{service}\u0027 is duplicate service from \u0027{project}\u0027\".format("},{"line_number":50,"context_line":"                service\u003dservice[\u0027service_type\u0027], project\u003dservice[\u0027project\u0027]"},{"line_number":51,"context_line":"            )"},{"line_number":52,"context_line":"        projects.append(service[\u0027project\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"d8e57bb9_8185acda","line":49,"updated":"2025-07-15 18:08:16.000000000","message":"same here, why not to convert to f-string like it\u0027s done 2 lines below?","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2f1d26196844a1901302e27c5c99a1a389138d37","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        if service.get(\u0027secondary\u0027, False):"},{"line_number":47,"context_line":"            continue"},{"line_number":48,"context_line":"        if service[\u0027project\u0027] in projects:"},{"line_number":49,"context_line":"            yield \"\u0027{service}\u0027 is duplicate service from \u0027{project}\u0027\".format("},{"line_number":50,"context_line":"                service\u003dservice[\u0027service_type\u0027], project\u003dservice[\u0027project\u0027]"},{"line_number":51,"context_line":"            )"},{"line_number":52,"context_line":"        projects.append(service[\u0027project\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"4bbdbaf4_b6a3d34a","line":49,"in_reply_to":"d8e57bb9_8185acda","updated":"2025-07-16 09:51:31.000000000","message":"as with the other file","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1e297185c160842b6b8fabf7e19d93c98831cd4a","unresolved":true,"context_lines":[{"line_number":62,"context_line":"    \"\"\""},{"line_number":63,"context_line":"    ret \u003d True"},{"line_number":64,"context_line":"    for msg in validate_schema(schema, data, registry):"},{"line_number":65,"context_line":"        print(msg, file\u003dsys.stderr)"},{"line_number":66,"context_line":"        ret \u003d False"},{"line_number":67,"context_line":"    for msg in validate_unique_tokens(data):"},{"line_number":68,"context_line":"        print(msg, file\u003dsys.stderr)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ad60c7c3_002f35f9","line":65,"updated":"2025-07-15 18:08:16.000000000","message":"is this change really related to `ruff`?","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2f1d26196844a1901302e27c5c99a1a389138d37","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    \"\"\""},{"line_number":63,"context_line":"    ret \u003d True"},{"line_number":64,"context_line":"    for msg in validate_schema(schema, data, registry):"},{"line_number":65,"context_line":"        print(msg, file\u003dsys.stderr)"},{"line_number":66,"context_line":"        ret \u003d False"},{"line_number":67,"context_line":"    for msg in validate_unique_tokens(data):"},{"line_number":68,"context_line":"        print(msg, file\u003dsys.stderr)"}],"source_content_type":"text/x-python","patch_set":1,"id":"115326a0_f8fac158","line":65,"in_reply_to":"ad60c7c3_002f35f9","updated":"2025-07-16 09:51:31.000000000","message":"No, this is me. It should be a separate change.","commit_id":"57ce02b131ed2ed0c7ee1e29901d617447005fcd"}]}
