)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cab35538341fb3e34b744d7fa7c5b2fa2d161a60","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8da3f876_5933e23d","updated":"2025-11-19 18:47:49.000000000","message":"I\u0027m too used to pre-commit catching things for me now /o\\","commit_id":"cb33f19c10255c438a158bb0a74b0a735e636413"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"ed7065a7db360e65c3d9bfc89db1873afa3bad90","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a568e98e_888ba9a4","updated":"2025-11-19 16:25:45.000000000","message":"This is blocking CI for a large Ironic feature that includes a new requirement that we clearly picked the best possible time to try to merge 😄","commit_id":"cb33f19c10255c438a158bb0a74b0a735e636413"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"633c4859cca275e2ed6037a22d1860540ce6a18c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7097438f_c1bb8a99","in_reply_to":"a568e98e_888ba9a4","updated":"2025-11-20 10:31:15.000000000","message":"Done","commit_id":"cb33f19c10255c438a158bb0a74b0a735e636413"}],"openstack_requirements/check.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8f4afa35bfaa3b35a71951f18e6627cb9666f658","unresolved":true,"context_lines":[{"line_number":21,"context_line":"from packaging import markers"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from openstack_requirements import requirement"},{"line_number":24,"context_line":"from openstack_requirements.project import Project"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"MIN_PY_VERSION \u003d \u00273.5\u0027"},{"line_number":27,"context_line":"PY3_GLOBAL_SPECIFIER_RE \u003d re.compile("}],"source_content_type":"text/x-python","patch_set":1,"id":"e7842744_7fe9a718","line":24,"updated":"2025-11-19 15:32:54.000000000","message":"I think it\u0027s still the policy to import modules, not individual classes?","commit_id":"cb33f19c10255c438a158bb0a74b0a735e636413"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2a07bee4ef292e23a17bd7191b622f65358595ad","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from packaging import markers"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from openstack_requirements import requirement"},{"line_number":24,"context_line":"from openstack_requirements.project import Project"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"MIN_PY_VERSION \u003d \u00273.5\u0027"},{"line_number":27,"context_line":"PY3_GLOBAL_SPECIFIER_RE \u003d re.compile("}],"source_content_type":"text/x-python","patch_set":1,"id":"9ff6f1a7_56272001","line":24,"in_reply_to":"0f4a4044_4688c46f","updated":"2025-11-19 16:48:26.000000000","message":"Thanks. `hacking` change proposed [here](https://review.opendev.org/c/openstack/hacking/+/967719). Let\u0027s continue the conversation there as necessary.","commit_id":"cb33f19c10255c438a158bb0a74b0a735e636413"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1d92fb7f5056c71da5b8638ecdb0ddb1db0682c1","unresolved":true,"context_lines":[{"line_number":21,"context_line":"from packaging import markers"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from openstack_requirements import requirement"},{"line_number":24,"context_line":"from openstack_requirements.project import Project"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"MIN_PY_VERSION \u003d \u00273.5\u0027"},{"line_number":27,"context_line":"PY3_GLOBAL_SPECIFIER_RE \u003d re.compile("}],"source_content_type":"text/x-python","patch_set":1,"id":"0f4a4044_4688c46f","line":24,"in_reply_to":"c1195d9b_02b8c0cd","updated":"2025-11-19 16:31:24.000000000","message":"Nah, this is fine.","commit_id":"cb33f19c10255c438a158bb0a74b0a735e636413"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5e577c0ca03c06114ab1b1df030ae7c691fb4c0e","unresolved":true,"context_lines":[{"line_number":21,"context_line":"from packaging import markers"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from openstack_requirements import requirement"},{"line_number":24,"context_line":"from openstack_requirements.project import Project"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"MIN_PY_VERSION \u003d \u00273.5\u0027"},{"line_number":27,"context_line":"PY3_GLOBAL_SPECIFIER_RE \u003d re.compile("}],"source_content_type":"text/x-python","patch_set":1,"id":"c1195d9b_02b8c0cd","line":24,"in_reply_to":"e7842744_7fe9a718","updated":"2025-11-19 16:28:58.000000000","message":"Err, it is, though there are exceptions for [sqlalchemy, migrate, and i18n](https://docs.openstack.org/hacking/latest/user/hacking.html#imports). I think `typing`, `collections.abc`, and abstract data types/types in general should now be added to that list, since things get *really* verbose otherwise. I\u0027ll propose a change to hacking to this effect now so we can debate there.\n\nIn addition to that more general case, I also did things this way to avoid shadowing the `project` import or having to use an awkward import alias. I can use `__future__.annotations` and move it behind a `TYPE_CHECKING` if that would help?","commit_id":"cb33f19c10255c438a158bb0a74b0a735e636413"}]}
