)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d0e8e88948b68a54d1b0ff39476ab9f1f44d09c3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f5e4352e_274158d3","updated":"2024-09-24 19:59:08.000000000","message":"I don\u0027t have an opinion on the pbr thing.\n\nThis or something like it would be very nice to have in oslo I think for local testing of things, so I\u0027m all for it. Thanks!","commit_id":"735b1d0ae715191487f6ebb441ad74efcd3ec93e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b70e775e48547a5e10d14a02309f8dc2352298fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"618e70d5_22962528","updated":"2024-09-24 20:46:53.000000000","message":"LGTM thanks","commit_id":"9fe08bad10f11b2a8852f667a1a109635ab30331"},{"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":"004fd011862b5d65a495e0fb508902859bec37e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"4566b974_4a62912a","updated":"2024-10-30 20:57:43.000000000","message":"Executing version.py change as requested, responded to other comments","commit_id":"e5a353176d53ed0d9aa74a28f819c98fd0ae77fe"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"4cc511c2e0ca65b01eef9531c8b69b8d180e91ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"35523755_ca561393","updated":"2024-10-31 10:55:39.000000000","message":"Can you please fix the pep8 error?","commit_id":"f24e6b37bfe5aa9373397daf39191dd3faca28ac"}],"oslo_utils/imageutils/__main__.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8c9a7aea370bfc3e320adfc925ac5bd9eb55d451","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"4bae55b3_eaf035d3","updated":"2024-10-25 14:43:34.000000000","message":"I wonder if we want to use console_script to provide executable file, instead of executing this via python ?","commit_id":"e5a353176d53ed0d9aa74a28f819c98fd0ae77fe"},{"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":"004fd011862b5d65a495e0fb508902859bec37e6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"09dd0fea_8be02541","in_reply_to":"4bae55b3_eaf035d3","updated":"2024-10-30 20:57:43.000000000","message":"I find `python -m blah` to generally be more portable as it can be used without having to have binary symlinks installed. My assumption was this would most likely be used by someone in a service venv trying to troubleshoot, so I optimized for that. I can add a script if you feel strongly.","commit_id":"e5a353176d53ed0d9aa74a28f819c98fd0ae77fe"}],"oslo_utils/imageutils/cli.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d0e8e88948b68a54d1b0ff39476ab9f1f44d09c3","unresolved":true,"context_lines":[{"line_number":31,"context_line":"    parser.add_argument(\u0027-v\u0027, \u0027--verbose\u0027,"},{"line_number":32,"context_line":"                        action\u003d\u0027store_true\u0027,"},{"line_number":33,"context_line":"                        help\u003d(\"Print detailed information about the image in \""},{"line_number":34,"context_line":"                              \"KEY\u003dVALUE format. Defaults to no output.\"))"},{"line_number":35,"context_line":"    parser.add_argument(\u0027-i\u0027, \u0027--image\u0027,"},{"line_number":36,"context_line":"                        action\u003d\u0027store\u0027, required\u003dTrue)"},{"line_number":37,"context_line":"    args \u003d parser.parse_args()"}],"source_content_type":"text/x-python","patch_set":4,"id":"85b8d0df_d4dcf42f","line":34,"updated":"2024-09-24 19:59:08.000000000","message":"Looks like we do nothing if not `-v`. Did you mean to return nonzero on safety check failure?","commit_id":"735b1d0ae715191487f6ebb441ad74efcd3ec93e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b70e775e48547a5e10d14a02309f8dc2352298fd","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    parser.add_argument(\u0027-v\u0027, \u0027--verbose\u0027,"},{"line_number":32,"context_line":"                        action\u003d\u0027store_true\u0027,"},{"line_number":33,"context_line":"                        help\u003d(\"Print detailed information about the image in \""},{"line_number":34,"context_line":"                              \"KEY\u003dVALUE format. Defaults to no output.\"))"},{"line_number":35,"context_line":"    parser.add_argument(\u0027-i\u0027, \u0027--image\u0027,"},{"line_number":36,"context_line":"                        action\u003d\u0027store\u0027, required\u003dTrue)"},{"line_number":37,"context_line":"    args \u003d parser.parse_args()"}],"source_content_type":"text/x-python","patch_set":4,"id":"cd883b01_b4ddaee4","line":34,"in_reply_to":"47a0ab18_43f2fe6b","updated":"2024-09-24 20:46:53.000000000","message":"Acknowledged","commit_id":"735b1d0ae715191487f6ebb441ad74efcd3ec93e"},{"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":"cc1840ce34d8400bf7ad24435b6165f0e6e052b8","unresolved":true,"context_lines":[{"line_number":31,"context_line":"    parser.add_argument(\u0027-v\u0027, \u0027--verbose\u0027,"},{"line_number":32,"context_line":"                        action\u003d\u0027store_true\u0027,"},{"line_number":33,"context_line":"                        help\u003d(\"Print detailed information about the image in \""},{"line_number":34,"context_line":"                              \"KEY\u003dVALUE format. Defaults to no output.\"))"},{"line_number":35,"context_line":"    parser.add_argument(\u0027-i\u0027, \u0027--image\u0027,"},{"line_number":36,"context_line":"                        action\u003d\u0027store\u0027, required\u003dTrue)"},{"line_number":37,"context_line":"    args \u003d parser.parse_args()"}],"source_content_type":"text/x-python","patch_set":4,"id":"47a0ab18_43f2fe6b","line":34,"in_reply_to":"85b8d0df_d4dcf42f","updated":"2024-09-24 20:36:50.000000000","message":"literally missed copy+pasting out the last two lines of the original, nice catch, fixed","commit_id":"735b1d0ae715191487f6ebb441ad74efcd3ec93e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d0e8e88948b68a54d1b0ff39476ab9f1f44d09c3","unresolved":true,"context_lines":[{"line_number":46,"context_line":"    try:"},{"line_number":47,"context_line":"        inspector.safety_check()"},{"line_number":48,"context_line":"    except format_inspector.SafetyCheckFailed:"},{"line_number":49,"context_line":"        safe \u003d False"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    virtual_size \u003d inspector.virtual_size"},{"line_number":52,"context_line":"    actual_size \u003d inspector.actual_size"}],"source_content_type":"text/x-python","patch_set":4,"id":"4c21c607_812e74a3","line":49,"updated":"2024-09-24 19:59:08.000000000","message":"Might be nice to capture the message/reasons in another variable or just write to stderr. Not being safe because it has a backing file is much different than not being safe because it has a data file. For some uses (internal nova and cinder images), backing file is expected, data file is red alert.","commit_id":"735b1d0ae715191487f6ebb441ad74efcd3ec93e"},{"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":"cc1840ce34d8400bf7ad24435b6165f0e6e052b8","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    try:"},{"line_number":47,"context_line":"        inspector.safety_check()"},{"line_number":48,"context_line":"    except format_inspector.SafetyCheckFailed:"},{"line_number":49,"context_line":"        safe \u003d False"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    virtual_size \u003d inspector.virtual_size"},{"line_number":52,"context_line":"    actual_size \u003d inspector.actual_size"}],"source_content_type":"text/x-python","patch_set":4,"id":"5cc57ab6_e65c1b71","line":49,"in_reply_to":"4c21c607_812e74a3","updated":"2024-09-24 20:36:50.000000000","message":"Done","commit_id":"735b1d0ae715191487f6ebb441ad74efcd3ec93e"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"38985ab8dc9081c9a6765295e4321f6cacfc7a17","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def main():"},{"line_number":25,"context_line":"    logging.basicConfig(level\u003dlogging.CRITICAL)"},{"line_number":26,"context_line":"    oslo_utils_version \u003d pbr.packaging.get_version(\u0027oslo_utils\u0027)"},{"line_number":27,"context_line":"    parser \u003d argparse.ArgumentParser("},{"line_number":28,"context_line":"        prog\u003d\u0027oslo.utils.imageutils\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"bff352ec_2abc1adb","line":25,"range":{"start_line":25,"start_character":4,"end_line":25,"end_character":47},"updated":"2024-10-25 14:51:12.000000000","message":"I wonder if we can use native logging to dump log lines to output and set debug level when --verbose.","commit_id":"e5a353176d53ed0d9aa74a28f819c98fd0ae77fe"},{"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":"004fd011862b5d65a495e0fb508902859bec37e6","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def main():"},{"line_number":25,"context_line":"    logging.basicConfig(level\u003dlogging.CRITICAL)"},{"line_number":26,"context_line":"    oslo_utils_version \u003d pbr.packaging.get_version(\u0027oslo_utils\u0027)"},{"line_number":27,"context_line":"    parser \u003d argparse.ArgumentParser("},{"line_number":28,"context_line":"        prog\u003d\u0027oslo.utils.imageutils\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5068202c_87b7ba19","line":25,"range":{"start_line":25,"start_character":4,"end_line":25,"end_character":47},"in_reply_to":"bff352ec_2abc1adb","updated":"2024-10-30 20:57:43.000000000","message":"Well, I specifically wanted the output to be parsable in context of a script. Imagine this use case:\n\npython -m imageutils -v -i /path/to/image | while read var; do export $var; done\n\nor \n\n#!/bin/bash\n\nsource $(python -m imageutils -v -i /path/to/image)\n\nif [[ $VIRTUAL_SIZE -gt 2 ]]; then ... fi\n\nI am afraid it will make this much less ergonomic and useful without documentation if we muddy up the output with a large amount of logging to stderr.\n\nI can change this if you insist, but I think this is the right UX choice.","commit_id":"e5a353176d53ed0d9aa74a28f819c98fd0ae77fe"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"38985ab8dc9081c9a6765295e4321f6cacfc7a17","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def main():"},{"line_number":25,"context_line":"    logging.basicConfig(level\u003dlogging.CRITICAL)"},{"line_number":26,"context_line":"    oslo_utils_version \u003d pbr.packaging.get_version(\u0027oslo_utils\u0027)"},{"line_number":27,"context_line":"    parser \u003d argparse.ArgumentParser("},{"line_number":28,"context_line":"        prog\u003d\u0027oslo.utils.imageutils\u0027,"},{"line_number":29,"context_line":"        formatter_class\u003dargparse.RawDescriptionHelpFormatter,"}],"source_content_type":"text/x-python","patch_set":8,"id":"e8bc981d_0ec8550e","line":26,"range":{"start_line":26,"start_character":25,"end_line":26,"end_character":64},"updated":"2024-10-25 14:51:12.000000000","message":"Can we add version.py as is done in a few other repos ?\n\nhttps://github.com/openstack/oslo.cache/blob/master/oslo_cache/version.py\nhttps://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/version.py","commit_id":"e5a353176d53ed0d9aa74a28f819c98fd0ae77fe"},{"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":"bf8b92c6847aa8aabee4fc3012dc849768b80652","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def main():"},{"line_number":25,"context_line":"    logging.basicConfig(level\u003dlogging.CRITICAL)"},{"line_number":26,"context_line":"    oslo_utils_version \u003d pbr.packaging.get_version(\u0027oslo_utils\u0027)"},{"line_number":27,"context_line":"    parser \u003d argparse.ArgumentParser("},{"line_number":28,"context_line":"        prog\u003d\u0027oslo.utils.imageutils\u0027,"},{"line_number":29,"context_line":"        formatter_class\u003dargparse.RawDescriptionHelpFormatter,"}],"source_content_type":"text/x-python","patch_set":8,"id":"2a7fafe8_50eff184","line":26,"range":{"start_line":26,"start_character":25,"end_line":26,"end_character":64},"in_reply_to":"0fe7bb13_8aeb34fb","updated":"2024-10-31 16:38:07.000000000","message":"Done","commit_id":"e5a353176d53ed0d9aa74a28f819c98fd0ae77fe"},{"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":"004fd011862b5d65a495e0fb508902859bec37e6","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def main():"},{"line_number":25,"context_line":"    logging.basicConfig(level\u003dlogging.CRITICAL)"},{"line_number":26,"context_line":"    oslo_utils_version \u003d pbr.packaging.get_version(\u0027oslo_utils\u0027)"},{"line_number":27,"context_line":"    parser \u003d argparse.ArgumentParser("},{"line_number":28,"context_line":"        prog\u003d\u0027oslo.utils.imageutils\u0027,"},{"line_number":29,"context_line":"        formatter_class\u003dargparse.RawDescriptionHelpFormatter,"}],"source_content_type":"text/x-python","patch_set":8,"id":"0fe7bb13_8aeb34fb","line":26,"range":{"start_line":26,"start_character":25,"end_line":26,"end_character":64},"in_reply_to":"e8bc981d_0ec8550e","updated":"2024-10-30 20:57:43.000000000","message":"will-do","commit_id":"e5a353176d53ed0d9aa74a28f819c98fd0ae77fe"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"1397be4a03558e05cbfe6cbad7bab1d104215383","unresolved":true,"context_lines":[{"line_number":20,"context_line":"from oslo_utils.version import version_info"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def main():"},{"line_number":24,"context_line":"    logging.basicConfig(level\u003dlogging.CRITICAL)"},{"line_number":25,"context_line":"    oslo_utils_version \u003d str(version_info)"},{"line_number":26,"context_line":"    parser \u003d argparse.ArgumentParser("}],"source_content_type":"text/x-python","patch_set":10,"id":"9cf2ae8a_7eb25ee4","line":23,"range":{"start_line":23,"start_character":4,"end_line":23,"end_character":8},"updated":"2024-12-11 09:13:01.000000000","message":"Please can you add some docstring?\nThis way the command will be documented in the doc, else, there is no indication (other than the release note) that it exists.","commit_id":"bec7bcef960e2eb03a982750844a6f914504f39e"},{"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":"ce423ed0c7433f2fc210b351e69b318b19294643","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from oslo_utils.version import version_info"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def main():"},{"line_number":24,"context_line":"    logging.basicConfig(level\u003dlogging.CRITICAL)"},{"line_number":25,"context_line":"    oslo_utils_version \u003d str(version_info)"},{"line_number":26,"context_line":"    parser \u003d argparse.ArgumentParser("}],"source_content_type":"text/x-python","patch_set":10,"id":"e655e498_85eb9f28","line":23,"range":{"start_line":23,"start_character":4,"end_line":23,"end_character":8},"in_reply_to":"9cf2ae8a_7eb25ee4","updated":"2024-12-11 17:39:33.000000000","message":"Done","commit_id":"bec7bcef960e2eb03a982750844a6f914504f39e"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"1397be4a03558e05cbfe6cbad7bab1d104215383","unresolved":true,"context_lines":[{"line_number":26,"context_line":"    parser \u003d argparse.ArgumentParser("},{"line_number":27,"context_line":"        prog\u003d\u0027oslo.utils.imageutils\u0027,"},{"line_number":28,"context_line":"        formatter_class\u003dargparse.RawDescriptionHelpFormatter,"},{"line_number":29,"context_line":"        description\u003d(\"oslo.utils.imageutils image checking program.\\n\""},{"line_number":30,"context_line":"                     \"  * Exit code of 0 indicates image passes safety check\\n\""},{"line_number":31,"context_line":"                     \"  * Exit code of 1 indicates image fails safety check\"),"},{"line_number":32,"context_line":"        epilog\u003d\"Testing using oslo.utils version %s\" % oslo_utils_version)"}],"source_content_type":"text/x-python","patch_set":10,"id":"76def7f0_0055b955","line":29,"range":{"start_line":29,"start_character":67,"end_line":29,"end_character":69},"updated":"2024-12-11 09:13:01.000000000","message":"I was thinking that using of `RawDescriptionHelpFormatter` would avoid you to use `\\n`.","commit_id":"bec7bcef960e2eb03a982750844a6f914504f39e"},{"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":"ce423ed0c7433f2fc210b351e69b318b19294643","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    parser \u003d argparse.ArgumentParser("},{"line_number":27,"context_line":"        prog\u003d\u0027oslo.utils.imageutils\u0027,"},{"line_number":28,"context_line":"        formatter_class\u003dargparse.RawDescriptionHelpFormatter,"},{"line_number":29,"context_line":"        description\u003d(\"oslo.utils.imageutils image checking program.\\n\""},{"line_number":30,"context_line":"                     \"  * Exit code of 0 indicates image passes safety check\\n\""},{"line_number":31,"context_line":"                     \"  * Exit code of 1 indicates image fails safety check\"),"},{"line_number":32,"context_line":"        epilog\u003d\"Testing using oslo.utils version %s\" % oslo_utils_version)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3cd9d62b_92bd4ffe","line":29,"range":{"start_line":29,"start_character":67,"end_line":29,"end_character":69},"in_reply_to":"76def7f0_0055b955","updated":"2024-12-11 17:39:33.000000000","message":"I looked at this, updated this to remove the \\n but make it work with more certainty.","commit_id":"bec7bcef960e2eb03a982750844a6f914504f39e"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"1397be4a03558e05cbfe6cbad7bab1d104215383","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    fmt \u003d str(inspector)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    if verbose:"},{"line_number":63,"context_line":"        print(\u0027SAFETY_CHECK_PASSED\u003d%s\u0027 % safe)"},{"line_number":64,"context_line":"        print(\u0027VIRTUAL_SIZE\u003d%s\u0027 % virtual_size)"},{"line_number":65,"context_line":"        print(\u0027ACTUAL_SIZE\u003d%s\u0027 % actual_size)"},{"line_number":66,"context_line":"        print(\u0027IMAGE_FORMAT\u003d\\\u0027%s\\\u0027\u0027 % fmt)"}],"source_content_type":"text/x-python","patch_set":10,"id":"16e74036_74627745","line":63,"updated":"2024-12-11 09:13:01.000000000","message":"I\u0027d have used fstring but if you prefer doing that, why not.","commit_id":"bec7bcef960e2eb03a982750844a6f914504f39e"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"619903372ae34632d097ce8448a7d0133416239d","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    fmt \u003d str(inspector)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    if verbose:"},{"line_number":63,"context_line":"        print(\u0027SAFETY_CHECK_PASSED\u003d%s\u0027 % safe)"},{"line_number":64,"context_line":"        print(\u0027VIRTUAL_SIZE\u003d%s\u0027 % virtual_size)"},{"line_number":65,"context_line":"        print(\u0027ACTUAL_SIZE\u003d%s\u0027 % actual_size)"},{"line_number":66,"context_line":"        print(\u0027IMAGE_FORMAT\u003d\\\u0027%s\\\u0027\u0027 % fmt)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1702db57_42f59d1a","line":63,"in_reply_to":"02d2e8ff_11603abc","updated":"2025-02-06 09:25:19.000000000","message":"I agree with Dan and Jay, there is no oslo policy about fstring. Using fstring is just a personal preference. I\u0027d not see reason to block this patch just for using or fstring.","commit_id":"bec7bcef960e2eb03a982750844a6f914504f39e"},{"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":"ce423ed0c7433f2fc210b351e69b318b19294643","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    fmt \u003d str(inspector)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    if verbose:"},{"line_number":63,"context_line":"        print(\u0027SAFETY_CHECK_PASSED\u003d%s\u0027 % safe)"},{"line_number":64,"context_line":"        print(\u0027VIRTUAL_SIZE\u003d%s\u0027 % virtual_size)"},{"line_number":65,"context_line":"        print(\u0027ACTUAL_SIZE\u003d%s\u0027 % actual_size)"},{"line_number":66,"context_line":"        print(\u0027IMAGE_FORMAT\u003d\\\u0027%s\\\u0027\u0027 % fmt)"}],"source_content_type":"text/x-python","patch_set":10,"id":"4990c877_0778bfe8","line":63,"in_reply_to":"16e74036_74627745","updated":"2024-12-11 17:39:33.000000000","message":"No preference, just personal style/what I remember off the top of my head 😄. I switched it.","commit_id":"bec7bcef960e2eb03a982750844a6f914504f39e"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"0eccdc1c637592aa3a6ea44c8c66053faab5403c","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    fmt \u003d str(inspector)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    if verbose:"},{"line_number":63,"context_line":"        print(\u0027SAFETY_CHECK_PASSED\u003d%s\u0027 % safe)"},{"line_number":64,"context_line":"        print(\u0027VIRTUAL_SIZE\u003d%s\u0027 % virtual_size)"},{"line_number":65,"context_line":"        print(\u0027ACTUAL_SIZE\u003d%s\u0027 % actual_size)"},{"line_number":66,"context_line":"        print(\u0027IMAGE_FORMAT\u003d\\\u0027%s\\\u0027\u0027 % fmt)"}],"source_content_type":"text/x-python","patch_set":10,"id":"d4030cc5_2e7612b3","line":63,"in_reply_to":"1702db57_42f59d1a","updated":"2025-02-06 09:26:11.000000000","message":"s/for using or fstring./for using or not fstring./","commit_id":"bec7bcef960e2eb03a982750844a6f914504f39e"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"896ed51b08857f67d6d0b3d8850353ee7c2ffd56","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    fmt \u003d str(inspector)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    if verbose:"},{"line_number":63,"context_line":"        print(\u0027SAFETY_CHECK_PASSED\u003d%s\u0027 % safe)"},{"line_number":64,"context_line":"        print(\u0027VIRTUAL_SIZE\u003d%s\u0027 % virtual_size)"},{"line_number":65,"context_line":"        print(\u0027ACTUAL_SIZE\u003d%s\u0027 % actual_size)"},{"line_number":66,"context_line":"        print(\u0027IMAGE_FORMAT\u003d\\\u0027%s\\\u0027\u0027 % fmt)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fbe0397a_f03f2c21","line":63,"in_reply_to":"4990c877_0778bfe8","updated":"2025-02-05 17:42:29.000000000","message":"Hi,\n\nIt\u0027s recommended to use f-strings instead of the \u0027%\u0027 operator for string formatting.\nf-strings are more readable, concise, and performant since they are evaluated at runtime.\nThey also allow embedding expressions directly within the string.","commit_id":"bec7bcef960e2eb03a982750844a6f914504f39e"},{"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":"47c1753e5401cd64b97413cd7b4f83446c05f9c5","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    fmt \u003d str(inspector)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    if verbose:"},{"line_number":63,"context_line":"        print(\u0027SAFETY_CHECK_PASSED\u003d%s\u0027 % safe)"},{"line_number":64,"context_line":"        print(\u0027VIRTUAL_SIZE\u003d%s\u0027 % virtual_size)"},{"line_number":65,"context_line":"        print(\u0027ACTUAL_SIZE\u003d%s\u0027 % actual_size)"},{"line_number":66,"context_line":"        print(\u0027IMAGE_FORMAT\u003d\\\u0027%s\\\u0027\u0027 % fmt)"}],"source_content_type":"text/x-python","patch_set":10,"id":"02d2e8ff_11603abc","line":63,"in_reply_to":"73435e41_4b07b1a5","updated":"2025-02-05 21:06:09.000000000","message":"Oh, I assumed at this point you had core on everything 😄\n\nI generally agree with the sentiment of your comment; I generally apply the heuristic of if it\u0027s not a functional or performance impacting thing; it should be enforced in lint or not at all.","commit_id":"bec7bcef960e2eb03a982750844a6f914504f39e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ab59e91be65c52084794ab373410f42185513362","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    fmt \u003d str(inspector)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    if verbose:"},{"line_number":63,"context_line":"        print(\u0027SAFETY_CHECK_PASSED\u003d%s\u0027 % safe)"},{"line_number":64,"context_line":"        print(\u0027VIRTUAL_SIZE\u003d%s\u0027 % virtual_size)"},{"line_number":65,"context_line":"        print(\u0027ACTUAL_SIZE\u003d%s\u0027 % actual_size)"},{"line_number":66,"context_line":"        print(\u0027IMAGE_FORMAT\u003d\\\u0027%s\\\u0027\u0027 % fmt)"}],"source_content_type":"text/x-python","patch_set":10,"id":"73435e41_4b07b1a5","line":63,"in_reply_to":"a874a365_d092b468","updated":"2025-02-05 21:03:59.000000000","message":"I\u0027m not an oslo core to be clear! However, I definitely don\u0027t understand why this would be being blocked because of f-strings. Even though JayF is obviously not an outsider, this is the sort of not-even-production-code goodwill patch that will make people\u0027s lives easier that is ready to go. Holding it up on something like f-string style preferences concerns me and pushes away contributors, IMHO.","commit_id":"bec7bcef960e2eb03a982750844a6f914504f39e"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"e74661309797a5946159ba1170062345bf5b1c87","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    fmt \u003d str(inspector)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    if verbose:"},{"line_number":63,"context_line":"        print(\u0027SAFETY_CHECK_PASSED\u003d%s\u0027 % safe)"},{"line_number":64,"context_line":"        print(\u0027VIRTUAL_SIZE\u003d%s\u0027 % virtual_size)"},{"line_number":65,"context_line":"        print(\u0027ACTUAL_SIZE\u003d%s\u0027 % actual_size)"},{"line_number":66,"context_line":"        print(\u0027IMAGE_FORMAT\u003d\\\u0027%s\\\u0027\u0027 % fmt)"}],"source_content_type":"text/x-python","patch_set":10,"id":"50feb3c9_9a7e5f91","line":63,"in_reply_to":"d4030cc5_2e7612b3","updated":"2025-02-06 19:37:28.000000000","message":"I understand that preferences vary, and I appreciate the feedback. However, f-strings are the recommended approach in modern Python (PEP 498) due to their better readability, performance, and maintainability.","commit_id":"bec7bcef960e2eb03a982750844a6f914504f39e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fa963522e907e3a4adb0b1397b9b0d3f5cfa9b1e","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    fmt \u003d str(inspector)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    if verbose:"},{"line_number":63,"context_line":"        print(\u0027SAFETY_CHECK_PASSED\u003d%s\u0027 % safe)"},{"line_number":64,"context_line":"        print(\u0027VIRTUAL_SIZE\u003d%s\u0027 % virtual_size)"},{"line_number":65,"context_line":"        print(\u0027ACTUAL_SIZE\u003d%s\u0027 % actual_size)"},{"line_number":66,"context_line":"        print(\u0027IMAGE_FORMAT\u003d\\\u0027%s\\\u0027\u0027 % fmt)"}],"source_content_type":"text/x-python","patch_set":10,"id":"feec6dd6_4cfdf855","line":63,"in_reply_to":"fbe0397a_f03f2c21","updated":"2025-02-05 17:56:51.000000000","message":"Just FYI, I hate f-strings with a substantial amount of passion. If there\u0027s an openstack or oslo \"recommendation\" please do link it, but otherwise, my preference is to continue using %-formatting.","commit_id":"bec7bcef960e2eb03a982750844a6f914504f39e"},{"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":"eed4720feb9e9ff0724460d2939d7f4e0967ead3","unresolved":true,"context_lines":[{"line_number":60,"context_line":"    fmt \u003d str(inspector)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    if verbose:"},{"line_number":63,"context_line":"        print(\u0027SAFETY_CHECK_PASSED\u003d%s\u0027 % safe)"},{"line_number":64,"context_line":"        print(\u0027VIRTUAL_SIZE\u003d%s\u0027 % virtual_size)"},{"line_number":65,"context_line":"        print(\u0027ACTUAL_SIZE\u003d%s\u0027 % actual_size)"},{"line_number":66,"context_line":"        print(\u0027IMAGE_FORMAT\u003d\\\u0027%s\\\u0027\u0027 % fmt)"}],"source_content_type":"text/x-python","patch_set":10,"id":"a874a365_d092b468","line":63,"in_reply_to":"feec6dd6_4cfdf855","updated":"2025-02-05 20:58:11.000000000","message":"I was told in the oslo meeting to update to f-strings for this to merge; now another core is saying not to. Can we please merge this as-is and figure out the preferred way when it\u0027s not blocking a half-year old patch? 😄","commit_id":"bec7bcef960e2eb03a982750844a6f914504f39e"}],"requirements.txt":[{"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":"de786d26d5b298bc364121e9b8aa07f822bf2212","unresolved":true,"context_lines":[{"line_number":13,"context_line":"packaging\u003e\u003d20.4 # BSD"},{"line_number":14,"context_line":"tzdata\u003e\u003d2022.4;python_version\u003e\u003d\"3.9\" # MIT"},{"line_number":15,"context_line":"PyYAML\u003e\u003d3.13 # MIT"},{"line_number":16,"context_line":"pbr\u003e\u003d6.1.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":2,"id":"18e52674_9e96ecaa","line":16,"updated":"2024-09-24 19:50:16.000000000","message":"This is just for printing the version helpfully in the CLI for oslo_utils.imageutils. I can drop it (or make it opportunistic to use if it\u0027s installed instead of a hard requirement), but I figured we\u0027d appreciate having the information if/when people use this output as bug reproduction.","commit_id":"6e642e9416bcf99ae46c7fad86f245b288d98275"}]}
