)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"8913f7169805a56d59fbdb76b77e69a74c29e0bc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b151cbfd_acc17685","updated":"2025-02-05 18:02:44.000000000","message":"The main benefit to this appears to be that we can be more selective about what gets installed in each environment rather than relying on a small number of standardized requirements files.\n\nI don\u0027t think this hurts or helps much either way and seems like a reasonable experiment if it aligns us with pypa expectations.","commit_id":"4378c733416ba1324c0e1732ef484d7bc339de86"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"b789a3a47eab4e37a19eea8839cef957ceb4b981","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"255601a3_effb8a52","updated":"2025-03-20 18:25:03.000000000","message":"thx for the update","commit_id":"9c951f9db8d6f005c26dddfd90512675a535545a"},{"author":{"_account_id":22720,"name":"Sviatoslav Sydorenko","display_name":"@webknjaz","email":"webknjaz@redhat.com","username":"webknjaz"},"change_message_id":"f3c4ab17de70b52816a2a3308bfb53401c8357dc","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"06cf34c4_2955a446","updated":"2025-03-24 19:35:28.000000000","message":"Just wanted to document explicitly that optional dependencies are not semantically equivalent to pip requirements. Extras always augment what\u0027s in the list or regular runtime requirements and cannot be used standalone.\n\nThis patch exposes the public API of installing `bindep` with additional dependencies. More specifically, the end-users are now free to expect that they can do `pip install bindep[build-docs]` etc.\n\nWhile extras have been abused like this for years, it is semantically wrong to expose test/dev deps to the general public.\n\nRequirements, OTOH, describe states of various (virtual/app/test/etc) environments and may be installed without forcing the runtime dependencies to also be installed or influence the dependency resolution.\n\nThe actual standardized equivalent does exist, though. It\u0027s defined in PEP 735 and is called dependency groups [1].\n\nThe support for dependency groups is going to land in pip 25.1 [2], but many things like tox and uv support it since the last year. Some other tools had prototypes of this (working slightly differently in some aspects) for years before. But now that it\u0027s been fully standardized and accepted, this is the way.\nThe ecosystem is still catching up in some places (pip-tools doesn\u0027t have it implemented yet, for example). But in general, this is a better replacement for requirements files that does not add externally visible consumable metadata unnecessarily.\n\n[1]: https://packaging.python.org/en/latest/specifications/dependency-groups/\n[2]: https://github.com/pypa/pip/pull/13065","commit_id":"09f16f60713cc6d00cf8226cd55ca3417e33051e"}],"doc/requirements.txt":[{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"dec32bfd23ba2689ba0776ce302dab52832f7197","unresolved":true,"context_lines":[{"line_number":2,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,!\u003d2.1.0  # BSD"},{"line_number":3,"context_line":"sphinxcontrib-programoutput  # BSD license"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"# needed because we use autodoc to document our tests in the dev docs"},{"line_number":6,"context_line":"fixtures\u003e\u003d0.3.12"}],"source_content_type":"text/plain","patch_set":7,"id":"91fb9551_1b7f76bd","side":"PARENT","line":5,"updated":"2025-03-20 17:35:36.000000000","message":"can comments like this or the ones stating the license be preserved? or is it an intentional decision we no longer need them?","commit_id":"b8eb765c27e4e63894612c815284ddbaecdbac27"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"21dcabc97c6d096cad50caf06801fdb2add72a53","unresolved":false,"context_lines":[{"line_number":2,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,!\u003d2.1.0  # BSD"},{"line_number":3,"context_line":"sphinxcontrib-programoutput  # BSD license"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"# needed because we use autodoc to document our tests in the dev docs"},{"line_number":6,"context_line":"fixtures\u003e\u003d0.3.12"}],"source_content_type":"text/plain","patch_set":7,"id":"10e1a6d7_33a3c9b4","side":"PARENT","line":5,"in_reply_to":"91fb9551_1b7f76bd","updated":"2025-03-20 18:00:28.000000000","message":"I wasn\u0027t sure if comments like that were valid inside toml list structures, but it\u0027s worth a test. Also a lot of this was OpenStack-oriented license requirement tracking from before OpenDev, though I suppose as an example we can attempt to preserve it.","commit_id":"b8eb765c27e4e63894612c815284ddbaecdbac27"}],"pyproject.toml":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"226b3ebed9f21764829a05dd3f37018bafe0bc15","unresolved":true,"context_lines":[{"line_number":63,"context_line":"    \"sphinxcontrib-programoutput\","},{"line_number":64,"context_line":"]"},{"line_number":65,"context_line":"test-cover \u003d ["},{"line_number":66,"context_line":"    \"bindep[test-unit]\","},{"line_number":67,"context_line":"    \"coverage\u003e\u003d3.6\","},{"line_number":68,"context_line":"]"},{"line_number":69,"context_line":"test-linters \u003d ["}],"source_content_type":"text/x-toml","patch_set":5,"id":"73152461_d5d74b57","line":66,"range":{"start_line":66,"start_character":5,"end_line":66,"end_character":11},"updated":"2025-03-10 17:21:16.000000000","message":"Will this lookup bindep metadata from pypi or anywhere other than the current package? I wonder if we need to use . to have it check against the current list.","commit_id":"bb3b37c31c80d8049e1bcd59e2c5c246c64ade3f"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"ae0737557970003f3954ff37ba9130ef747e773a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    \"sphinxcontrib-programoutput\","},{"line_number":64,"context_line":"]"},{"line_number":65,"context_line":"test-cover \u003d ["},{"line_number":66,"context_line":"    \"bindep[test-unit]\","},{"line_number":67,"context_line":"    \"coverage\u003e\u003d3.6\","},{"line_number":68,"context_line":"]"},{"line_number":69,"context_line":"test-linters \u003d ["}],"source_content_type":"text/x-toml","patch_set":5,"id":"ea43da59_2f29a628","line":66,"range":{"start_line":66,"start_character":5,"end_line":66,"end_character":11},"in_reply_to":"414a9899_a01ae150","updated":"2025-03-10 17:34:42.000000000","message":"Great point. The coverage job ran tests and successfully collected coverage which implies this works as intended.","commit_id":"bb3b37c31c80d8049e1bcd59e2c5c246c64ade3f"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"10e11c1b43183671dadc8c56096000c34c3d4a6a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    \"sphinxcontrib-programoutput\","},{"line_number":64,"context_line":"]"},{"line_number":65,"context_line":"test-cover \u003d ["},{"line_number":66,"context_line":"    \"bindep[test-unit]\","},{"line_number":67,"context_line":"    \"coverage\u003e\u003d3.6\","},{"line_number":68,"context_line":"]"},{"line_number":69,"context_line":"test-linters \u003d ["}],"source_content_type":"text/x-toml","patch_set":5,"id":"74aad16b_9cc993d9","line":66,"in_reply_to":"6a764c17_887d397c","updated":"2025-03-10 17:31:32.000000000","message":"That may be safest to avoid bugs when adding new deps to test-unit and not having them reflect in test-cover. At least being explicit will make it more clear the dep needs to be listed twice.","commit_id":"bb3b37c31c80d8049e1bcd59e2c5c246c64ade3f"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"15de14d8222d056ce411926cd16ead8b68a22378","unresolved":true,"context_lines":[{"line_number":63,"context_line":"    \"sphinxcontrib-programoutput\","},{"line_number":64,"context_line":"]"},{"line_number":65,"context_line":"test-cover \u003d ["},{"line_number":66,"context_line":"    \"bindep[test-unit]\","},{"line_number":67,"context_line":"    \"coverage\u003e\u003d3.6\","},{"line_number":68,"context_line":"]"},{"line_number":69,"context_line":"test-linters \u003d ["}],"source_content_type":"text/x-toml","patch_set":5,"id":"414a9899_a01ae150","line":66,"range":{"start_line":66,"start_character":5,"end_line":66,"end_character":11},"in_reply_to":"73152461_d5d74b57","updated":"2025-03-10 17:33:59.000000000","message":"Duh, no, what am I thinking? This change actually proves it works how we want, since the nested extra exists nowhere else but within the context of this change right now.","commit_id":"bb3b37c31c80d8049e1bcd59e2c5c246c64ade3f"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"69e13dae660db247b7cdd31968e4224130cb1dae","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    \"sphinxcontrib-programoutput\","},{"line_number":64,"context_line":"]"},{"line_number":65,"context_line":"test-cover \u003d ["},{"line_number":66,"context_line":"    \"bindep[test-unit]\","},{"line_number":67,"context_line":"    \"coverage\u003e\u003d3.6\","},{"line_number":68,"context_line":"]"},{"line_number":69,"context_line":"test-linters \u003d ["}],"source_content_type":"text/x-toml","patch_set":5,"id":"6a764c17_887d397c","line":66,"in_reply_to":"73152461_d5d74b57","updated":"2025-03-10 17:26:50.000000000","message":"Yes, I think it will, but I\u0027ll do some more direct testing to confirm. Unfortunately \".[whatever]\" doesn\u0027t work here like it does in the nox context, but we could expand the list out instead, worst case.","commit_id":"bb3b37c31c80d8049e1bcd59e2c5c246c64ade3f"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"69e13dae660db247b7cdd31968e4224130cb1dae","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    \"sphinxcontrib-programoutput\","},{"line_number":64,"context_line":"]"},{"line_number":65,"context_line":"test-cover \u003d ["},{"line_number":66,"context_line":"    \"bindep[test-unit]\","},{"line_number":67,"context_line":"    \"coverage\u003e\u003d3.6\","},{"line_number":68,"context_line":"]"},{"line_number":69,"context_line":"test-linters \u003d ["}],"source_content_type":"text/x-toml","patch_set":5,"id":"43a4b815_14af3c4e","line":66,"in_reply_to":"73152461_d5d74b57","updated":"2025-03-10 17:26:50.000000000","message":"Yes, I think it will. Unfortunately \".[whatever]\" doesn\u0027t work here, but we could","commit_id":"bb3b37c31c80d8049e1bcd59e2c5c246c64ade3f"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"dec32bfd23ba2689ba0776ce302dab52832f7197","unresolved":true,"context_lines":[{"line_number":72,"context_line":"test-unit \u003d ["},{"line_number":73,"context_line":"    \"fixtures\u003e\u003d0.3.12\","},{"line_number":74,"context_line":"    \"python-subunit\","},{"line_number":75,"context_line":"    \"stestr\u003e\u003d1.0.0\","},{"line_number":76,"context_line":"    \"testtools\u003e\u003d0.9.27\","},{"line_number":77,"context_line":"]"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-toml","patch_set":7,"id":"3e851491_1fd36e67","line":75,"range":{"start_line":75,"start_character":13,"end_line":75,"end_character":18},"updated":"2025-03-20 17:35:36.000000000","message":"nit: this could also be shortened to just `1` like you did for `pbr`?","commit_id":"64bb97edea125c6f81e1c4713ccd951bd172aa5e"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"21dcabc97c6d096cad50caf06801fdb2add72a53","unresolved":false,"context_lines":[{"line_number":72,"context_line":"test-unit \u003d ["},{"line_number":73,"context_line":"    \"fixtures\u003e\u003d0.3.12\","},{"line_number":74,"context_line":"    \"python-subunit\","},{"line_number":75,"context_line":"    \"stestr\u003e\u003d1.0.0\","},{"line_number":76,"context_line":"    \"testtools\u003e\u003d0.9.27\","},{"line_number":77,"context_line":"]"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-toml","patch_set":7,"id":"648b0355_21d4a545","line":75,"in_reply_to":"3e851491_1fd36e67","updated":"2025-03-20 18:00:28.000000000","message":"Can do.","commit_id":"64bb97edea125c6f81e1c4713ccd951bd172aa5e"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"b789a3a47eab4e37a19eea8839cef957ceb4b981","unresolved":false,"context_lines":[{"line_number":72,"context_line":"test-unit \u003d ["},{"line_number":73,"context_line":"    \"fixtures\u003e\u003d0.3.12\","},{"line_number":74,"context_line":"    \"python-subunit\","},{"line_number":75,"context_line":"    \"stestr\u003e\u003d1.0.0\","},{"line_number":76,"context_line":"    \"testtools\u003e\u003d0.9.27\","},{"line_number":77,"context_line":"]"},{"line_number":78,"context_line":""}],"source_content_type":"text/x-toml","patch_set":7,"id":"ca890745_4e47ec9c","line":75,"range":{"start_line":75,"start_character":13,"end_line":75,"end_character":18},"in_reply_to":"3e851491_1fd36e67","updated":"2025-03-20 18:25:03.000000000","message":"Done","commit_id":"64bb97edea125c6f81e1c4713ccd951bd172aa5e"}]}
