)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"4e8f7a8dfe7536027ba8bf3363d4c1f739244a56","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"652553dd_d69b46c7","updated":"2025-10-24 20:04:18.000000000","message":"-1 for the test_requirements.py comment. I think the test case is actually broken depending on the version of python due to packaging lib behaviors. The test-requirements.txt comment is more of a \"do we need to do something about this?\" call out. I\u0027m not sure as it seems to work other than logging an error in the log.","commit_id":"4180700879e120c93d117a2d4b47503b655a7191"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f9bef8854871205fabdcfbe9d1470dd23eeb3ede","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"dcdba681_805843ac","updated":"2025-10-28 18:12:57.000000000","message":"recheck test jobs shoudl be fixed now","commit_id":"adbe935a4f3736f10f29a4021e4d65009b3bb8f2"}],"pbr/tests/functional/test_requirements.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"4e8f7a8dfe7536027ba8bf3363d4c1f739244a56","unresolved":true,"context_lines":[{"line_number":165,"context_line":"                packaging.requirements.Requirement(s)"},{"line_number":166,"context_line":"                for s in generated_requirements[section]"},{"line_number":167,"context_line":"            ]"},{"line_number":168,"context_line":"            self.assertEqual(exp_parsed, gen_parsed)"}],"source_content_type":"text/x-python","patch_set":1,"id":"0012d822_0ad379e5","line":168,"updated":"2025-10-24 20:04:18.000000000","message":"I think this assertion is failing because package.requirements.Requirement does not implement equality methods in the old python2.7 capable version: https://github.com/pypa/packaging/blob/20.0/packaging/requirements.py#L82-L145\n\nAn alternative is probably to put the string representation of these requirements into the lists that we assert equality on. Something like\n\n```\nexp_parsed \u003d [\n    str(packaging.requirements.Requirement(s)) for s in expected\n]\ngen_parsed \u003d [\n    str(packaging.requirements.Requirement(s))\n    for s in generated_requirements[section]\n]\n```","commit_id":"4180700879e120c93d117a2d4b47503b655a7191"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"70f1f6929c967e7d05b095409a80f2249e352b2d","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                packaging.requirements.Requirement(s)"},{"line_number":166,"context_line":"                for s in generated_requirements[section]"},{"line_number":167,"context_line":"            ]"},{"line_number":168,"context_line":"            self.assertEqual(exp_parsed, gen_parsed)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f840b48_8f0ae8d5","line":168,"in_reply_to":"0012d822_0ad379e5","updated":"2025-10-28 15:52:13.000000000","message":"Thanks, this was helpful 🙏","commit_id":"4180700879e120c93d117a2d4b47503b655a7191"}],"test-requirements.txt":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"4e8f7a8dfe7536027ba8bf3363d4c1f739244a56","unresolved":true,"context_lines":[{"line_number":15,"context_line":"testtools\u003e\u003d2.2.0 # MIT"},{"line_number":16,"context_line":"virtualenv\u003e\u003d20.0.3 # MIT"},{"line_number":17,"context_line":"coverage!\u003d4.4,\u003e\u003d4.0 # Apache-2.0"},{"line_number":18,"context_line":"packaging\u003e\u003d20.0 # Apache-2.0"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# optionally exposed by distutils commands"},{"line_number":21,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2,\u003c2.0.0;python_version\u003d\u003d\u00272.7\u0027 # BSD"}],"source_content_type":"text/plain","patch_set":1,"id":"ec885913_b97bde60","line":18,"updated":"2025-10-24 20:04:18.000000000","message":"packaging depends on importlib-resources which on python2.7 installs importlib-resources 3.3.1. This then produces this but of error in the failing test case for the current patchset:\n\n```\n  Compiling /tmp/tmpMOXpOb/tmpJ4KcXl/lib/python2.7/site-packages/importlib_resources/_py3.py ...\n    File \"/tmp/tmpMOXpOb/tmpJ4KcXl/lib/python2.7/site-packages/importlib_resources/_py3.py\", line 23\n      def open_binary(package: Package, resource: Resource) -\u003e BinaryIO:\n                             ^\n  SyntaxError: invalid syntax\n\n```\n\nThis version of importlib-resources does support python2.7 according to the pypi metadata and has a _py2.py file in addition to the _py3.py file that causes the error. It isn\u0027t clear to me if this is actually a problem or if something is complaining but then proceeding and will use the _py2.py implementation instead. I just wanted to call it out in case we need to manually downrev the importlib-resources versions for python2.7 specifically.\n\nYou can see the pasted error above here: https://zuul.opendev.org/t/openstack/build/aaaf99096cd64ed0bd427fa8c62d39be/log/job-output.txt#5921-5925","commit_id":"4180700879e120c93d117a2d4b47503b655a7191"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e88a00cc154a6cfde306c3788524eb73d5dc9cb6","unresolved":true,"context_lines":[{"line_number":15,"context_line":"testtools\u003e\u003d2.2.0 # MIT"},{"line_number":16,"context_line":"virtualenv\u003e\u003d20.0.3 # MIT"},{"line_number":17,"context_line":"coverage!\u003d4.4,\u003e\u003d4.0 # Apache-2.0"},{"line_number":18,"context_line":"packaging\u003e\u003d20.0 # Apache-2.0"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# optionally exposed by distutils commands"},{"line_number":21,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2,\u003c2.0.0;python_version\u003d\u003d\u00272.7\u0027 # BSD"}],"source_content_type":"text/plain","patch_set":1,"id":"0f490e36_589ddbed","line":18,"in_reply_to":"ec885913_b97bde60","updated":"2025-10-28 15:48:51.000000000","message":"\u003e packaging depends on importlib-resources\n\nDoes it? I tested on a local Ubuntu 18.04 VM and it doesn\u0027t seem like it:\n\n```\n$ virtualenv venv\n$ source venv/bin/activate\n$ pip install \u0027packaging\u003e\u003d20.0\u0027 -U\n$ cat venv/lib/python2.7/site-packages/packaging-20.9.dist-info/METADATA  | grep Requires-Dist\nRequires-Dist: pyparsing (\u003e\u003d2.0.2)\n```","commit_id":"4180700879e120c93d117a2d4b47503b655a7191"}]}
