)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"c12d444643c9cc5dfd09e43c0a7a40fa23979475","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d4b8fbfb_364b2091","updated":"2025-04-02 08:29:22.000000000","message":"Sorry for my late review. This patch looks ok apart the merge conflict that should be solved. Let me know when you fix it, and then I\u0027ll review it again.","commit_id":"ecffb56e4b9540ac094ef846a4677d6a295b3e28"}],"oslo_middleware/base.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1a06900fe964cebc7ae5eaa3c9440375af01ea5c","unresolved":true,"context_lines":[{"line_number":50,"context_line":"    @classmethod"},{"line_number":51,"context_line":"    def factory("},{"line_number":52,"context_line":"        cls: type[MiddlewareType],"},{"line_number":53,"context_line":"        global_conf: dict[str, ty.Any] | None,"},{"line_number":54,"context_line":"        **local_conf: ty.Any,"},{"line_number":55,"context_line":"    ) -\u003e ty.Callable[[WSGIApplication], MiddlewareType]:"},{"line_number":56,"context_line":"        \"\"\"Factory method for paste.deploy."}],"source_content_type":"text/x-python","patch_set":6,"id":"01bfafbc_ed499e2e","line":53,"range":{"start_line":53,"start_character":21,"end_line":53,"end_character":46},"updated":"2025-04-02 16:25:20.000000000","message":"Oh, I wasn\u0027t aware of this trick and this looks pretty better for me.\n\nHowever I found that the reference says `Changed in version 3.10: Unions can now be written as X | Y. See union type expressions.` and I wonder if we should drop Python 3.9 support if we use | rather than ty.Optional and ty.Union (though I guess it may not cause any problem unless users attempt combination of py3.9 + mypy.\n\nhttps://docs.python.org/3/library/typing.html","commit_id":"c2b1187c1031240733ef31de58a4cf01f4c0b15a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d3d006a22cdffae4d9c5008861134f2111dd2496","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    @classmethod"},{"line_number":51,"context_line":"    def factory("},{"line_number":52,"context_line":"        cls: type[MiddlewareType],"},{"line_number":53,"context_line":"        global_conf: dict[str, ty.Any] | None,"},{"line_number":54,"context_line":"        **local_conf: ty.Any,"},{"line_number":55,"context_line":"    ) -\u003e ty.Callable[[WSGIApplication], MiddlewareType]:"},{"line_number":56,"context_line":"        \"\"\"Factory method for paste.deploy."}],"source_content_type":"text/x-python","patch_set":6,"id":"ebba313e_6f553232","line":53,"range":{"start_line":53,"start_character":21,"end_line":53,"end_character":46},"in_reply_to":"01bfafbc_ed499e2e","updated":"2025-04-03 15:42:24.000000000","message":"That would normally apply and mypy would complain (we set the minimum version in its configuration). However, we import `__future__.annotations`, which means annotation evaluation is postponed.\n\nhttps://peps.python.org/pep-0563/","commit_id":"c2b1187c1031240733ef31de58a4cf01f4c0b15a"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4fd061c99536f8a0f7a4ab3a4fde3dde2e3dde52","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    @classmethod"},{"line_number":51,"context_line":"    def factory("},{"line_number":52,"context_line":"        cls: type[MiddlewareType],"},{"line_number":53,"context_line":"        global_conf: dict[str, ty.Any] | None,"},{"line_number":54,"context_line":"        **local_conf: ty.Any,"},{"line_number":55,"context_line":"    ) -\u003e ty.Callable[[WSGIApplication], MiddlewareType]:"},{"line_number":56,"context_line":"        \"\"\"Factory method for paste.deploy."}],"source_content_type":"text/x-python","patch_set":6,"id":"231327e8_ce63b981","line":53,"range":{"start_line":53,"start_character":21,"end_line":53,"end_character":46},"in_reply_to":"ebba313e_6f553232","updated":"2025-04-04 04:48:22.000000000","message":"OK. Let\u0027s see how this works and we may decide how we apply the same to the other repos.","commit_id":"c2b1187c1031240733ef31de58a4cf01f4c0b15a"}]}
