)]}'
{"{{cookiecutter.repo_name}}/tox.ini":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"d45c5b8b25870346bbb5098313135a0ddecccd9c","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[testenv]"},{"line_number":7,"context_line":"usedevelop \u003d True"},{"line_number":8,"context_line":"install_command \u003d pip install -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} {opts} {packages}"},{"line_number":9,"context_line":"setenv \u003d"},{"line_number":10,"context_line":"   VIRTUAL_ENV\u003d{envdir}"},{"line_number":11,"context_line":"   PYTHONWARNINGS\u003ddefault::DeprecationWarning"}],"source_content_type":"text/x-properties","patch_set":1,"id":"dfbec78f_cd47871d","line":8,"updated":"2019-05-06 20:13:29.000000000","message":"We actually have an even better way of doing this now [0]. This is good, just sharing that to spread the knowledge. There are redirects in place so we have an easier time during the master to stable transition where if requirements has not branched yet, it will just use master, otherwise use the stable requirements.\n\n[0] https://review.opendev.org/#/c/653781/","commit_id":"0753cfbe4b8f39562b0a837a20f29e342d78a1bb"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"550e4ccfc797905cb1fcbb2b1d87f96b36860e90","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[testenv]"},{"line_number":7,"context_line":"usedevelop \u003d True"},{"line_number":8,"context_line":"install_command \u003d pip install -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} {opts} {packages}"},{"line_number":9,"context_line":"setenv \u003d"},{"line_number":10,"context_line":"   VIRTUAL_ENV\u003d{envdir}"},{"line_number":11,"context_line":"   PYTHONWARNINGS\u003ddefault::DeprecationWarning"}],"source_content_type":"text/x-properties","patch_set":1,"id":"bfb3d3c7_ab70eadd","line":8,"in_reply_to":"bfb3d3c7_64ab0a89","updated":"2019-05-21 23:53:58.000000000","message":"It wouldn\u0027t be enough to update cookiecutter each cycle; we\u0027d also have to update tox.ini in all existing projects, which sounds pretty horrible.  So yeah, maybe we can programmatically detect the branch from .gitreview - @Tony, would that make sense or am I way off?","commit_id":"0753cfbe4b8f39562b0a837a20f29e342d78a1bb"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"b157d4791aa1911143974734467812965ce639fb","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[testenv]"},{"line_number":7,"context_line":"usedevelop \u003d True"},{"line_number":8,"context_line":"install_command \u003d pip install -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} {opts} {packages}"},{"line_number":9,"context_line":"setenv \u003d"},{"line_number":10,"context_line":"   VIRTUAL_ENV\u003d{envdir}"},{"line_number":11,"context_line":"   PYTHONWARNINGS\u003ddefault::DeprecationWarning"}],"source_content_type":"text/x-properties","patch_set":1,"id":"bfb3d3c7_86f39b0a","line":8,"in_reply_to":"bfb3d3c7_669307a5","updated":"2019-05-22 00:34:00.000000000","message":"/me really *should* write that email.","commit_id":"0753cfbe4b8f39562b0a837a20f29e342d78a1bb"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"0c08b0eb42b20b6c2f43776ecb7ef36b2b76439d","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[testenv]"},{"line_number":7,"context_line":"usedevelop \u003d True"},{"line_number":8,"context_line":"install_command \u003d pip install -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} {opts} {packages}"},{"line_number":9,"context_line":"setenv \u003d"},{"line_number":10,"context_line":"   VIRTUAL_ENV\u003d{envdir}"},{"line_number":11,"context_line":"   PYTHONWARNINGS\u003ddefault::DeprecationWarning"}],"source_content_type":"text/x-properties","patch_set":1,"id":"bfb3d3c7_681af17d","line":8,"in_reply_to":"bfb3d3c7_86f39b0a","updated":"2019-05-22 09:16:39.000000000","message":"Thanks Tony, that\u0027s super helpful!  Changed as requested.  And yeah, you should write that email ;-)","commit_id":"0753cfbe4b8f39562b0a837a20f29e342d78a1bb"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"cbdda24afabceb0c1efc9b1f47fc9e23b708c070","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[testenv]"},{"line_number":7,"context_line":"usedevelop \u003d True"},{"line_number":8,"context_line":"install_command \u003d pip install -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} {opts} {packages}"},{"line_number":9,"context_line":"setenv \u003d"},{"line_number":10,"context_line":"   VIRTUAL_ENV\u003d{envdir}"},{"line_number":11,"context_line":"   PYTHONWARNINGS\u003ddefault::DeprecationWarning"}],"source_content_type":"text/x-properties","patch_set":1,"id":"bfb3d3c7_8622bba3","line":8,"in_reply_to":"bfb3d3c7_ab70eadd","updated":"2019-05-22 00:06:14.000000000","message":"Please use: https://releases.openstack.org/constraints/upper/master\n\nThat\u0027s the style we decided to use for existing projects and means we can just assume that cookiecutter is for master and let the project creator handle anything more complex","commit_id":"0753cfbe4b8f39562b0a837a20f29e342d78a1bb"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"5c28122e6f3c3fb9d0b50800214108403121107d","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[testenv]"},{"line_number":7,"context_line":"usedevelop \u003d True"},{"line_number":8,"context_line":"install_command \u003d pip install -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} {opts} {packages}"},{"line_number":9,"context_line":"setenv \u003d"},{"line_number":10,"context_line":"   VIRTUAL_ENV\u003d{envdir}"},{"line_number":11,"context_line":"   PYTHONWARNINGS\u003ddefault::DeprecationWarning"}],"source_content_type":"text/x-properties","patch_set":1,"id":"bfb3d3c7_669307a5","line":8,"in_reply_to":"bfb3d3c7_ab70eadd","updated":"2019-05-22 00:23:45.000000000","message":"The TL;DR:\nWe need to do the horrible thing and update tox.ini on all branches in all projects *once*.\n\nThe slightly longer version: There are a number of ways we can do something \"smart\" and use any of the several sources of meta-data to make things work without updates.  These all rely on using a custom, in-tree install_command[1] but that creates different problems *or* we can add a feature (or features) to tox.  I\u0027m not ruling that out in the long run but it isn\u0027t going to happen now.  Either option makes OpenStack more \"special\" and harder for new contributors to just grok the first is especially bad :(\n\nThe approach of releases.o.o/constraints/upper/{$release,master} gives us the advantage that URLs are predictable, easy to remember and type *and* doesn\u0027t actually alter out existing release process at all.\n\nWhat we need to do now is:\n1. update tox.ini in all projects to use the new URL\n2. optional (but highly desired) to the same on all open stable branches\n\nActually they\u0027re both optional but desirable.\n\nThe existing release machinery will handle switching from .../master\u0027 to \u0027.../train\u0027 when we branch[2].  Yes projects teams can do that today but there isn\u0027t a substantive benefit to doing so and a small extra work.\n\n\n[1] Similar to the old tox_install.sh\n[2] We have to update .gitreview anyway, so now we can do the updates to .gitreview and tox.ini in a single commit rather then the 2 we have been doing","commit_id":"0753cfbe4b8f39562b0a837a20f29e342d78a1bb"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"c3253580689579f5c6ac46ce371209c614b81ee1","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[testenv]"},{"line_number":7,"context_line":"usedevelop \u003d True"},{"line_number":8,"context_line":"install_command \u003d pip install -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} {opts} {packages}"},{"line_number":9,"context_line":"setenv \u003d"},{"line_number":10,"context_line":"   VIRTUAL_ENV\u003d{envdir}"},{"line_number":11,"context_line":"   PYTHONWARNINGS\u003ddefault::DeprecationWarning"}],"source_content_type":"text/x-properties","patch_set":1,"id":"bfb3d3c7_64ab0a89","line":8,"in_reply_to":"dfbec78f_54a55a03","updated":"2019-05-21 16:01:39.000000000","message":"I guess we\u0027d need to parameterize the branch to do this? Unless we\u0027re just going to try to remember to update cookiecutter each cycle.","commit_id":"0753cfbe4b8f39562b0a837a20f29e342d78a1bb"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"53c2aa66a5c8d37ebb875788ba3b3bf0d80d7e8d","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[testenv]"},{"line_number":7,"context_line":"usedevelop \u003d True"},{"line_number":8,"context_line":"install_command \u003d pip install -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt} {opts} {packages}"},{"line_number":9,"context_line":"setenv \u003d"},{"line_number":10,"context_line":"   VIRTUAL_ENV\u003d{envdir}"},{"line_number":11,"context_line":"   PYTHONWARNINGS\u003ddefault::DeprecationWarning"}],"source_content_type":"text/x-properties","patch_set":1,"id":"dfbec78f_54a55a03","line":8,"in_reply_to":"dfbec78f_cd47871d","updated":"2019-05-07 13:42:07.000000000","message":"Thanks Sean. I\u0027m keen to get the best way possible into this cookiecutter repo, but I don\u0027t fully understand your comment about the redirects.  The review you link to uses https://releases.openstack.org/constraints/upper/stein but that redirects to a Stein-specific URL, whereas https://releases.openstack.org/constraints/upper/train redirects to https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt.  Shouldn\u0027t this cookiecutter repo provide a link which works out of the box at least with master, if not with all releases, rather than assuming we\u0027re in a particular release cycle?  Otherwise tox.ini needs to be updated every cycle, which is presumably going to lead to accidental breakage when people forget to do that.\n\nI can\u0027t see any way to achieve that however, so https://releases.openstack.org/constraints/upper/master seems like the best option available, but that still requires manual changes for each stable branch, which as I said risks accidental breakage.","commit_id":"0753cfbe4b8f39562b0a837a20f29e342d78a1bb"},{"author":{"_account_id":6593,"name":"Dirk Mueller","email":"dirk@dmllr.de","username":"dmllr"},"change_message_id":"ccd0182f4b74481c3f234dc5e4b301c36b61f718","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[testenv]"},{"line_number":7,"context_line":"usedevelop \u003d True"},{"line_number":8,"context_line":"install_command \u003d pip install -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} {opts} {packages}"},{"line_number":9,"context_line":"setenv \u003d"},{"line_number":10,"context_line":"   VIRTUAL_ENV\u003d{envdir}"},{"line_number":11,"context_line":"   PYTHONWARNINGS\u003ddefault::DeprecationWarning"}],"source_content_type":"text/x-properties","patch_set":2,"id":"bfb3d3c7_3cb517ce","line":8,"updated":"2019-05-22 12:04:02.000000000","message":"Ideally this constraints would be in the \"deps\" section below and we would also have a lower-constraints example section..","commit_id":"2dcf4a601d0234c74535e9c57f72bc7d84d76a1a"},{"author":{"_account_id":2394,"name":"Adam Spiers","email":"aspiers@suse.com","username":"adam.spiers"},"change_message_id":"c50a8341c9dd5136138939cf1a13659e6cb22dfd","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"[testenv]"},{"line_number":7,"context_line":"usedevelop \u003d True"},{"line_number":8,"context_line":"install_command \u003d pip install -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} {opts} {packages}"},{"line_number":9,"context_line":"setenv \u003d"},{"line_number":10,"context_line":"   VIRTUAL_ENV\u003d{envdir}"},{"line_number":11,"context_line":"   PYTHONWARNINGS\u003ddefault::DeprecationWarning"}],"source_content_type":"text/x-properties","patch_set":2,"id":"bfb3d3c7_ccac4a8e","line":8,"in_reply_to":"bfb3d3c7_3cb517ce","updated":"2019-05-22 14:11:31.000000000","message":"Thanks for the reminder, even after watching Tony\u0027s talk after getting back home I forgot about this ...\n\nhttps://youtu.be/55ZlXiuiLCo?t\u003d159\n\nConstraints moved in next patchset.  I\u0027ll submit a separate one on top adding [testenv:lower-constraints], in case it\u0027s contentious.","commit_id":"2dcf4a601d0234c74535e9c57f72bc7d84d76a1a"}]}
