)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"1379670cbd3368de2513e9cfb6e097bb370d35e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7d78f0ae_6b9602f2","updated":"2024-01-24 02:10:46.000000000","message":"Can we re-order this series?\n\nI feel like removing update-requirements and six are fine to land now, the other 2 (including this one) need consensus.","commit_id":"85f8ef327a603ac51eeb0a1edfe9e23df326ca9d"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"66c2e044240013ccbf943e1be14f77ac1f34ed9f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5a48bf22_bd18b15a","updated":"2024-01-22 02:53:33.000000000","message":"I\u0027m \"on the fence\" as the preferred format for constraints. Having said that I\u0027m not a firm +0 on the idea.  I won\u0027t block something like this merging, I\u0027ll review etc but I\u0027m not an advocate.  As I\u0027ve stated before I prefer the simple verbose for as it stands at the moment.\n\nWith all that said I think we need to cover more tests / scenarios.\n\n---\nalabaster\u003d\u003d\u003d0.7.13;python_version\u003d\u003d\u00273.8\u0027\nalabaster\u003d\u003d\u003d0.7.16;python_version\u003e\u003d\u00273.9\u0027\n---\n\n---\nasync-timeout\u003d\u003d\u003d4.0.3;python_version\u003d\u003d\u00273.10\u0027\nasync-timeout\u003d\u003d\u003d4.0.3;python_version\u003d\u003d\u00273.8\u0027\nasync-timeout\u003d\u003d\u003d4.0.3;python_version\u003d\u003d\u00273.9\u0027\n# NOT needed on pythons after 3.10\n---\n\n---\nimportlib-metadata\u003d\u003d\u003d6.2.1;python_version\u003d\u003d\u00273.8\u0027\nimportlib-metadata\u003d\u003d\u003d6.2.1;python_version\u003d\u003d\u00273.9\u0027\nimportlib-metadata\u003d\u003d\u003d6.11.0;python_version\u003e\u003d\u00273.10\u0027\n---\n\nI feel like there have been times when we\u0027ve needed \n\n--\nlibrary\u003d\u003d\u003dversion_1;python_version\u003c\u003d3.10\nlibrary\u003d\u003d\u003dversion_2;python_version\u003e\u003d3.11\n---\n\nbut I can\u0027t find that now.\n\nAlso longer term we\u0027ll need to think about what the constraints file and generation looks like for SLURP upgrades.  For example if we \"skip\" python versions, generate constraints for 3.8, 3.10, 3.11, 3.12[1], how would we want that specified.\n\nI don\u0027t have answers to any of those questions :/\n\n[1] Totally making up the python versions","commit_id":"85f8ef327a603ac51eeb0a1edfe9e23df326ca9d"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"e019799c9e744b5d28581a4853d09116b9cb9938","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7b1b238b_cc1e2413","in_reply_to":"21784be6_f36bd385","updated":"2024-01-24 02:12:13.000000000","message":"Yup that\u0027d work for me.","commit_id":"85f8ef327a603ac51eeb0a1edfe9e23df326ca9d"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"d0ff0ce0e6902d1855d07449b963108a9a62af81","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"21784be6_f36bd385","in_reply_to":"5a48bf22_bd18b15a","updated":"2024-01-22 12:50:41.000000000","message":"So how about we drop the \"\u003c\u003d\" part and use explicit \"\u003d\u003d\" matches for all python versions except the highest one that we\u0027re generating constraints for and just have \"\u003e\u003d\" for these. That should be able to cover all your examples, but still has the upside that constraints will also be applied to newer python versions, which I think will help both forward testing with new versions not covered by the PTI yes, as well as scenarios where stable branch deployments might want to use newer python.","commit_id":"85f8ef327a603ac51eeb0a1edfe9e23df326ca9d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a72288d43530c20b60d6f7e21e28cf1521e971b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"fe005eed_c83cb63b","updated":"2025-04-17 09:55:21.000000000","message":"Neat. I\u0027d forgotten about this 😅","commit_id":"9da6fcd60931cae265282a2399404fc3f8993aa6"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"727b1eeb36b2f51b155090b5124e212459417bf4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"cc70eab7_57a27cfe","updated":"2025-04-16 21:38:51.000000000","message":"Saw this sitting approved but unmerged because the parent patch was abandoned.","commit_id":"9da6fcd60931cae265282a2399404fc3f8993aa6"}],"openstack_requirements/tests/test_generate.py":[{"author":{"_account_id":14288,"name":"Matthew Thode","display_name":"prometheanfire","email":"mthode@mthode.org","username":"prometheanfire"},"change_message_id":"29a53061ecfeac86659819faead3032d606a7859","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        freeze_34 \u003d (\u00273.4\u0027, [(\u0027fixtures\u0027, \u00271.5.0\u0027)])"},{"line_number":91,"context_line":"        self.assertEqual("},{"line_number":92,"context_line":"            [\"fixtures\u003d\u003d\u003d1.2.0;python_version\u003c\u003d\u00272.7\u0027\\n\","},{"line_number":93,"context_line":"             \"fixtures\u003d\u003d\u003d1.5.0;python_version\u003e\u003d\u00273.4\u0027\\n\"],"},{"line_number":94,"context_line":"            list(generate._combine_freezes([freeze_27, freeze_34])))"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_duplicate_pythons(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"13bcf3a2_3624c49b","line":93,"updated":"2024-01-01 19:19:37.000000000","message":"Do we want this to be a new test instead of a changed test?","commit_id":"85f8ef327a603ac51eeb0a1edfe9e23df326ca9d"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c74d3ba0c23f346db0e0a46a5d17f749afd51ecb","unresolved":true,"context_lines":[{"line_number":90,"context_line":"        freeze_34 \u003d (\u00273.4\u0027, [(\u0027fixtures\u0027, \u00271.5.0\u0027)])"},{"line_number":91,"context_line":"        self.assertEqual("},{"line_number":92,"context_line":"            [\"fixtures\u003d\u003d\u003d1.2.0;python_version\u003c\u003d\u00272.7\u0027\\n\","},{"line_number":93,"context_line":"             \"fixtures\u003d\u003d\u003d1.5.0;python_version\u003e\u003d\u00273.4\u0027\\n\"],"},{"line_number":94,"context_line":"            list(generate._combine_freezes([freeze_27, freeze_34])))"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_duplicate_pythons(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"038e996b_76683e79","line":93,"updated":"2023-12-21 16:29:33.000000000","message":"This has some gap in between, so if we would have results for 3.8 and 3.10, there would be no pin at all for 3.9?\n\nI think this needs more test cases to verify the expected behavior, like with three python_versions where either pairs of freezes are equal or there are three different ones (all of these do actually occur for current u-c)","commit_id":"85f8ef327a603ac51eeb0a1edfe9e23df326ca9d"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"d0ff0ce0e6902d1855d07449b963108a9a62af81","unresolved":true,"context_lines":[{"line_number":90,"context_line":"        freeze_34 \u003d (\u00273.4\u0027, [(\u0027fixtures\u0027, \u00271.5.0\u0027)])"},{"line_number":91,"context_line":"        self.assertEqual("},{"line_number":92,"context_line":"            [\"fixtures\u003d\u003d\u003d1.2.0;python_version\u003c\u003d\u00272.7\u0027\\n\","},{"line_number":93,"context_line":"             \"fixtures\u003d\u003d\u003d1.5.0;python_version\u003e\u003d\u00273.4\u0027\\n\"],"},{"line_number":94,"context_line":"            list(generate._combine_freezes([freeze_27, freeze_34])))"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_duplicate_pythons(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"230c876c_df3f3845","line":93,"in_reply_to":"13bcf3a2_3624c49b","updated":"2024-01-22 12:50:41.000000000","message":"Well no, IIUC this test needs changing because the tested behaviour has changed. I just think additional testing is needed to cover more cases.","commit_id":"85f8ef327a603ac51eeb0a1edfe9e23df326ca9d"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"e019799c9e744b5d28581a4853d09116b9cb9938","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        freeze_34 \u003d (\u00273.4\u0027, [(\u0027fixtures\u0027, \u00271.5.0\u0027)])"},{"line_number":91,"context_line":"        self.assertEqual("},{"line_number":92,"context_line":"            [\"fixtures\u003d\u003d\u003d1.2.0;python_version\u003c\u003d\u00272.7\u0027\\n\","},{"line_number":93,"context_line":"             \"fixtures\u003d\u003d\u003d1.5.0;python_version\u003e\u003d\u00273.4\u0027\\n\"],"},{"line_number":94,"context_line":"            list(generate._combine_freezes([freeze_27, freeze_34])))"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def test_duplicate_pythons(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"4922fb45_8c87bb38","line":93,"in_reply_to":"230c876c_df3f3845","updated":"2024-01-24 02:12:13.000000000","message":"Acknowledged","commit_id":"85f8ef327a603ac51eeb0a1edfe9e23df326ca9d"}]}
