)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"947d149b650efc232a6b7b0b0756541d386a3b4c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b8bfa93c_8abcbfd5","updated":"2024-10-03 13:56:00.000000000","message":"Thanks for looking at this, had it on my list for this cycle","commit_id":"497b85f46f210e61649e43500b20f7860b6c5a80"}],"neutron/conf/db/migration_cli.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"947d149b650efc232a6b7b0b0756541d386a3b4c","unresolved":true,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import importlib.metadata"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7e1df4a6_e206ab36","line":13,"updated":"2024-10-03 13:56:00.000000000","message":"nit: maybe just import the one method? would make below simpler\n\nfrom importlib.metadata import entry_points","commit_id":"497b85f46f210e61649e43500b20f7860b6c5a80"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"80df714ef945652823a130594e323d767b4f540c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import importlib.metadata"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"89573872_a9ed2ae0","line":13,"in_reply_to":"7e1df4a6_e206ab36","updated":"2024-10-03 14:36:32.000000000","message":"Done","commit_id":"497b85f46f210e61649e43500b20f7860b6c5a80"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"fa1ca0cf753b2e59e437d1dd44daacc1fbc422e9","unresolved":true,"context_lines":[{"line_number":21,"context_line":"migration_entrypoints \u003d {"},{"line_number":22,"context_line":"    entrypoint.name: entrypoint"},{"line_number":23,"context_line":"    for entrypoint in"},{"line_number":24,"context_line":"    importlib.metadata.entry_points(group\u003dMIGRATION_ENTRYPOINTS)"},{"line_number":25,"context_line":"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"INSTALLED_SUBPROJECTS \u003d list(migration_entrypoints)"}],"source_content_type":"text/x-python","patch_set":1,"id":"81ad95da_e0e9212a","line":24,"range":{"start_line":24,"start_character":36,"end_line":24,"end_character":42},"updated":"2024-10-03 13:57:44.000000000","message":"And i notice the py3.9 test failed, when i looked i don\u0027t think groups\u003d was required, but that was on py3.10","commit_id":"497b85f46f210e61649e43500b20f7860b6c5a80"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"80df714ef945652823a130594e323d767b4f540c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"migration_entrypoints \u003d {"},{"line_number":22,"context_line":"    entrypoint.name: entrypoint"},{"line_number":23,"context_line":"    for entrypoint in"},{"line_number":24,"context_line":"    importlib.metadata.entry_points(group\u003dMIGRATION_ENTRYPOINTS)"},{"line_number":25,"context_line":"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"INSTALLED_SUBPROJECTS \u003d list(migration_entrypoints)"}],"source_content_type":"text/x-python","patch_set":1,"id":"cd3b9cbf_9f6827e2","line":24,"range":{"start_line":24,"start_character":36,"end_line":24,"end_character":42},"in_reply_to":"81ad95da_e0e9212a","updated":"2024-10-03 14:36:32.000000000","message":"Done","commit_id":"497b85f46f210e61649e43500b20f7860b6c5a80"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a47eba0b98684b176df24a9fc32eaf8768e9901b","unresolved":true,"context_lines":[{"line_number":19,"context_line":"if sys.version_info \u003c (3, 10, 0):"},{"line_number":20,"context_line":"    from importlib_metadata import entry_points"},{"line_number":21,"context_line":"else:"},{"line_number":22,"context_line":"    from importlib.metadata import entry_points"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"MIGRATION_ENTRYPOINTS \u003d \u0027neutron.db.alembic_migrations\u0027"},{"line_number":25,"context_line":"migration_entrypoints \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"e2c14b4c_b8e2c83c","line":22,"updated":"2024-10-03 17:06:02.000000000","message":"nit: I realize the above works, but didn\u0027t know if using try/except is preferred.\n\ntry:\n    from importlib.metadata import entry_points\nexcept ImportError:\n    from importlib_metadata import entry_points","commit_id":"b7fe561d0980db5c3d6d5ef9fb5b9a036d5cdbd1"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"20b053a7602604ea806b5974f9a279776d977893","unresolved":true,"context_lines":[{"line_number":19,"context_line":"if sys.version_info \u003c (3, 10, 0):"},{"line_number":20,"context_line":"    from importlib_metadata import entry_points"},{"line_number":21,"context_line":"else:"},{"line_number":22,"context_line":"    from importlib.metadata import entry_points"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"MIGRATION_ENTRYPOINTS \u003d \u0027neutron.db.alembic_migrations\u0027"},{"line_number":25,"context_line":"migration_entrypoints \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"565d527e_04f12018","line":22,"in_reply_to":"2f6d56fd_7f7e9f98","updated":"2024-10-04 06:37:24.000000000","message":"\u003e So we can\u0027 use try-except here.\n\nI mean, we **can\u0027t** use try-except here.","commit_id":"b7fe561d0980db5c3d6d5ef9fb5b9a036d5cdbd1"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"57c9087b57dd95c594f72f225ac182a1552b867e","unresolved":true,"context_lines":[{"line_number":19,"context_line":"if sys.version_info \u003c (3, 10, 0):"},{"line_number":20,"context_line":"    from importlib_metadata import entry_points"},{"line_number":21,"context_line":"else:"},{"line_number":22,"context_line":"    from importlib.metadata import entry_points"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"MIGRATION_ENTRYPOINTS \u003d \u0027neutron.db.alembic_migrations\u0027"},{"line_number":25,"context_line":"migration_entrypoints \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"f0a4f7fb_64d05b69","line":22,"in_reply_to":"565d527e_04f12018","updated":"2024-10-04 07:37:14.000000000","message":"An alternative approach is to use/require importlib_metadata for all python versions. That may redundant for Python 3.10+ but can simplify the whole logic.","commit_id":"b7fe561d0980db5c3d6d5ef9fb5b9a036d5cdbd1"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"66bd58555929eb35070be8dee51f2b988e5d139c","unresolved":true,"context_lines":[{"line_number":19,"context_line":"if sys.version_info \u003c (3, 10, 0):"},{"line_number":20,"context_line":"    from importlib_metadata import entry_points"},{"line_number":21,"context_line":"else:"},{"line_number":22,"context_line":"    from importlib.metadata import entry_points"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"MIGRATION_ENTRYPOINTS \u003d \u0027neutron.db.alembic_migrations\u0027"},{"line_number":25,"context_line":"migration_entrypoints \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"2f6d56fd_7f7e9f98","line":22,"in_reply_to":"e2c14b4c_b8e2c83c","updated":"2024-10-04 06:35:32.000000000","message":"The entry_points method exists in python \u003c 3.10 but its behavior is different. So we can\u0027 use try-except here.","commit_id":"b7fe561d0980db5c3d6d5ef9fb5b9a036d5cdbd1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"381c88943f68ac3ad4b73e3efa2723dc49852e5a","unresolved":true,"context_lines":[{"line_number":19,"context_line":"if sys.version_info \u003c (3, 10, 0):"},{"line_number":20,"context_line":"    from importlib_metadata import entry_points"},{"line_number":21,"context_line":"else:"},{"line_number":22,"context_line":"    from importlib.metadata import entry_points"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"MIGRATION_ENTRYPOINTS \u003d \u0027neutron.db.alembic_migrations\u0027"},{"line_number":25,"context_line":"migration_entrypoints \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"dea351ab_816ba79c","line":22,"in_reply_to":"f0a4f7fb_64d05b69","updated":"2024-10-04 13:37:43.000000000","message":"Thanks for the info, this is fine and in a cycle or two can remove the check.","commit_id":"b7fe561d0980db5c3d6d5ef9fb5b9a036d5cdbd1"}],"neutron/db/migration/cli.py":[{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"32562ba87d883ae816f013209fbfbac75601d344","unresolved":true,"context_lines":[{"line_number":566,"context_line":"def _get_subproject_script_location(subproject):"},{"line_number":567,"context_line":"    \u0027\u0027\u0027Get the script location for the installed subproject.\u0027\u0027\u0027"},{"line_number":568,"context_line":"    entrypoint \u003d _get_installed_entrypoint(subproject)"},{"line_number":569,"context_line":"    return \u0027:\u0027.join([entrypoint.module, entrypoint.attr])"},{"line_number":570,"context_line":""},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"def _get_subproject_base(subproject):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9de3094a_fa71bbda","line":569,"updated":"2024-10-04 17:22:30.000000000","message":"In theory, these returns could be wrapped in try/except blocks to branch on the behavior change, right?","commit_id":"b7fe561d0980db5c3d6d5ef9fb5b9a036d5cdbd1"}],"neutron/tests/unit/db/test_migration.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a47eba0b98684b176df24a9fc32eaf8768e9901b","unresolved":true,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import copy"},{"line_number":17,"context_line":"import importlib.metadata"},{"line_number":18,"context_line":"import os"},{"line_number":19,"context_line":"import re"},{"line_number":20,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":4,"id":"bdc6a9b7_7c752405","line":17,"updated":"2024-10-03 17:06:02.000000000","message":"Didn\u0027t need any import magic here?","commit_id":"b7fe561d0980db5c3d6d5ef9fb5b9a036d5cdbd1"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"66bd58555929eb35070be8dee51f2b988e5d139c","unresolved":true,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import copy"},{"line_number":17,"context_line":"import importlib.metadata"},{"line_number":18,"context_line":"import os"},{"line_number":19,"context_line":"import re"},{"line_number":20,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":4,"id":"5b0d0635_b6dfe742","line":17,"in_reply_to":"bdc6a9b7_7c752405","updated":"2024-10-04 06:35:32.000000000","message":"The EntryPoint class exists in Python 3.9 so this works in all supported versions.","commit_id":"b7fe561d0980db5c3d6d5ef9fb5b9a036d5cdbd1"}]}
