)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a58080f7193d303d5779aa2251bf1c6644669f7a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6df7de12_ae5836d4","updated":"2025-09-03 12:58:10.000000000","message":"The pep8 job failure is relevant:\n```\n\nhacking..................................................................Failed\n- hook id: hacking\n- exit code: 1\n\nnova/compute/multi_cell_list.py:98:5: N373: Use the stdlib concurrency primitive instead of the Eventelt specific one\nnova/tests/unit/virt/libvirt/test_host.py:461:9: N373: Use the stdlib concurrency primitive instead of the Eventelt specific one\n\n```","commit_id":"f04c9e709058c4407aa764ee35c24761cf201e36"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"75d8de4333f5b5dd7f4bec4a4dbb9ee337b1de8f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1b677f31_6b380987","in_reply_to":"6df7de12_ae5836d4","updated":"2025-09-03 12:58:30.000000000","message":".","commit_id":"f04c9e709058c4407aa764ee35c24761cf201e36"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e512e5f44dc39fd8b37bcc65003288835992b62f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4adc6967_50920971","updated":"2025-10-08 12:11:10.000000000","message":"the unit test failure is relevatn","commit_id":"fde5eb2ea37e0c72ef83365d1d1a82d8f150edb4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a2808361f3eafd650e8121bf85ae656c256f5a40","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3211a4a6_8f84c4c5","updated":"2025-10-15 13:02:43.000000000","message":"Looks good to me. Thanks!","commit_id":"a4d6fed1206847969dc8ca5095b09fdd367ebf38"}],"nova/hacking/checks.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a58080f7193d303d5779aa2251bf1c6644669f7a","unresolved":true,"context_lines":[{"line_number":146,"context_line":"eventlet_stdlib_primitives_re \u003d re.compile("},{"line_number":147,"context_line":"    r\".*(eventlet|greenthread)\\.sleep\\(.*\")"},{"line_number":148,"context_line":"eventlet_primitives_re \u003d re.compile("},{"line_number":149,"context_line":"    r\".*(eventlet)\\.(semaphore|timeout|event).*\")"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"class BaseASTChecker(ast.NodeVisitor):"}],"source_content_type":"text/x-python","patch_set":1,"id":"4027045b_ef7b8544","line":149,"updated":"2025-09-03 12:58:10.000000000","message":"as far as I see it would not catch\nhttps://github.com/openstack/nova/commit/48ddc7c4d13028a0ebcbabfa75a19828129d0d0b#diff-2f66437794b23f16fe1d570b9eaae9d57c3184f11d51ae979163b1a3419b89ecL28-L5499 that uses \n```\nfrom eventlet import event as eventlet_event\n...\nevent \u003d eventlet_event.Event()\n```","commit_id":"f04c9e709058c4407aa764ee35c24761cf201e36"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"6983aa7144fabb999606e1a397e32be07d591176","unresolved":true,"context_lines":[{"line_number":146,"context_line":"eventlet_stdlib_primitives_re \u003d re.compile("},{"line_number":147,"context_line":"    r\".*(eventlet|greenthread)\\.sleep\\(.*\")"},{"line_number":148,"context_line":"eventlet_primitives_re \u003d re.compile("},{"line_number":149,"context_line":"    r\".*(eventlet)\\.(semaphore|timeout|event).*\")"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"class BaseASTChecker(ast.NodeVisitor):"}],"source_content_type":"text/x-python","patch_set":1,"id":"efdc7226_c2eb2166","line":149,"in_reply_to":"4027045b_ef7b8544","updated":"2025-10-15 08:49:56.000000000","message":"done","commit_id":"f04c9e709058c4407aa764ee35c24761cf201e36"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a2808361f3eafd650e8121bf85ae656c256f5a40","unresolved":false,"context_lines":[{"line_number":146,"context_line":"eventlet_stdlib_primitives_re \u003d re.compile("},{"line_number":147,"context_line":"    r\".*(eventlet|greenthread)\\.sleep\\(.*\")"},{"line_number":148,"context_line":"eventlet_primitives_re \u003d re.compile("},{"line_number":149,"context_line":"    r\".*(eventlet)\\.(semaphore|timeout|event).*\")"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"class BaseASTChecker(ast.NodeVisitor):"}],"source_content_type":"text/x-python","patch_set":1,"id":"31ae777d_42d24d7f","line":149,"in_reply_to":"efdc7226_c2eb2166","updated":"2025-10-15 13:02:43.000000000","message":"Acknowledged","commit_id":"f04c9e709058c4407aa764ee35c24761cf201e36"}],"nova/tests/unit/test_hacking.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a58080f7193d303d5779aa2251bf1c6644669f7a","unresolved":true,"context_lines":[{"line_number":1085,"context_line":""},{"line_number":1086,"context_line":"        code \u003d \"\"\""},{"line_number":1087,"context_line":"                    time.sleep(0)"},{"line_number":1088,"context_line":"                    time.sleep(1)"},{"line_number":1089,"context_line":"               \"\"\""},{"line_number":1090,"context_line":"        self._assert_has_no_errors(code, checks.check_eventlet_primitives)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ce9800e9_d97c856a","line":1088,"updated":"2025-09-03 12:58:10.000000000","message":"please add some examples that are OK like using Semaphore and Event from threading","commit_id":"f04c9e709058c4407aa764ee35c24761cf201e36"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a2808361f3eafd650e8121bf85ae656c256f5a40","unresolved":false,"context_lines":[{"line_number":1085,"context_line":""},{"line_number":1086,"context_line":"        code \u003d \"\"\""},{"line_number":1087,"context_line":"                    time.sleep(0)"},{"line_number":1088,"context_line":"                    time.sleep(1)"},{"line_number":1089,"context_line":"               \"\"\""},{"line_number":1090,"context_line":"        self._assert_has_no_errors(code, checks.check_eventlet_primitives)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5e1f73a0_978642d1","line":1088,"in_reply_to":"b9cd60c0_d0ca2670","updated":"2025-10-15 13:02:43.000000000","message":"Acknowledged","commit_id":"f04c9e709058c4407aa764ee35c24761cf201e36"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"6983aa7144fabb999606e1a397e32be07d591176","unresolved":true,"context_lines":[{"line_number":1085,"context_line":""},{"line_number":1086,"context_line":"        code \u003d \"\"\""},{"line_number":1087,"context_line":"                    time.sleep(0)"},{"line_number":1088,"context_line":"                    time.sleep(1)"},{"line_number":1089,"context_line":"               \"\"\""},{"line_number":1090,"context_line":"        self._assert_has_no_errors(code, checks.check_eventlet_primitives)"}],"source_content_type":"text/x-python","patch_set":1,"id":"b9cd60c0_d0ca2670","line":1088,"in_reply_to":"ce9800e9_d97c856a","updated":"2025-10-15 08:49:56.000000000","message":"done","commit_id":"f04c9e709058c4407aa764ee35c24761cf201e36"}],"nova/tests/unit/virt/libvirt/test_host.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e512e5f44dc39fd8b37bcc65003288835992b62f","unresolved":true,"context_lines":[{"line_number":461,"context_line":"    @mock.patch.object(host.Host, \"_connect\")"},{"line_number":462,"context_line":"    def test_conn_event_thread(self, mock_conn):"},{"line_number":463,"context_line":"        event \u003d threading.Event()"},{"line_number":464,"context_line":"        h \u003d host.Host(\"qemu:///system\", conn_event_handler\u003devent.send)"},{"line_number":465,"context_line":"        h.initialize()"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"        h.get_connection()"}],"source_content_type":"text/x-python","patch_set":4,"id":"9b7afbd5_f9da7557","line":464,"updated":"2025-10-08 12:11:10.000000000","message":"event.send is not valid for threading.Event","commit_id":"fde5eb2ea37e0c72ef83365d1d1a82d8f150edb4"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"6983aa7144fabb999606e1a397e32be07d591176","unresolved":true,"context_lines":[{"line_number":461,"context_line":"    @mock.patch.object(host.Host, \"_connect\")"},{"line_number":462,"context_line":"    def test_conn_event_thread(self, mock_conn):"},{"line_number":463,"context_line":"        event \u003d threading.Event()"},{"line_number":464,"context_line":"        h \u003d host.Host(\"qemu:///system\", conn_event_handler\u003devent.send)"},{"line_number":465,"context_line":"        h.initialize()"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"        h.get_connection()"}],"source_content_type":"text/x-python","patch_set":4,"id":"f0dead49_87dbc12a","line":464,"in_reply_to":"9b7afbd5_f9da7557","updated":"2025-10-15 08:49:56.000000000","message":"Thanks! Yeah generally event is not totaly correct and it is used to emulate not eventlet object LibvirtDriver","commit_id":"fde5eb2ea37e0c72ef83365d1d1a82d8f150edb4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a2808361f3eafd650e8121bf85ae656c256f5a40","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    @mock.patch.object(host.Host, \"_connect\")"},{"line_number":462,"context_line":"    def test_conn_event_thread(self, mock_conn):"},{"line_number":463,"context_line":"        event \u003d threading.Event()"},{"line_number":464,"context_line":"        h \u003d host.Host(\"qemu:///system\", conn_event_handler\u003devent.send)"},{"line_number":465,"context_line":"        h.initialize()"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"        h.get_connection()"}],"source_content_type":"text/x-python","patch_set":4,"id":"eed56964_78fcba34","line":464,"in_reply_to":"f0dead49_87dbc12a","updated":"2025-10-15 13:02:43.000000000","message":"Acknowledged","commit_id":"fde5eb2ea37e0c72ef83365d1d1a82d8f150edb4"}]}
