)]}'
{"/PATCHSET_LEVEL":[{"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":"c06a57f7b9812e6403406923ede673020fd5d380","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b938a74f_1fdb0da8","updated":"2023-05-31 17:29:57.000000000","message":"https://review.opendev.org/c/openstack/pbr/+/884791 needs to land, to fix CI, before this can land.","commit_id":"dfa46f148c066158ed0e9363fd08145c5fe5d39c"}],"pbr/tests/test_packaging.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"54dd329ae0f4009a325430c4c12261f01ef679a2","unresolved":true,"context_lines":[{"line_number":1217,"context_line":"        # NOTE(sigmavirus24): PyPy only added support for the SOABI config var"},{"line_number":1218,"context_line":"        # to sysconfig in 2015. That was well after 2.2.1 was published in the"},{"line_number":1219,"context_line":"        # Ubuntu 14.04 archive."},{"line_number":1220,"context_line":"        for suffix, _, _ in importlib.machinery._SUFFIXES:"},{"line_number":1221,"context_line":"            if suffix.startswith(\u0027.pypy\u0027) and suffix.endswith(\u0027.so\u0027):"},{"line_number":1222,"context_line":"                soabi \u003d suffix.split(\u0027.\u0027)[1]"},{"line_number":1223,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa144a2_f9f21b76","line":1220,"updated":"2023-05-30 22:42:06.000000000","message":"Python2.7 doesn\u0027t have importlib.machinery. You will probably need to use a conditional import above something like:\n\n```\ntry:\n    import importlib.machinery\n    get_suffixes \u003d importlib.machinery.all_suffixes\nexcept ModuleNotFoundError:\n    import imp\n    get_suffixes \u003d lambda : [x[0] for x in imp.get_suffixes()]\n```\n\nThen on this line replace the for loop with:\n\n```\nfor suffix in get_suffixes():\n```\n\nNote that pypy is used for a lot of python2.7, and in general pbr tries to maintain old python compat due to its use as an install requires. Unfortunately, this being in the pypy path means it probably isn\u0027t well covered too.","commit_id":"744b520290fc74ee88838c7403dea5f531c812f8"},{"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":"16472ea34308af85101112ff7b495e381e15c52e","unresolved":false,"context_lines":[{"line_number":1217,"context_line":"        # NOTE(sigmavirus24): PyPy only added support for the SOABI config var"},{"line_number":1218,"context_line":"        # to sysconfig in 2015. That was well after 2.2.1 was published in the"},{"line_number":1219,"context_line":"        # Ubuntu 14.04 archive."},{"line_number":1220,"context_line":"        for suffix, _, _ in importlib.machinery._SUFFIXES:"},{"line_number":1221,"context_line":"            if suffix.startswith(\u0027.pypy\u0027) and suffix.endswith(\u0027.so\u0027):"},{"line_number":1222,"context_line":"                soabi \u003d suffix.split(\u0027.\u0027)[1]"},{"line_number":1223,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":1,"id":"dcc79e87_02fd10b2","line":1220,"in_reply_to":"baa144a2_f9f21b76","updated":"2023-06-02 18:47:12.000000000","message":"Done","commit_id":"744b520290fc74ee88838c7403dea5f531c812f8"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f057653392c1ba50045777626b1feb31838a0c87","unresolved":true,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"try:"},{"line_number":67,"context_line":"    import importlib.machinery"},{"line_number":68,"context_line":"    get_suffixes \u003d importlib.machinery.all_suffixes"},{"line_number":69,"context_line":"# NOTE(JayF): ModuleNotFoundError only exists in Python 3.6+, not in 2.7"},{"line_number":70,"context_line":"except ImportError:"},{"line_number":71,"context_line":"    import imp"}],"source_content_type":"text/x-python","patch_set":4,"id":"f896e568_21e8b52d","line":68,"updated":"2023-06-02 18:39:43.000000000","message":"This returns a list of strings. These are the values we want.","commit_id":"715e7c134a55da13089d9d3d464811c2fd8ac7e3"},{"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":"16472ea34308af85101112ff7b495e381e15c52e","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"try:"},{"line_number":67,"context_line":"    import importlib.machinery"},{"line_number":68,"context_line":"    get_suffixes \u003d importlib.machinery.all_suffixes"},{"line_number":69,"context_line":"# NOTE(JayF): ModuleNotFoundError only exists in Python 3.6+, not in 2.7"},{"line_number":70,"context_line":"except ImportError:"},{"line_number":71,"context_line":"    import imp"}],"source_content_type":"text/x-python","patch_set":4,"id":"9759ed54_c5d0de31","line":68,"in_reply_to":"f896e568_21e8b52d","updated":"2023-06-02 18:47:12.000000000","message":"Done","commit_id":"715e7c134a55da13089d9d3d464811c2fd8ac7e3"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f057653392c1ba50045777626b1feb31838a0c87","unresolved":true,"context_lines":[{"line_number":69,"context_line":"# NOTE(JayF): ModuleNotFoundError only exists in Python 3.6+, not in 2.7"},{"line_number":70,"context_line":"except ImportError:"},{"line_number":71,"context_line":"    import imp"},{"line_number":72,"context_line":"    get_suffixes \u003d imp.get_suffixes"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"PBR_ROOT \u003d os.path.abspath(os.path.join(__file__, \u0027..\u0027, \u0027..\u0027, \u0027..\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"a74a677a_e9ae16df","line":72,"updated":"2023-06-02 18:39:43.000000000","message":"This returns function returns a list of tuples like:\n\n`[(\u0027.so\u0027, \u0027rb\u0027, 3), (\u0027module.so\u0027, \u0027rb\u0027, 3), (\u0027.py\u0027, \u0027U\u0027, 1), (\u0027.pyc\u0027, \u0027rb\u0027, 2)]`\n\nWe only want the first element of each tuple.","commit_id":"715e7c134a55da13089d9d3d464811c2fd8ac7e3"},{"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":"16472ea34308af85101112ff7b495e381e15c52e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"# NOTE(JayF): ModuleNotFoundError only exists in Python 3.6+, not in 2.7"},{"line_number":70,"context_line":"except ImportError:"},{"line_number":71,"context_line":"    import imp"},{"line_number":72,"context_line":"    get_suffixes \u003d imp.get_suffixes"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"PBR_ROOT \u003d os.path.abspath(os.path.join(__file__, \u0027..\u0027, \u0027..\u0027, \u0027..\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"db009070_99eb7fa1","line":72,"in_reply_to":"a74a677a_e9ae16df","updated":"2023-06-02 18:47:12.000000000","message":"Done","commit_id":"715e7c134a55da13089d9d3d464811c2fd8ac7e3"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f057653392c1ba50045777626b1feb31838a0c87","unresolved":true,"context_lines":[{"line_number":1224,"context_line":"        # NOTE(sigmavirus24): PyPy only added support for the SOABI config var"},{"line_number":1225,"context_line":"        # to sysconfig in 2015. That was well after 2.2.1 was published in the"},{"line_number":1226,"context_line":"        # Ubuntu 14.04 archive."},{"line_number":1227,"context_line":"        for suffix, _, _ in get_suffixes():"},{"line_number":1228,"context_line":"            if suffix.startswith(\u0027.pypy\u0027) and suffix.endswith(\u0027.so\u0027):"},{"line_number":1229,"context_line":"                soabi \u003d suffix.split(\u0027.\u0027)[1]"},{"line_number":1230,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":4,"id":"7c1742a2_2af298b4","line":1227,"range":{"start_line":1227,"start_character":12,"end_line":1227,"end_character":24},"updated":"2023-06-02 18:39:43.000000000","message":"See above we care about the first element of the imp.get_suffixes return values. In my original suggsetion I used a lambda to retrieve this info and make the two function calls equivalent (just returning a list of suffixes).","commit_id":"715e7c134a55da13089d9d3d464811c2fd8ac7e3"},{"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":"16472ea34308af85101112ff7b495e381e15c52e","unresolved":false,"context_lines":[{"line_number":1224,"context_line":"        # NOTE(sigmavirus24): PyPy only added support for the SOABI config var"},{"line_number":1225,"context_line":"        # to sysconfig in 2015. That was well after 2.2.1 was published in the"},{"line_number":1226,"context_line":"        # Ubuntu 14.04 archive."},{"line_number":1227,"context_line":"        for suffix, _, _ in get_suffixes():"},{"line_number":1228,"context_line":"            if suffix.startswith(\u0027.pypy\u0027) and suffix.endswith(\u0027.so\u0027):"},{"line_number":1229,"context_line":"                soabi \u003d suffix.split(\u0027.\u0027)[1]"},{"line_number":1230,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":4,"id":"4c0ea3b0_e88180bc","line":1227,"range":{"start_line":1227,"start_character":12,"end_line":1227,"end_character":24},"in_reply_to":"7c1742a2_2af298b4","updated":"2023-06-02 18:47:12.000000000","message":"Done","commit_id":"715e7c134a55da13089d9d3d464811c2fd8ac7e3"}]}
