)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"70380800140420b67189cfd4fe4a5046de6642e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"63cf4a06_44e82675","updated":"2026-05-20 14:34:07.000000000","message":"This is a lot of code for something that you probably don\u0027t want to be in the business of long-term? Would it not be simpler to just re-add `pbr` but deprecate the modules and attributes, [as we\u0027ve done elsewhere](https://review.opendev.org/q/topic:%22deprecate-version-module%22)? We could remove them in the next release then.","commit_id":"2b9a6557539f951d23147b4a02fa2b097ca62f48"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"4e5d76a865e012df1a4d6113529afe2e3811e23f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"86f24524_d51c6beb","updated":"2026-05-21 08:17:33.000000000","message":"good catch","commit_id":"2b9a6557539f951d23147b4a02fa2b097ca62f48"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b2d6c32879b79999ae1a24511d0c57066019a574","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"1bcea57b_42c99899","in_reply_to":"4afad43a_9f69f20a","updated":"2026-05-21 11:24:25.000000000","message":"I\u0027ve proposed this alternative at https://review.opendev.org/c/openstack/neutron/+/989505 (which you\u0027ve already seen)","commit_id":"2b9a6557539f951d23147b4a02fa2b097ca62f48"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bfbb728f1e0b19f38d11c4fde57bc56c0bee1e98","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"4afad43a_9f69f20a","in_reply_to":"63cf4a06_44e82675","updated":"2026-05-21 10:22:17.000000000","message":"We can do both, I think. In any case, we should have a common API for every project version or at least document that `importlib.metadata` should be used instead.\n\nI\u0027ll raise this question next Tuesday in the Neutron meeting","commit_id":"2b9a6557539f951d23147b4a02fa2b097ca62f48"}],"neutron/version.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"85a898544a16671d188c4652194cc6c8236671cd","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from importlib import metadata"},{"line_number":16,"context_line":"from packaging import version"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"NEUTRON_VENDOR \u003d \"OpenStack Foundation\""}],"source_content_type":"text/x-python","patch_set":2,"id":"d0ef4ec9_b01cb09a","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":2},"updated":"2026-05-20 11:14:34.000000000","message":"Ok, so it seems that we cannot import packaging...","commit_id":"222dcdff995f9388a924ff1f4a97868535c92d3f"}],"releasenotes/notes/version-module-api-7edfbdaf4ed7437f.yaml":[{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"e07a8df32742a6280ec747ce08efd0a5d616129d","unresolved":true,"context_lines":[{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The ``neutron.version`` module now exposes a stable API using the"},{"line_number":5,"context_line":"    ``packaging.version.Version`` object. The new public functions are"},{"line_number":6,"context_line":"    ``get_version_info()`` (returns the ``Version`` object),"},{"line_number":7,"context_line":"    ``get_version_string()`` (returns the version string), and"},{"line_number":8,"context_line":"    ``get_version_major()``, ``get_version_minor()``, ``get_version_micro()``,"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"2be9fbb0_86e925b4","line":5,"updated":"2026-05-20 13:12:55.000000000","message":"You made a tuple instead of using this.","commit_id":"806bbd83f81b6b7ab9f2209b160d719e10f58f86"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b89ae56db088d196cb4ad99f7ac7d6e9babbc53e","unresolved":false,"context_lines":[{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The ``neutron.version`` module now exposes a stable API using the"},{"line_number":5,"context_line":"    ``packaging.version.Version`` object. The new public functions are"},{"line_number":6,"context_line":"    ``get_version_info()`` (returns the ``Version`` object),"},{"line_number":7,"context_line":"    ``get_version_string()`` (returns the version string), and"},{"line_number":8,"context_line":"    ``get_version_major()``, ``get_version_minor()``, ``get_version_micro()``,"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"dbd5e05d_2a779588","line":5,"in_reply_to":"2be9fbb0_86e925b4","updated":"2026-05-20 13:30:53.000000000","message":"Done","commit_id":"806bbd83f81b6b7ab9f2209b160d719e10f58f86"}],"requirements.txt":[{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"e07a8df32742a6280ec747ce08efd0a5d616129d","unresolved":true,"context_lines":[{"line_number":44,"context_line":"os-resource-classes\u003e\u003d1.1.0 # Apache-2.0"},{"line_number":45,"context_line":"ovs\u003e3.3.0 # Apache-2.0"},{"line_number":46,"context_line":"ovsdbapp\u003e\u003d2.17.0 # Apache-2.0"},{"line_number":47,"context_line":"packaging\u003e\u003d20.4 # Apache-2.0"},{"line_number":48,"context_line":"psutil\u003e\u003d6.1.0 # BSD"},{"line_number":49,"context_line":"pyroute2\u003e\u003d0.7.3;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":50,"context_line":"pyOpenSSL\u003e\u003d17.1.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":4,"id":"52f4b26c_6eb22e9d","line":47,"updated":"2026-05-20 13:12:55.000000000","message":"You\u0027re not actually using this.","commit_id":"806bbd83f81b6b7ab9f2209b160d719e10f58f86"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b89ae56db088d196cb4ad99f7ac7d6e9babbc53e","unresolved":false,"context_lines":[{"line_number":44,"context_line":"os-resource-classes\u003e\u003d1.1.0 # Apache-2.0"},{"line_number":45,"context_line":"ovs\u003e3.3.0 # Apache-2.0"},{"line_number":46,"context_line":"ovsdbapp\u003e\u003d2.17.0 # Apache-2.0"},{"line_number":47,"context_line":"packaging\u003e\u003d20.4 # Apache-2.0"},{"line_number":48,"context_line":"psutil\u003e\u003d6.1.0 # BSD"},{"line_number":49,"context_line":"pyroute2\u003e\u003d0.7.3;sys_platform!\u003d\u0027win32\u0027 # Apache-2.0 (+ dual licensed GPL2)"},{"line_number":50,"context_line":"pyOpenSSL\u003e\u003d17.1.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":4,"id":"3d6ccb00_f17d4a27","line":47,"in_reply_to":"52f4b26c_6eb22e9d","updated":"2026-05-20 13:30:53.000000000","message":"Done","commit_id":"806bbd83f81b6b7ab9f2209b160d719e10f58f86"}]}
