)]}'
{".zuul.yaml":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"251760daed0e209fc7e4e301299d5768a9e5c133","unresolved":true,"context_lines":[{"line_number":19,"context_line":"            vars:"},{"line_number":20,"context_line":"              tox_envlist: py35-compilelibs"},{"line_number":21,"context_line":"              tox_environment:"},{"line_number":22,"context_line":"                LIBERASURECODE_REF: \u00271.4.0\u0027"},{"line_number":23,"context_line":"        - openstack-tox-py36"},{"line_number":24,"context_line":"        - openstack-tox-py37"},{"line_number":25,"context_line":"        - openstack-tox-py38"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"641f147a_40443c15","side":"PARENT","line":22,"updated":"2025-01-15 21:36:23.000000000","message":"We might want to have these overrides on our py39 job now, as a pseudo-lower-constraints job.","commit_id":"bf4e7b1d56e2dc2700b2d36101a619e6b4f47437"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2d97556ccd1e170c39fc239503bf341255f33d01","unresolved":false,"context_lines":[{"line_number":19,"context_line":"            vars:"},{"line_number":20,"context_line":"              tox_envlist: py35-compilelibs"},{"line_number":21,"context_line":"              tox_environment:"},{"line_number":22,"context_line":"                LIBERASURECODE_REF: \u00271.4.0\u0027"},{"line_number":23,"context_line":"        - openstack-tox-py36"},{"line_number":24,"context_line":"        - openstack-tox-py37"},{"line_number":25,"context_line":"        - openstack-tox-py38"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"86bf2ddc_4c098832","side":"PARENT","line":22,"in_reply_to":"641f147a_40443c15","updated":"2025-02-25 01:46:37.000000000","message":"This proved more difficult than I\u0027d hoped. We should probably still have something like that, but let\u0027s keep it in mind as follow-on work.","commit_id":"bf4e7b1d56e2dc2700b2d36101a619e6b4f47437"}],"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"cbe84ba08799d6683db43a17f1226522c1b4fb74","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Tim Burke \u003ctim.burke@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2024-12-29 10:24:50 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Drop support for Python 2.7, 3.5-3.8"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ibdcdb2fa2cc228aae77ee53d27639218d497203e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"de0e93d1_d976f053","line":7,"updated":"2025-02-20 01:15:41.000000000","message":"In light of https://governance.openstack.org/tc/reference/runtimes/2025.2.html I wonder if we should drop py39, too...","commit_id":"52b06628e061ac2feababfe509c5eea2f24d11c4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"03e32086c6fddd60c239ddbccf9fbcd31980d5c3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Tim Burke \u003ctim.burke@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2024-12-29 10:24:50 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Drop support for Python 2.7, 3.5-3.8"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ibdcdb2fa2cc228aae77ee53d27639218d497203e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"a4a1944c_2bbff1c2","line":7,"in_reply_to":"de0e93d1_d976f053","updated":"2025-04-08 15:31:23.000000000","message":"Done","commit_id":"52b06628e061ac2feababfe509c5eea2f24d11c4"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"c4b32f6554bf98833d256085324d3d3c722d40dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"b1f2e9f2_448fa313","updated":"2025-05-08 10:34:55.000000000","message":"Yup, happy to modernise the python.. but do we want to hold of on a +A until we\u0027re ready downstream or shall we just pin to an older version there?","commit_id":"e44bb1365c341bc75ffa9d6a5622afe96458b2f1"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1b215a87b39a212479dbccd42a6d3537477a0f04","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"b8b52884_adde23aa","in_reply_to":"b1f2e9f2_448fa313","updated":"2025-05-08 17:31:57.000000000","message":"We already have plenty of version pins for other requirements, I don\u0027t see why we\u0027d need to treat pyeclib specially.","commit_id":"e44bb1365c341bc75ffa9d6a5622afe96458b2f1"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"8a29e2416f289bfc6881cc6a2c57be4a6aca0d3c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"35dbbeec_b9996a55","in_reply_to":"b8b52884_adde23aa","updated":"2025-05-14 05:15:31.000000000","message":"Great point","commit_id":"e44bb1365c341bc75ffa9d6a5622afe96458b2f1"}],"Dockerfile":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"11463f6fa2756c64552a29bbfd6b81e64ae51d62","unresolved":true,"context_lines":[{"line_number":5,"context_line":"FROM quay.io/pypa/manylinux2010_x86_64:latest AS x86_64"},{"line_number":6,"context_line":"FROM quay.io/pypa/manylinux2014_aarch64:latest AS aarch64"},{"line_number":7,"context_line":"FROM quay.io/pypa/musllinux_1_1_x86_64:latest AS musl_x86_64"},{"line_number":8,"context_line":"FROM quay.io/pypa/musllinux_1_1_aarch64:latest AS musl_aarch64"},{"line_number":9,"context_line":"FROM ${TARGET}"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"LABEL org.opencontainers.image.authors\u003d\"OpenStack Swift\""}],"source_content_type":"text/x-dockerfile","patch_set":2,"id":"f04b0097_4e75b027","line":8,"updated":"2024-12-29 18:47:04.000000000","message":"Open question: should we continue pinning this (at a more-recent version) and just plan to periodically update?\n\nI was surprised by how much the images had changed since 2021 -- the musl image no longer has pip, for example, and the names for `PYTHON_VERSION` all dropped the `m`. Not sure how often they include some (mildly) breaking change like that.\n\nI think either way, we tend to have patches here so infrequently that\n- when we do, we should probably update the container base image anyway, and\n- it will have been long enough that the odds of *some* kind of breakage are reasonably high.","commit_id":"e49b8bd53a45ec0530b66f45354f223f5c8bcfdf"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"c4b32f6554bf98833d256085324d3d3c722d40dc","unresolved":true,"context_lines":[{"line_number":5,"context_line":"FROM quay.io/pypa/manylinux2010_x86_64:latest AS x86_64"},{"line_number":6,"context_line":"FROM quay.io/pypa/manylinux2014_aarch64:latest AS aarch64"},{"line_number":7,"context_line":"FROM quay.io/pypa/musllinux_1_1_x86_64:latest AS musl_x86_64"},{"line_number":8,"context_line":"FROM quay.io/pypa/musllinux_1_1_aarch64:latest AS musl_aarch64"},{"line_number":9,"context_line":"FROM ${TARGET}"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"LABEL org.opencontainers.image.authors\u003d\"OpenStack Swift\""}],"source_content_type":"text/x-dockerfile","patch_set":2,"id":"37b736cb_67e29c70","line":8,"in_reply_to":"f04b0097_4e75b027","updated":"2025-05-08 10:34:55.000000000","message":"oh will thats a good question. latest sounds good though, script remains more dynamic.\n\nI say we try and roll with it.","commit_id":"e49b8bd53a45ec0530b66f45354f223f5c8bcfdf"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8d71d8523ea4ea4db933b736b4933214e62b0fee","unresolved":true,"context_lines":[{"line_number":17,"context_line":"ARG SO_SUFFIX\u003d-pyeclib"},{"line_number":18,"context_line":"ENV SO_SUFFIX\u003d${SO_SUFFIX}"},{"line_number":19,"context_line":"ENV UID\u003d1000"},{"line_number":20,"context_line":"ENV PYTHON_VERSION\u003dcp39-cp39"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"RUN mkdir /opt/src /output"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-dockerfile","patch_set":10,"id":"98140119_52ab3122","line":20,"updated":"2025-04-07 20:37:01.000000000","message":"This should get updated if we\u0027re dropping py39...","commit_id":"4d30af8091b20b3eeb927eeacb5c06842852a87a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"03e32086c6fddd60c239ddbccf9fbcd31980d5c3","unresolved":false,"context_lines":[{"line_number":17,"context_line":"ARG SO_SUFFIX\u003d-pyeclib"},{"line_number":18,"context_line":"ENV SO_SUFFIX\u003d${SO_SUFFIX}"},{"line_number":19,"context_line":"ENV UID\u003d1000"},{"line_number":20,"context_line":"ENV PYTHON_VERSION\u003dcp39-cp39"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"RUN mkdir /opt/src /output"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-dockerfile","patch_set":10,"id":"906e898e_5bfc4139","line":20,"in_reply_to":"98140119_52ab3122","updated":"2025-04-08 15:31:23.000000000","message":"Done","commit_id":"4d30af8091b20b3eeb927eeacb5c06842852a87a"}],"README.rst":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8d71d8523ea4ea4db933b736b4933214e62b0fee","unresolved":true,"context_lines":[{"line_number":2,"context_line":"-------"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"This library provides a simple Python interface for implementing erasure codes"},{"line_number":5,"context_line":"and is known to work with Python 3.9 through 3.13. To obtain the best"},{"line_number":6,"context_line":"possible performance, the library utilizes liberasurecode, which is a C based"},{"line_number":7,"context_line":"erasure code library."},{"line_number":8,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"a2e54fb3_352d0f8c","line":5,"range":{"start_line":5,"start_character":33,"end_line":5,"end_character":36},"updated":"2025-04-07 20:37:01.000000000","message":"3.10","commit_id":"4d30af8091b20b3eeb927eeacb5c06842852a87a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"03e32086c6fddd60c239ddbccf9fbcd31980d5c3","unresolved":false,"context_lines":[{"line_number":2,"context_line":"-------"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"This library provides a simple Python interface for implementing erasure codes"},{"line_number":5,"context_line":"and is known to work with Python 3.9 through 3.13. To obtain the best"},{"line_number":6,"context_line":"possible performance, the library utilizes liberasurecode, which is a C based"},{"line_number":7,"context_line":"erasure code library."},{"line_number":8,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"73b3bee3_b97b78a9","line":5,"range":{"start_line":5,"start_character":33,"end_line":5,"end_character":36},"in_reply_to":"a2e54fb3_352d0f8c","updated":"2025-04-08 15:31:23.000000000","message":"Done","commit_id":"4d30af8091b20b3eeb927eeacb5c06842852a87a"}],"bindep.txt":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8d71d8523ea4ea4db933b736b4933214e62b0fee","unresolved":true,"context_lines":[{"line_number":10,"context_line":"liberasurecode-dev [platform:dpkg]"},{"line_number":11,"context_line":"# There\u0027s no library in CentOS 7 but Fedora and openSUSE have it."},{"line_number":12,"context_line":"liberasurecode-devel [platform:rpm !platform:centos]"},{"line_number":13,"context_line":"python3-dev [(platform:dpkg !py27)]"},{"line_number":14,"context_line":"python3-devel [(platform:rpm !py27)]"},{"line_number":15,"context_line":"zlib-devel [platform:rpm]"},{"line_number":16,"context_line":"zlib1g-dev [platform:dpkg]"}],"source_content_type":"text/plain","patch_set":10,"id":"11f8b55e_c6f18680","line":13,"range":{"start_line":13,"start_character":12,"end_line":13,"end_character":35},"updated":"2025-04-07 20:37:01.000000000","message":"Ought to be able to clean up these tags, too.","commit_id":"4d30af8091b20b3eeb927eeacb5c06842852a87a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"03e32086c6fddd60c239ddbccf9fbcd31980d5c3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"liberasurecode-dev [platform:dpkg]"},{"line_number":11,"context_line":"# There\u0027s no library in CentOS 7 but Fedora and openSUSE have it."},{"line_number":12,"context_line":"liberasurecode-devel [platform:rpm !platform:centos]"},{"line_number":13,"context_line":"python3-dev [(platform:dpkg !py27)]"},{"line_number":14,"context_line":"python3-devel [(platform:rpm !py27)]"},{"line_number":15,"context_line":"zlib-devel [platform:rpm]"},{"line_number":16,"context_line":"zlib1g-dev [platform:dpkg]"}],"source_content_type":"text/plain","patch_set":10,"id":"99658a89_b26c7915","line":13,"range":{"start_line":13,"start_character":12,"end_line":13,"end_character":35},"in_reply_to":"11f8b55e_c6f18680","updated":"2025-04-08 15:31:23.000000000","message":"Done","commit_id":"4d30af8091b20b3eeb927eeacb5c06842852a87a"}],"pack_wheel.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8d71d8523ea4ea4db933b736b4933214e62b0fee","unresolved":true,"context_lines":[{"line_number":103,"context_line":"    try:"},{"line_number":104,"context_line":"        subprocess.check_call(["},{"line_number":105,"context_line":"            sys.executable, \u0027setup.py\u0027,"},{"line_number":106,"context_line":"            \u0027bdist_wheel\u0027, \u0027-d\u0027, tmp, \u0027--py-limited-api\u003dcp39\u0027,"},{"line_number":107,"context_line":"        ], cwd\u003dsrc_dir)"},{"line_number":108,"context_line":"        files \u003d os.listdir(tmp)"},{"line_number":109,"context_line":"        assert len(files) \u003d\u003d 1, files"}],"source_content_type":"text/x-python","patch_set":10,"id":"e2a6180d_e806acaa","line":106,"range":{"start_line":106,"start_character":58,"end_line":106,"end_character":60},"updated":"2025-04-07 20:37:01.000000000","message":"310","commit_id":"4d30af8091b20b3eeb927eeacb5c06842852a87a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"03e32086c6fddd60c239ddbccf9fbcd31980d5c3","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    try:"},{"line_number":104,"context_line":"        subprocess.check_call(["},{"line_number":105,"context_line":"            sys.executable, \u0027setup.py\u0027,"},{"line_number":106,"context_line":"            \u0027bdist_wheel\u0027, \u0027-d\u0027, tmp, \u0027--py-limited-api\u003dcp39\u0027,"},{"line_number":107,"context_line":"        ], cwd\u003dsrc_dir)"},{"line_number":108,"context_line":"        files \u003d os.listdir(tmp)"},{"line_number":109,"context_line":"        assert len(files) \u003d\u003d 1, files"}],"source_content_type":"text/x-python","patch_set":10,"id":"cb08c8ed_844be9b3","line":106,"range":{"start_line":106,"start_character":58,"end_line":106,"end_character":60},"in_reply_to":"e2a6180d_e806acaa","updated":"2025-04-08 15:31:23.000000000","message":"Done","commit_id":"4d30af8091b20b3eeb927eeacb5c06842852a87a"}],"setup.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"251760daed0e209fc7e4e301299d5768a9e5c133","unresolved":true,"context_lines":[{"line_number":243,"context_line":"                   \u0027written in C.\u0027),"},{"line_number":244,"context_line":"      classifiers\u003d["},{"line_number":245,"context_line":"          \"Development Status :: 5 - Production/Stable\","},{"line_number":246,"context_line":"          \"Programming Language :: Python :: 3.9\","},{"line_number":247,"context_line":"          \"Programming Language :: Python :: 3.10\","},{"line_number":248,"context_line":"          \"Programming Language :: Python :: 3.11\","},{"line_number":249,"context_line":"          \"Programming Language :: Python :: 3.12\","}],"source_content_type":"text/x-python","patch_set":4,"id":"055e1335_14fda4b3","line":246,"updated":"2025-01-15 21:36:23.000000000","message":"Should maybe add a\n```\nProgramming Language :: Python :: 3 :: Only\n```","commit_id":"52b06628e061ac2feababfe509c5eea2f24d11c4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2d97556ccd1e170c39fc239503bf341255f33d01","unresolved":false,"context_lines":[{"line_number":243,"context_line":"                   \u0027written in C.\u0027),"},{"line_number":244,"context_line":"      classifiers\u003d["},{"line_number":245,"context_line":"          \"Development Status :: 5 - Production/Stable\","},{"line_number":246,"context_line":"          \"Programming Language :: Python :: 3.9\","},{"line_number":247,"context_line":"          \"Programming Language :: Python :: 3.10\","},{"line_number":248,"context_line":"          \"Programming Language :: Python :: 3.11\","},{"line_number":249,"context_line":"          \"Programming Language :: Python :: 3.12\","}],"source_content_type":"text/x-python","patch_set":4,"id":"a764bbf2_93b370cb","line":246,"in_reply_to":"055e1335_14fda4b3","updated":"2025-02-25 01:46:37.000000000","message":"Done","commit_id":"52b06628e061ac2feababfe509c5eea2f24d11c4"}],"tools/playbooks/build-wheel/roles/build-pyeclib-wheel/defaults/main.yaml":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"8d71d8523ea4ea4db933b736b4933214e62b0fee","unresolved":true,"context_lines":[{"line_number":1,"context_line":"tag: pyeclib-build-wheel-latest"},{"line_number":2,"context_line":"wheel_python_version: cp39-cp39"},{"line_number":3,"context_line":"musl: False"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"15f1206d_17580078","line":2,"updated":"2025-04-07 20:37:01.000000000","message":"Needs updating.","commit_id":"4d30af8091b20b3eeb927eeacb5c06842852a87a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"03e32086c6fddd60c239ddbccf9fbcd31980d5c3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"tag: pyeclib-build-wheel-latest"},{"line_number":2,"context_line":"wheel_python_version: cp39-cp39"},{"line_number":3,"context_line":"musl: False"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"e8b192fe_26be3cd3","line":2,"in_reply_to":"15f1206d_17580078","updated":"2025-04-08 15:31:23.000000000","message":"Done","commit_id":"4d30af8091b20b3eeb927eeacb5c06842852a87a"}]}
