)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"f18a4fb8ae44ffcd82d945c3c62f70cfc79d3e1b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ab3e5c4b_bb9ff604","updated":"2026-05-05 09:56:19.000000000","message":"@stephenfin@redhat.com Hello, please look it, I think need few small fixes.","commit_id":"b00e4bffc5047f5c49cacb73a248c5846bec3570"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"58523a527da7df7c129307e67286a6e524da3942","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"317a72ec_dacacb2a","updated":"2026-05-08 13:19:16.000000000","message":"I don\u0027t see any reason to **not** merge this now, but yeah, you probably want a follow-up.","commit_id":"b00e4bffc5047f5c49cacb73a248c5846bec3570"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"7972eb4486e387b7c45821d1aa953ac6645e2269","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c082be59_7778a227","updated":"2026-05-08 12:27:44.000000000","message":"I think we can merge it as is, those lines match the designate files. We could always change those across the designate repositories in the future","commit_id":"b00e4bffc5047f5c49cacb73a248c5846bec3570"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"a85811c84ab251867b2b79d270b1234fefc49a96","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ac18d878_1933b8b7","updated":"2026-05-05 09:48:22.000000000","message":"Thanks for the review, Ivan. I looked into each of your suggestions, but I believe the current form is correct. Comments inline.","commit_id":"b00e4bffc5047f5c49cacb73a248c5846bec3570"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ad29a8673d830e9f1344343af8902dbda9b48276","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"81877e62_35585c12","updated":"2026-05-08 15:13:43.000000000","message":"recheck","commit_id":"b00e4bffc5047f5c49cacb73a248c5846bec3570"}],"pyproject.toml":[{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"0ca9139fa3579c3501263f462bd771104ea7193d","unresolved":true,"context_lines":[{"line_number":6,"context_line":"name \u003d \"python-designateclient\""},{"line_number":7,"context_line":"description \u003d \"OpenStack DNS-as-a-Service - Client\""},{"line_number":8,"context_line":"readme \u003d {file \u003d \"README.rst\", content-type \u003d \"text/x-rst\"}"},{"line_number":9,"context_line":"license \u003d {text \u003d \"Apache-2.0\"}"},{"line_number":10,"context_line":"requires-python \u003d \"\u003e\u003d3.10\""},{"line_number":11,"context_line":"authors \u003d ["},{"line_number":12,"context_line":"    {name \u003d \"OpenStack\", email \u003d \"openstack-discuss@lists.openstack.org\"},"}],"source_content_type":"text/x-toml","patch_set":1,"id":"4859beec_68dd8d9f","line":9,"updated":"2026-05-05 09:32:28.000000000","message":"```suggestion\nlicense \u003d \"Apache-2.0\"\n```","commit_id":"b00e4bffc5047f5c49cacb73a248c5846bec3570"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"a85811c84ab251867b2b79d270b1234fefc49a96","unresolved":false,"context_lines":[{"line_number":6,"context_line":"name \u003d \"python-designateclient\""},{"line_number":7,"context_line":"description \u003d \"OpenStack DNS-as-a-Service - Client\""},{"line_number":8,"context_line":"readme \u003d {file \u003d \"README.rst\", content-type \u003d \"text/x-rst\"}"},{"line_number":9,"context_line":"license \u003d {text \u003d \"Apache-2.0\"}"},{"line_number":10,"context_line":"requires-python \u003d \"\u003e\u003d3.10\""},{"line_number":11,"context_line":"authors \u003d ["},{"line_number":12,"context_line":"    {name \u003d \"OpenStack\", email \u003d \"openstack-discuss@lists.openstack.org\"},"}],"source_content_type":"text/x-toml","patch_set":1,"id":"7ca09356_49859818","line":9,"in_reply_to":"4859beec_68dd8d9f","updated":"2026-05-05 09:48:22.000000000","message":"The simple string form comes from PEP 639, but there\u0027s an ongoing discussion (https://discuss.python.org/t/90314) about whether this syntax may itself be deprecated again. Nova has a stalled patch to make exactly this change (https://review.opendev.org/c/openstack/nova/+/951226), where Jeremy Stanley (fungi) and Sean Mooney blocked it because PEP 639 semantics are still in flux and it requires setuptools \u003e\u003d 77. Stephen Finucane (the PBR maintainer) consistently uses the table form {text \u003d \"Apache-2.0\"} in all his migrations.","commit_id":"b00e4bffc5047f5c49cacb73a248c5846bec3570"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"58523a527da7df7c129307e67286a6e524da3942","unresolved":false,"context_lines":[{"line_number":6,"context_line":"name \u003d \"python-designateclient\""},{"line_number":7,"context_line":"description \u003d \"OpenStack DNS-as-a-Service - Client\""},{"line_number":8,"context_line":"readme \u003d {file \u003d \"README.rst\", content-type \u003d \"text/x-rst\"}"},{"line_number":9,"context_line":"license \u003d {text \u003d \"Apache-2.0\"}"},{"line_number":10,"context_line":"requires-python \u003d \"\u003e\u003d3.10\""},{"line_number":11,"context_line":"authors \u003d ["},{"line_number":12,"context_line":"    {name \u003d \"OpenStack\", email \u003d \"openstack-discuss@lists.openstack.org\"},"}],"source_content_type":"text/x-toml","patch_set":1,"id":"e471aca6_a4545cd4","line":9,"in_reply_to":"7ca09356_49859818","updated":"2026-05-08 13:19:16.000000000","message":"tbh I was using the table form because the `test-release-openstack` job was stuck on Focal (20.04) which used Python 3.8. That\u0027s fixed since https://review.opendev.org/c/openstack/project-config/+/951395 and we\u0027ve now updated the oslo and SDK projects to the simple SPDX form.\n\nAdditionally, we don\u0027t vendor dependencies here (that I\u0027m aware of at least) so the license debate should be a non-issue for us?","commit_id":"b00e4bffc5047f5c49cacb73a248c5846bec3570"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"0ca9139fa3579c3501263f462bd771104ea7193d","unresolved":true,"context_lines":[{"line_number":15,"context_line":"    \"Environment :: OpenStack\","},{"line_number":16,"context_line":"    \"Intended Audience :: Information Technology\","},{"line_number":17,"context_line":"    \"Intended Audience :: System Administrators\","},{"line_number":18,"context_line":"    \"License :: OSI Approved :: Apache Software License\","},{"line_number":19,"context_line":"    \"Operating System :: POSIX :: Linux\","},{"line_number":20,"context_line":"    \"Programming Language :: Python\","},{"line_number":21,"context_line":"    \"Programming Language :: Python :: Implementation :: CPython\","}],"source_content_type":"text/x-toml","patch_set":1,"id":"5fca0a5c_330d22bb","line":18,"updated":"2026-05-05 09:32:28.000000000","message":"please remove this line.","commit_id":"b00e4bffc5047f5c49cacb73a248c5846bec3570"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"a85811c84ab251867b2b79d270b1234fefc49a96","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    \"Environment :: OpenStack\","},{"line_number":16,"context_line":"    \"Intended Audience :: Information Technology\","},{"line_number":17,"context_line":"    \"Intended Audience :: System Administrators\","},{"line_number":18,"context_line":"    \"License :: OSI Approved :: Apache Software License\","},{"line_number":19,"context_line":"    \"Operating System :: POSIX :: Linux\","},{"line_number":20,"context_line":"    \"Programming Language :: Python\","},{"line_number":21,"context_line":"    \"Programming Language :: Python :: Implementation :: CPython\","}],"source_content_type":"text/x-toml","patch_set":1,"id":"d7916880_d784dc37","line":18,"in_reply_to":"5fca0a5c_330d22bb","updated":"2026-05-05 09:48:22.000000000","message":"Same situation — the Nova patch above attempted to remove it and was blocked. All reference migrations keep it:\n- Keystone: https://opendev.org/openstack/keystone/src/branch/master/pyproject.toml#L19\n- Nova: https://opendev.org/openstack/nova/src/branch/master/pyproject.toml#L20\n- Neutron: https://opendev.org/openstack/neutron/src/branch/master/pyproject.toml#L20","commit_id":"b00e4bffc5047f5c49cacb73a248c5846bec3570"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"0ca9139fa3579c3501263f462bd771104ea7193d","unresolved":true,"context_lines":[{"line_number":100,"context_line":"tsigkey_set \u003d \"designateclient.v2.cli.tsigkeys:SetTSIGKeyCommand\""},{"line_number":101,"context_line":"tsigkey_delete \u003d \"designateclient.v2.cli.tsigkeys:DeleteTSIGKeyCommand\""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"[tool.setuptools]"},{"line_number":104,"context_line":"packages \u003d [\"designateclient\"]"}],"source_content_type":"text/x-toml","patch_set":1,"id":"5f306efe_dd5cce3f","line":103,"updated":"2026-05-05 09:32:28.000000000","message":"Please update to:\n\n[tool.setuptools.packages.find]\ninclude \u003d [\"designateclient\"]","commit_id":"b00e4bffc5047f5c49cacb73a248c5846bec3570"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"a85811c84ab251867b2b79d270b1234fefc49a96","unresolved":false,"context_lines":[{"line_number":100,"context_line":"tsigkey_set \u003d \"designateclient.v2.cli.tsigkeys:SetTSIGKeyCommand\""},{"line_number":101,"context_line":"tsigkey_delete \u003d \"designateclient.v2.cli.tsigkeys:DeleteTSIGKeyCommand\""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"[tool.setuptools]"},{"line_number":104,"context_line":"packages \u003d [\"designateclient\"]"}],"source_content_type":"text/x-toml","patch_set":1,"id":"dd38d72b_40261d7e","line":103,"in_reply_to":"5f306efe_dd5cce3f","updated":"2026-05-05 09:48:22.000000000","message":"All of Finucane\u0027s migrations use the flat packages \u003d [\"name\"] form — PBR handles recursive subpackage discovery itself:\n- Keystone: https://opendev.org/openstack/keystone/src/branch/master/pyproject.toml#L175\n- Nova: https://opendev.org/openstack/nova/src/branch/master/pyproject.toml#L95\n- Neutron: https://opendev.org/openstack/neutron/src/branch/master/pyproject.toml#L334","commit_id":"b00e4bffc5047f5c49cacb73a248c5846bec3570"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"58523a527da7df7c129307e67286a6e524da3942","unresolved":false,"context_lines":[{"line_number":100,"context_line":"tsigkey_set \u003d \"designateclient.v2.cli.tsigkeys:SetTSIGKeyCommand\""},{"line_number":101,"context_line":"tsigkey_delete \u003d \"designateclient.v2.cli.tsigkeys:DeleteTSIGKeyCommand\""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"[tool.setuptools]"},{"line_number":104,"context_line":"packages \u003d [\"designateclient\"]"}],"source_content_type":"text/x-toml","patch_set":1,"id":"1390b8ca_d70ee462","line":103,"in_reply_to":"dd38d72b_40261d7e","updated":"2026-05-08 13:19:16.000000000","message":"I suspect @lazekteam@gmail.com saw the https://review.opendev.org/q/topic:linter-sync series where we\u0027ve actually gone and changes this. What\u0027s here works but it can raise a warning from setuptools about packages being included despite not being listed here. You can reproduce this yourself by running e.g. `python -m build . -v` with this branch checked out.\n\n```\n/tmp/build-env-6ah3qhg8/lib64/python3.14/site-packages/setuptools/command/build_py.py:215: _Warning: Package \u0027designateclient.v2.cli\u0027 is absent from the `packages` configuration.                                  \n!!                                                                                                                                                                                                                  \n                                                                                                                                                                                                                    \n        ********************************************************************************                                                                                                                            \n        ############################                                                                                                                                                                                \n        # Package would be ignored #                                                                                                                                                                                \n        ############################                                                                                                                                                                                \n        Python recognizes \u0027designateclient.v2.cli\u0027 as an importable package[^1],                                                                                                                                    \n        but it is absent from setuptools\u0027 `packages` configuration.                                                                                                                                                 \n                                                                                                                                                                                                                    \n        This leads to an ambiguous overall configuration. If you want to distribute this                                                                                                                            \n        package, please make sure that \u0027designateclient.v2.cli\u0027 is explicitly added                                                                                                                                 \n        to the `packages` configuration field.                                                                                                                                                                      \n                                                                                                                                                                                                                    \n        Alternatively, you can also rely on setuptools\u0027 discovery methods                                                                                                                                           \n        (for example by using `find_namespace_packages(...)`/`find_namespace:`                                                                                                                                      \n        instead of `find_packages(...)`/`find:`).                                                                                                                                                                   \n                                                                                                                                                                                                                    \n        You can read more about \"package discovery\" on setuptools documentation page:                     \n                                                                                                                                                                                                                    \n        - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html                                                                                                                                     \n                                                                                                                                                                                                                    \n        If you don\u0027t want \u0027designateclient.v2.cli\u0027 to be distributed and are                              \n        already explicitly excluding \u0027designateclient.v2.cli\u0027 via                                                                                                                                                   \n        `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,                                                                                                                                 \n        you can try to use `exclude_package_data`, or `include-package-data\u003dFalse` in                                                                                                                               \n        combination with a more fine grained `package-data` configuration.                                                                                                                                          \n                                                                                                                                                                                                                    \n        You can read more about \"package data files\" on setuptools documentation page:                                                                                                                              \n                                                                                                                                                                                                                    \n        - https://setuptools.pypa.io/en/latest/userguide/datafiles.html                                                                                                                                             \n                                                                                                                                                                                                                    \n                                                                                                                                                                                                                    \n        [^1]: For Python, any directory (with suitable naming) can be imported,                                                                                                                                     \n              even if it does not contain any `.py` files.                                                                                                                                                          \n              On the other hand, currently there is no concept of package data                                                                                                                                      \n              directory, all directories are treated like packages.                                                                                                                                                 \n        ********************************************************************************\n```","commit_id":"b00e4bffc5047f5c49cacb73a248c5846bec3570"}]}
