)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"6652b34eee2e93ae54f379a6c109ed1fcaa016cf","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Stop enforcing py2 requirements match starting with U"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Ussuri and later will be Python 3 only. This updates our requirements"},{"line_number":10,"context_line":"checks to only enforce local requirements match the exact global"},{"line_number":11,"context_line":"requirements for the py3.5 and later entries."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_6f14454e","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":38},"updated":"2019-11-12 01:25:53.000000000","message":"This isn\u0027t mandated right?   A project *may* choose to drop py2 support during U","commit_id":"ffc55d352a009b178f4ba4bf9c8e36060307d587"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f29247474a9e7dd04f56fe1ecb88c6a677128ce8","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Stop enforcing py2 requirements match starting with U"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Ussuri and later will be Python 3 only. This updates our requirements"},{"line_number":10,"context_line":"checks to only enforce local requirements match the exact global"},{"line_number":11,"context_line":"requirements for the py3.5 and later entries."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_b23700b0","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":38},"in_reply_to":"3fa7e38b_6f14454e","updated":"2019-11-12 02:20:10.000000000","message":"Technically yes, they don\u0027t have to. But any using common libraries like oslo will likely be forced to. I can update the statement to \"Ussuri and later may be Python 3 only\" if you think the commit message will cause confusion.","commit_id":"ffc55d352a009b178f4ba4bf9c8e36060307d587"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"1de740e82d40cec95ba1097f80855c51c6ec10db","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Stop enforcing py2 requirements match starting with U"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Ussuri and later will be Python 3 only. This updates our requirements"},{"line_number":10,"context_line":"checks to only enforce local requirements match the exact global"},{"line_number":11,"context_line":"requirements for the py3.5 and later entries."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_d2eddcf0","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":38},"in_reply_to":"3fa7e38b_b23700b0","updated":"2019-11-12 02:50:02.000000000","message":"Hmmm OK I\u0027m not sure I like the idea of oslo forcing projects to be py3 only, but neither do I like the idea of projects forcing olso to carry py2 code :(\n\nIf we need to respin this review then yes please to updating the commit message but only if we\u0027re re-spinning.","commit_id":"ffc55d352a009b178f4ba4bf9c8e36060307d587"}],"openstack_requirements/tests/test_check.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"556d769bcf690cf9025b89cedcaadbd3c1c03c56","unresolved":false,"context_lines":[{"line_number":257,"context_line":"            )"},{"line_number":258,"context_line":"        )"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def test_new_item_matches_global_list_with_extra(self):"},{"line_number":261,"context_line":"        # If the global list has multiple entries for an item with"},{"line_number":262,"context_line":"        # different \"extra\" specifiers, the values must all be in the"},{"line_number":263,"context_line":"        # requirements file."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_e6edbaf0","line":260,"updated":"2019-11-12 12:00:44.000000000","message":"FWIW, this is the allow_3_only\u003dFalse matching case.","commit_id":"ffc55d352a009b178f4ba4bf9c8e36060307d587"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"556d769bcf690cf9025b89cedcaadbd3c1c03c56","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            )"},{"line_number":283,"context_line":"        )"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def test_new_item_missing_extra_line(self):"},{"line_number":286,"context_line":"        # If the global list has multiple entries for an item with"},{"line_number":287,"context_line":"        # different \"extra\" specifiers, the values must all be in the"},{"line_number":288,"context_line":"        # requirements file."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_a6b902ed","line":285,"updated":"2019-11-12 12:00:44.000000000","message":"And this is the mismatching case. So the unit tests below illustrate the prior test does still succeed, and this unit test will also then succeed by setting the flag.","commit_id":"ffc55d352a009b178f4ba4bf9c8e36060307d587"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"6652b34eee2e93ae54f379a6c109ed1fcaa016cf","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            )"},{"line_number":332,"context_line":"        )"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def test_new_item_matches_py3_allowed_with_py2(self):"},{"line_number":335,"context_line":"        # If the global list has multiple entries for an item but the branch"},{"line_number":336,"context_line":"        # allows python 3 only, then only the py3 entries need to match. But"},{"line_number":337,"context_line":"        # py2 should still be allowed."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_6f3be5e9","line":334,"updated":"2019-11-12 01:25:53.000000000","message":"I\u0027m not entirely convinced this test it right.\n\nCertainly I\u0027m having trouble getting it to fail locally.","commit_id":"ffc55d352a009b178f4ba4bf9c8e36060307d587"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7d4f1ba51ff760438e92b54104bcc3fd426fdd6e","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            )"},{"line_number":332,"context_line":"        )"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def test_new_item_matches_py3_allowed_with_py2(self):"},{"line_number":335,"context_line":"        # If the global list has multiple entries for an item but the branch"},{"line_number":336,"context_line":"        # allows python 3 only, then only the py3 entries need to match. But"},{"line_number":337,"context_line":"        # py2 should still be allowed."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_b2a140ab","line":334,"in_reply_to":"3fa7e38b_12e4d40d","updated":"2019-11-12 03:01:46.000000000","message":"Correct, this change will allow projects that wish to drop py2 to be able to only track the py3 requirements so as more and more dependencies drop py2, wish is going to start happening a lot, we won\u0027t constantly be breaking everyone\u0027s gate when we add caps that don\u0027t apply to them.","commit_id":"ffc55d352a009b178f4ba4bf9c8e36060307d587"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"43e40011d4b18727c9cf520a0bfbdc4cd32818cb","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            )"},{"line_number":332,"context_line":"        )"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def test_new_item_matches_py3_allowed_with_py2(self):"},{"line_number":335,"context_line":"        # If the global list has multiple entries for an item but the branch"},{"line_number":336,"context_line":"        # allows python 3 only, then only the py3 entries need to match. But"},{"line_number":337,"context_line":"        # py2 should still be allowed."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_f356d72a","line":334,"in_reply_to":"3fa7e38b_12e4d40d","updated":"2019-11-12 14:59:05.000000000","message":"Yeah, so for context we added separate caps for Sphinx on Python 2 and Python 3, and the result was that every repo had to update doc/requirements.txt, even though almost all repos are running docs on Python 3 only, otherwise their requirements job was broken.\n\nWithout this change, we\u0027d be facing the same problem but on a massive scale as large numbers of projects switched to Python 3 only (so they don\u0027t care about Python 2 caps) while large numbers of dependencies did the same (thus requiring separate caps in global requirements to support projects like Swift that are not dropping Python 2).","commit_id":"ffc55d352a009b178f4ba4bf9c8e36060307d587"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"39aae346a3bef3ef8f4a2ed05b86193209561992","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            )"},{"line_number":332,"context_line":"        )"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def test_new_item_matches_py3_allowed_with_py2(self):"},{"line_number":335,"context_line":"        # If the global list has multiple entries for an item but the branch"},{"line_number":336,"context_line":"        # allows python 3 only, then only the py3 entries need to match. But"},{"line_number":337,"context_line":"        # py2 should still be allowed."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_62fbccbd","line":334,"in_reply_to":"3fa7e38b_30744c9c","updated":"2019-11-14 15:31:26.000000000","message":"It\u0027s the projects *not* keeping py2 support that would break without this. (They\u0027d break because Oslo is also switching to python3-only, so we will need separate v2/v3 caps for Oslo - in the same way we already have for Sphinx - to enable Swift to keep using Oslo in python2.)","commit_id":"ffc55d352a009b178f4ba4bf9c8e36060307d587"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f29247474a9e7dd04f56fe1ecb88c6a677128ce8","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            )"},{"line_number":332,"context_line":"        )"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def test_new_item_matches_py3_allowed_with_py2(self):"},{"line_number":335,"context_line":"        # If the global list has multiple entries for an item but the branch"},{"line_number":336,"context_line":"        # allows python 3 only, then only the py3 entries need to match. But"},{"line_number":337,"context_line":"        # py2 should still be allowed."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_7241880a","line":334,"in_reply_to":"3fa7e38b_6f3be5e9","updated":"2019-11-12 02:20:10.000000000","message":"What are you attempting to fail? This should always succeed. It\u0027s a bit redundant with the allow_3_only default, but I felt it was better to have an explicit test to validate that the behavior was no different for those that choose not to remove the py2 entries.","commit_id":"ffc55d352a009b178f4ba4bf9c8e36060307d587"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"1de740e82d40cec95ba1097f80855c51c6ec10db","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            )"},{"line_number":332,"context_line":"        )"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def test_new_item_matches_py3_allowed_with_py2(self):"},{"line_number":335,"context_line":"        # If the global list has multiple entries for an item but the branch"},{"line_number":336,"context_line":"        # allows python 3 only, then only the py3 entries need to match. But"},{"line_number":337,"context_line":"        # py2 should still be allowed."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_12e4d40d","line":334,"in_reply_to":"3fa7e38b_7241880a","updated":"2019-11-12 02:50:02.000000000","message":"I misunderstood what it was checking.  I was expecting that if I changed ``allow_3_only\u003dTrue`` to False it\u0027d fail (and the other test does.   Then I thought it\u0027d fail if the py2 requirements were different between the project and global_reqs.  But neither of these cause failures.\n\nSo the point is to show that even on branches where py3_only is OK having py2 requirements wont cause requirements-check to fail.  Correct?","commit_id":"ffc55d352a009b178f4ba4bf9c8e36060307d587"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"4822559df1693dc776c0a76e7ce0fb47a8fd64f1","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            )"},{"line_number":332,"context_line":"        )"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    def test_new_item_matches_py3_allowed_with_py2(self):"},{"line_number":335,"context_line":"        # If the global list has multiple entries for an item but the branch"},{"line_number":336,"context_line":"        # allows python 3 only, then only the py3 entries need to match. But"},{"line_number":337,"context_line":"        # py2 should still be allowed."}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_30744c9c","line":334,"in_reply_to":"3fa7e38b_f356d72a","updated":"2019-11-13 19:11:37.000000000","message":"yeah, doc/requirements.txt is main candidate for this due to sphinx req. Projects keeping py2 support keep having py27 requirement also which will match g-r because nobody will change those requirements for py27 in projects requirements file.","commit_id":"ffc55d352a009b178f4ba4bf9c8e36060307d587"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"39aae346a3bef3ef8f4a2ed05b86193209561992","unresolved":false,"context_lines":[{"line_number":361,"context_line":"        # If the global list has multiple entries for an item but the branch"},{"line_number":362,"context_line":"        # allows python 3 only, then only the py3 entries need to match."},{"line_number":363,"context_line":"        r_content \u003d textwrap.dedent(\"\"\""},{"line_number":364,"context_line":"        name\u003e\u003d1.5;python_version\u003d\u003d\u00273.5\u0027"},{"line_number":365,"context_line":"        \"\"\")"},{"line_number":366,"context_line":"        reqs \u003d ["},{"line_number":367,"context_line":"            r"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_e20fbcdd","line":364,"updated":"2019-11-14 15:31:26.000000000","message":"Actually, I just realised this isn\u0027t sufficient. If python3-only projects have to update their requirements.txt from:\n\n  name\u003e\u003d1.5\n\nto\n\n  name\u003e\u003d1.5;python_version\u003e\u003d\u00273.5\u0027\n\nthen that\u0027s still a change that will require ~every project to update their requirements.txt to avoid breakage. What we really want is for it to still work when this line is just:\n\n  name\u003e\u003d1.5","commit_id":"e2d885169e03e19364d7b0ab4809154f91245593"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9084c3836608910cfa1341c7b91a9af700a6cbd0","unresolved":false,"context_lines":[{"line_number":361,"context_line":"        # If the global list has multiple entries for an item but the branch"},{"line_number":362,"context_line":"        # allows python 3 only, then only the py3 entries need to match."},{"line_number":363,"context_line":"        r_content \u003d textwrap.dedent(\"\"\""},{"line_number":364,"context_line":"        name\u003e\u003d1.5;python_version\u003d\u003d\u00273.5\u0027"},{"line_number":365,"context_line":"        \"\"\")"},{"line_number":366,"context_line":"        reqs \u003d ["},{"line_number":367,"context_line":"            r"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_37142241","line":364,"in_reply_to":"3fa7e38b_5402fc3f","updated":"2019-11-15 15:07:56.000000000","message":"Yeah, probably good to have that test coverage. Updated.","commit_id":"e2d885169e03e19364d7b0ab4809154f91245593"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"fd19267daf5397163940e5fb7195de43710633d8","unresolved":false,"context_lines":[{"line_number":361,"context_line":"        # If the global list has multiple entries for an item but the branch"},{"line_number":362,"context_line":"        # allows python 3 only, then only the py3 entries need to match."},{"line_number":363,"context_line":"        r_content \u003d textwrap.dedent(\"\"\""},{"line_number":364,"context_line":"        name\u003e\u003d1.5;python_version\u003d\u003d\u00273.5\u0027"},{"line_number":365,"context_line":"        \"\"\")"},{"line_number":366,"context_line":"        reqs \u003d ["},{"line_number":367,"context_line":"            r"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_5402fc3f","line":364,"in_reply_to":"3fa7e38b_c2b3a009","updated":"2019-11-15 14:56:00.000000000","message":"Oh, good :)\n\nIt would be nice if we had a test to check that.","commit_id":"e2d885169e03e19364d7b0ab4809154f91245593"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"b81e091c499fab083f0f5e2f26588e2ab76720a8","unresolved":false,"context_lines":[{"line_number":361,"context_line":"        # If the global list has multiple entries for an item but the branch"},{"line_number":362,"context_line":"        # allows python 3 only, then only the py3 entries need to match."},{"line_number":363,"context_line":"        r_content \u003d textwrap.dedent(\"\"\""},{"line_number":364,"context_line":"        name\u003e\u003d1.5;python_version\u003d\u003d\u00273.5\u0027"},{"line_number":365,"context_line":"        \"\"\")"},{"line_number":366,"context_line":"        reqs \u003d ["},{"line_number":367,"context_line":"            r"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_c2b3a009","line":364,"in_reply_to":"3fa7e38b_e20fbcdd","updated":"2019-11-14 15:34:41.000000000","message":"That last case will still work. If there is no specific python_version, then the requirement will be checked and it will expect it to be present in both local requirements and global-requirements. The evaluation only happens when a python_version is provided, then there is a check that the given version matches the provided runtime version.\n\nWe could actually raise that provided runtime version to 3.6, but I didn\u0027t think we wanted to go that far.","commit_id":"e2d885169e03e19364d7b0ab4809154f91245593"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"10b81464d1981ffb73f3f72ad32cd9a4f7f62196","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        # allows python 3 only, then only the py3 entries need to match."},{"line_number":337,"context_line":"        # Requirements without a python_version marker should always be used."},{"line_number":338,"context_line":"        r_content \u003d textwrap.dedent(\"\"\""},{"line_number":339,"context_line":"        name\u003e\u003d1.5;python_version\u003d\u003d\u00273.5\u0027"},{"line_number":340,"context_line":"        other-name"},{"line_number":341,"context_line":"        \"\"\")"},{"line_number":342,"context_line":"        reqs \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_a4ed13b9","line":339,"range":{"start_line":339,"start_character":17,"end_line":339,"end_character":39},"updated":"2019-11-20 06:45:36.000000000","message":"I meant we should test without this bit (I tried and it fails).\n\nThe situation we want to handle is where both the project\u0027s requirements.txt and the global-requirements list currently have:\n\n  some-dep\u003e\u003d1.0\n\nand now we\u0027re going to cap the python2 dep, so global-requirements changes to:\n\n  some-dep\u003e\u003d1.0;python_version\u003e\u003d\u00273.6\u0027\n  some-dep\u003e\u003d1.0,\u003c\u003d2.0;python_version\u003d\u003d\u00272.7\u0027\n\nwe want this to Just Work without *any* changes to the project\u0027s requirements.txt.\n\nAs it stands we would have to update every project\u0027s requirements.txt to:\n\n  some-dep\u003e\u003d1.0;python_version\u003e\u003d3.6\n\nwhich is better than having to also add the pointless py27 line as well, but not nearly as good as not having to update every project at all.","commit_id":"3d9c4ca96c34b30c5ae19768ea8d768e896c3696"},{"author":{"_account_id":14288,"name":"Matthew Thode","display_name":"prometheanfire","email":"mthode@mthode.org","username":"prometheanfire"},"change_message_id":"2140dc2c50849f67e8e6cfe3eb2d25725ba6a932","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        # allows python 3 only, then only the py3 entries need to match."},{"line_number":337,"context_line":"        # Requirements without a python_version marker should always be used."},{"line_number":338,"context_line":"        r_content \u003d textwrap.dedent(\"\"\""},{"line_number":339,"context_line":"        name\u003e\u003d1.5;python_version\u003d\u003d\u00273.5\u0027"},{"line_number":340,"context_line":"        other-name"},{"line_number":341,"context_line":"        \"\"\")"},{"line_number":342,"context_line":"        reqs \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_346867b8","line":339,"updated":"2019-11-20 17:36:04.000000000","message":"pip has been stupid in the past and specifying python 3 as well prevents us from shooting ourselves in the foot, personally I prefer Zane\u0027s version, though once py2 is FULLY dropped we could switch to the simple version.","commit_id":"3d9c4ca96c34b30c5ae19768ea8d768e896c3696"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1db5cf8e9bbc4fc3713cafba50fcbeeee008dde5","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        # allows python 3 only, then only the py3 entries need to match."},{"line_number":337,"context_line":"        # Requirements without a python_version marker should always be used."},{"line_number":338,"context_line":"        r_content \u003d textwrap.dedent(\"\"\""},{"line_number":339,"context_line":"        name\u003e\u003d1.5;python_version\u003d\u003d\u00273.5\u0027"},{"line_number":340,"context_line":"        other-name"},{"line_number":341,"context_line":"        \"\"\")"},{"line_number":342,"context_line":"        reqs \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_ca660e2a","line":339,"in_reply_to":"3fa7e38b_346867b8","updated":"2019-11-20 20:44:49.000000000","message":"I agree, it would be good if we didn\u0027t have to have the py3 markers included. We can try to test that for a future patch, but I think that will take a bit more refactoring. And we will need to try various version of pip to make sure it gets handled right with all supported versions out there.","commit_id":"3d9c4ca96c34b30c5ae19768ea8d768e896c3696"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d2fc7a10486a71274b6d6762b85a9731da63d036","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        # allows python 3 only, then only the py3 entries need to match."},{"line_number":337,"context_line":"        # Requirements without a python_version marker should always be used."},{"line_number":338,"context_line":"        r_content \u003d textwrap.dedent(\"\"\""},{"line_number":339,"context_line":"        name\u003e\u003d1.5;python_version\u003d\u003d\u00273.5\u0027"},{"line_number":340,"context_line":"        other-name"},{"line_number":341,"context_line":"        \"\"\")"},{"line_number":342,"context_line":"        reqs \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_1151bd30","line":339,"range":{"start_line":339,"start_character":17,"end_line":339,"end_character":39},"in_reply_to":"3fa7e38b_a4ed13b9","updated":"2019-11-20 17:27:40.000000000","message":"I think we only need to add the python2 version cap not py3 but not sure it that conflict from requirement installation?\n\n  some-dep\u003e\u003d1.0\n\nTO\n\n  some-dep\u003e\u003d1.0\n  some-dep\u003e\u003d1.0,\u003c\u003d2.0;python_version\u003d\u003d\u00272.7\u0027","commit_id":"3d9c4ca96c34b30c5ae19768ea8d768e896c3696"}],"playbooks/files/project-requirements-change.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"e9c42676d6a9b50248e42f79a1014e40e6979fed","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from openstack_requirements import requirement  # noqa"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"PYTHON_3_BRANCH \u003d re.compile(r\u0027^stable\\/[u-z].*\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def run_command(cmd):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_2285d459","line":33,"updated":"2019-11-14 15:21:43.000000000","message":"AFAIK there are no open stable branches before Ocata. Should we future-proof this more by doing [u-za-n]? (IOW how confident are we that python 2 dependencies will be removed from g-r by Z.)","commit_id":"e2d885169e03e19364d7b0ab4809154f91245593"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"af06ab10e66ead98bcf6d660286655cb245fe1d4","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from openstack_requirements import requirement  # noqa"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"PYTHON_3_BRANCH \u003d re.compile(r\u0027^stable\\/[u-z].*\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def run_command(cmd):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_60d7f923","line":33,"in_reply_to":"3fa7e38b_2285d459","updated":"2019-11-20 22:58:35.000000000","message":"That isn\u0027t quite right.  Older stable branches are *open* they\u0027re just not maintained.\n\nI\u0027d rather leave this as is and worry about what happens after Z ... after Z I mean we *could* move away from alphabetical series names at that point","commit_id":"e2d885169e03e19364d7b0ab4809154f91245593"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1619b894d9aec2b2f8a8773c071273cb6ba3571b","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from openstack_requirements import requirement  # noqa"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"PYTHON_3_BRANCH \u003d re.compile(r\u0027^stable\\/[u-z].*\u0027)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"def run_command(cmd):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_e2281c34","line":33,"in_reply_to":"3fa7e38b_2285d459","updated":"2019-11-14 15:31:46.000000000","message":"We could, and I had actually thought about doing something more inclusive like that. But I thought it might be better to wait until we have naming sorted out first (though I don\u0027t expect it to change *that* much).\n\nBut I was also thinking about the fact that we won\u0027t get too far into wrapping the alphabet before all of this py2/py3 handling is no longer an issue because most of the py2 support will age out by then.\n\nAll that said, easy enough to update that regex as a follow up if we decide we want to handle more than these last few releases.","commit_id":"e2d885169e03e19364d7b0ab4809154f91245593"}]}
