)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"b218c5a54e3f09fd419fc7f73091edc2449df8e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"49e2b025_0197a1d2","updated":"2026-10-06 09:20:57.000000000","message":"sadly no feedback from other reviewers yet. so just some minor questions and then this should be fine","commit_id":"4b4fe849bb4022e67aec8057e9b40e602a8cf3a1"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c032992aee0d16fb91ef409be4bb04b73695da3f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8a8170fc_641b0c7e","updated":"2026-09-30 08:11:22.000000000","message":"to me this doesn\u0027t seem to be essential, we could well live with the current state and have less churn. I\u0027m avoiding a -1 in order to give others an option to have a different preference, but I also won\u0027t approve it","commit_id":"4b4fe849bb4022e67aec8057e9b40e602a8cf3a1"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a59ae25edb72bc5769750e5a1a1780ada7c13150","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"309c4aec_9ea562b5","in_reply_to":"2f818844_296534f1","updated":"2026-10-02 08:29:44.000000000","message":"maybe churn isn\u0027t the right term, I\u0027m not a native speaker, I was just meaning that this change is unnecessary and also that maybe next time a new ruff release comes up with something similar that\u0027s essentially only whitespace changes, we can avoid following that, too","commit_id":"4b4fe849bb4022e67aec8057e9b40e602a8cf3a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"1df99f442c55efe32d67f9495c23d60e8080563b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"79d6dfd6_6fe71602","in_reply_to":"309c4aec_9ea562b5","updated":"2026-10-05 12:10:05.000000000","message":"I\u0027ve likely confused matters by initially attributing this to ruff 0.16.0. The E5 rules aren\u0027t new: they\u0027re ports of rules from flake8 that have existed in ruff since get-go. I simply missed enabling them when initially adding ruff here.\n\nThe reason I mentioned ruff 0.16.0 was because that changed the default set of enabled rules and my examination of that helped me identify the \"missing\" rules in a few repos. The actual change doesn\u0027t affect us though since we have a explicit list of enabled rules, meaning we ignore the implicit default value.\n\nWe may decide E5 rules (primarily the E501 (line too long) rule) are low value and not worth doing. Fine be me, if so. I just want to make sure that *that* is what we\u0027re deciding and not that this is a change being foisted upon us.\n\nPS: The primary impact of not enabling E501 in particular is that strings can be arbitrary length. ruff/black will rewrap most function calls, but it won\u0027t rewrap strings \u003e\u003d 79 characters since that\u0027s an AST change.","commit_id":"4b4fe849bb4022e67aec8057e9b40e602a8cf3a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4010694a7e2901f75d2b5beffc78d07bec7831d2","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bc3dbc98_bf6ba4dd","in_reply_to":"513e6e7a_d9d5085b","updated":"2026-10-06 09:35:12.000000000","message":"The exact limit is 79 characters which is [hardcoded in `pyproject.toml`](https://review.opendev.org/c/openstack/requirements/+/1007742/1/pyproject.toml#45). ruff and black default to 88 but that conflicts with [our style guide](https://docs.openstack.org/hacking/latest/user/hacking.html).\n\nAnother thing to note here is that ruff was already respecting the line-length setting where it can. However, as I keep mentioning, ruff won\u0027t make a change that results in a different AST. Splitting/joining strings is an AST change, so everything in this patch is manually done.","commit_id":"4b4fe849bb4022e67aec8057e9b40e602a8cf3a1"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"b218c5a54e3f09fd419fc7f73091edc2449df8e2","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"513e6e7a_d9d5085b","in_reply_to":"79d6dfd6_6fe71602","updated":"2026-10-06 09:20:57.000000000","message":"I don\u0027t object to avoiding overlong strings, I guess what mainly triggers my concern are the one-character changes, which seems to be caused by unclearness on whether 79, 80, or some similar number is the correct limit. but let\u0027s hope that this will be stable in the future and then I think I can agree to this change","commit_id":"4b4fe849bb4022e67aec8057e9b40e602a8cf3a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"898273ba3b92a8f6c99ce2151adf8445cd0a70aa","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"2f818844_296534f1","in_reply_to":"8a8170fc_641b0c7e","updated":"2026-09-30 09:56:47.000000000","message":"\u003e to me this doesn\u0027t seem to be essential, we could well live with the current state\n\nThis one I agree with. ruff will do a decent job of wrapping this where possible. The main reason to enable this is to avoid very long comments, which ruff won\u0027t rewrap (since it changes the AST). Maybe that\u0027s not a concern? It happened enough in SDK that we opted to enable this and make the change.\n\n\u003e and have less churn.\n\nThis one I don\u0027t agree with though. We have the ability to ignore commits like this from a `.git-blame-ignore-revs` file (which I\u0027ve added at the end of the series). We\u0027re also not worried about backporting stuff here, so merge conflicts should not an issue, and from a review perspective the burden is low. What other impact would \"churn\" have here?\n\n\u003e I\u0027m avoiding a -1 in order to give others an option to have a different preference, but I also won\u0027t approve it\n\nAs is your right 😀","commit_id":"4b4fe849bb4022e67aec8057e9b40e602a8cf3a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4566454f0d21851c6d0227b8b661df4940327409","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fd1f40b9_2d0dd7f2","in_reply_to":"bc3dbc98_bf6ba4dd","updated":"2026-10-06 09:48:12.000000000","message":"Done","commit_id":"4b4fe849bb4022e67aec8057e9b40e602a8cf3a1"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"bbc2b052b20d880d35f96ba333af9df9f14381db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9d5c27dc_8c5e7ff9","updated":"2026-10-07 13:11:32.000000000","message":"zuul was down","commit_id":"4068debe3d1c94a44391c1e83ae96c3f2a5392ef"}],"doc/source/conf.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"b218c5a54e3f09fd419fc7f73091edc2449df8e2","unresolved":true,"context_lines":[{"line_number":45,"context_line":"# -- Options for LaTeX output -------------------------------------------------"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# Grouping the document tree into LaTeX files. List of tuples"},{"line_number":48,"context_line":"# (index file, target name, title, author, documentclass [howto/manual])."},{"line_number":49,"context_line":"latex_documents \u003d ["},{"line_number":50,"context_line":"    ("},{"line_number":51,"context_line":"        \u0027index\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa70c0d2_3ab05153","line":48,"updated":"2026-10-06 09:20:57.000000000","message":"this rewording is a manual change, not something that ruff did, right? might be better to put it into a dedicated change (so it isn\u0027t covered by the git blame ignore later) or at least note it in the commit message for clarity","commit_id":"4b4fe849bb4022e67aec8057e9b40e602a8cf3a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4566454f0d21851c6d0227b8b661df4940327409","unresolved":false,"context_lines":[{"line_number":45,"context_line":"# -- Options for LaTeX output -------------------------------------------------"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# Grouping the document tree into LaTeX files. List of tuples"},{"line_number":48,"context_line":"# (index file, target name, title, author, documentclass [howto/manual])."},{"line_number":49,"context_line":"latex_documents \u003d ["},{"line_number":50,"context_line":"    ("},{"line_number":51,"context_line":"        \u0027index\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3d564dc5_b48026a1","line":48,"in_reply_to":"d4514003_3ba1823d","updated":"2026-10-06 09:48:12.000000000","message":"Done","commit_id":"4b4fe849bb4022e67aec8057e9b40e602a8cf3a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4010694a7e2901f75d2b5beffc78d07bec7831d2","unresolved":true,"context_lines":[{"line_number":45,"context_line":"# -- Options for LaTeX output -------------------------------------------------"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# Grouping the document tree into LaTeX files. List of tuples"},{"line_number":48,"context_line":"# (index file, target name, title, author, documentclass [howto/manual])."},{"line_number":49,"context_line":"latex_documents \u003d ["},{"line_number":50,"context_line":"    ("},{"line_number":51,"context_line":"        \u0027index\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"d4514003_3ba1823d","line":48,"in_reply_to":"fa70c0d2_3ab05153","updated":"2026-10-06 09:35:12.000000000","message":"Yeah, I did this to avoid wrapping that across multiple lines.","commit_id":"4b4fe849bb4022e67aec8057e9b40e602a8cf3a1"}],"openstack_requirements/check.py":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"b218c5a54e3f09fd419fc7f73091edc2449df8e2","unresolved":true,"context_lines":[{"line_number":186,"context_line":"                    f\u0027   \"{local_req_val}\" does not match \"{global_req_val}\"\\n\u0027"},{"line_number":187,"context_line":"                    f\u0027   {local_req}\\n\u0027"},{"line_number":188,"context_line":"                    f\u0027   {global_req}\u0027"},{"line_number":189,"context_line":"                )"},{"line_number":190,"context_line":"                matching \u003d False"},{"line_number":191,"context_line":"        if not matching:"},{"line_number":192,"context_line":"            continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"974421cf_b906ea68","line":189,"updated":"2026-10-06 09:20:57.000000000","message":"did ruff join the print statements? otherwise better make this a separate change, too","commit_id":"4b4fe849bb4022e67aec8057e9b40e602a8cf3a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4566454f0d21851c6d0227b8b661df4940327409","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                    f\u0027   \"{local_req_val}\" does not match \"{global_req_val}\"\\n\u0027"},{"line_number":187,"context_line":"                    f\u0027   {local_req}\\n\u0027"},{"line_number":188,"context_line":"                    f\u0027   {global_req}\u0027"},{"line_number":189,"context_line":"                )"},{"line_number":190,"context_line":"                matching \u003d False"},{"line_number":191,"context_line":"        if not matching:"},{"line_number":192,"context_line":"            continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"73e584b8_816011fe","line":189,"in_reply_to":"8a4c6653_52d22d61","updated":"2026-10-06 09:48:12.000000000","message":"Done","commit_id":"4b4fe849bb4022e67aec8057e9b40e602a8cf3a1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4010694a7e2901f75d2b5beffc78d07bec7831d2","unresolved":true,"context_lines":[{"line_number":186,"context_line":"                    f\u0027   \"{local_req_val}\" does not match \"{global_req_val}\"\\n\u0027"},{"line_number":187,"context_line":"                    f\u0027   {local_req}\\n\u0027"},{"line_number":188,"context_line":"                    f\u0027   {global_req}\u0027"},{"line_number":189,"context_line":"                )"},{"line_number":190,"context_line":"                matching \u003d False"},{"line_number":191,"context_line":"        if not matching:"},{"line_number":192,"context_line":"            continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"8a4c6653_52d22d61","line":189,"in_reply_to":"974421cf_b906ea68","updated":"2026-10-06 09:35:12.000000000","message":"No, ruff hasn\u0027t changed anything here. It\u0027s all manual. I\u0027m not sure it makes sense to split one some manual changes from others, when they\u0027re all addressing the same goal and the patch is not huge. I can call it out in the commit message though.","commit_id":"4b4fe849bb4022e67aec8057e9b40e602a8cf3a1"}]}
