)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36672,"name":"Shivam Shukla","display_name":"Shivam Shukla","email":"shivam.shukla3@india.nec.com","username":"shivam.shukla3"},"change_message_id":"bd63260d50bdf7796440181b72f99e558f9f7e83","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"d549f2e0_eea6c596","updated":"2026-03-11 11:24:46.000000000","message":"@yasufum.o@gmail.com @ts-takahashi@nec.com - Requesting the review of this patch.","commit_id":"d0f60b3db1067edc48835505521e0023b95f2338"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"c8c381782e84ee31627f9db7815443bb092c9b0a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"4c6348e7_2ec7b99c","updated":"2026-03-12 14:32:44.000000000","message":"Thank you for the update. Please consider revising for my tiny comments.","commit_id":"d0f60b3db1067edc48835505521e0023b95f2338"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"72024155640eb1a11b282ed46f25f0bda8b8e793","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"3358be8b_65e9097c","updated":"2026-03-29 15:00:43.000000000","message":"LGTM, thanks.","commit_id":"e82cd56c7cd1b54b85e890ad3f143f9883fb57e7"}],"tools/link_validate.py":[{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"c8c381782e84ee31627f9db7815443bb092c9b0a","unresolved":true,"context_lines":[{"line_number":79,"context_line":"# ------------------------------------------------------------"},{"line_number":80,"context_line":"# Crawl Logic"},{"line_number":81,"context_line":"# ------------------------------------------------------------"},{"line_number":82,"context_line":"def crawl(base_url):"},{"line_number":83,"context_line":"    visited \u003d set()"},{"line_number":84,"context_line":"    to_visit \u003d deque([base_url])"},{"line_number":85,"context_line":"    checked_external_docs \u003d set()"}],"source_content_type":"text/x-python","patch_set":13,"id":"ff0ed064_dc8f3a41","line":82,"updated":"2026-03-12 14:32:44.000000000","message":"Please add a docstring for the behavior of the method.","commit_id":"d0f60b3db1067edc48835505521e0023b95f2338"},{"author":{"_account_id":36672,"name":"Shivam Shukla","display_name":"Shivam Shukla","email":"shivam.shukla3@india.nec.com","username":"shivam.shukla3"},"change_message_id":"ba2a6912467eb3ee5a63b2c2f8101a0be899338e","unresolved":false,"context_lines":[{"line_number":79,"context_line":"# ------------------------------------------------------------"},{"line_number":80,"context_line":"# Crawl Logic"},{"line_number":81,"context_line":"# ------------------------------------------------------------"},{"line_number":82,"context_line":"def crawl(base_url):"},{"line_number":83,"context_line":"    visited \u003d set()"},{"line_number":84,"context_line":"    to_visit \u003d deque([base_url])"},{"line_number":85,"context_line":"    checked_external_docs \u003d set()"}],"source_content_type":"text/x-python","patch_set":13,"id":"dcf433bb_5905ded6","line":82,"in_reply_to":"ff0ed064_dc8f3a41","updated":"2026-03-13 10:40:29.000000000","message":"Done. Added a docstring to clarify the behavior of the crawl method.","commit_id":"d0f60b3db1067edc48835505521e0023b95f2338"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"c8c381782e84ee31627f9db7815443bb092c9b0a","unresolved":true,"context_lines":[{"line_number":85,"context_line":"    checked_external_docs \u003d set()"},{"line_number":86,"context_line":"    results \u003d []"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    while to_visit and len(visited) \u003c MAX_PAGES:"},{"line_number":89,"context_line":"        url \u003d to_visit.popleft()"},{"line_number":90,"context_line":"        url, _ \u003d urldefrag(url)"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"18338e79_d830ff74","line":88,"updated":"2026-03-12 14:32:44.000000000","message":"I\u0027m not sure the MAX_PAGES is really required because the num of urls might not be over the so large number, or we should all the urls even if it\u0027s over the MAX_PAGES.","commit_id":"d0f60b3db1067edc48835505521e0023b95f2338"},{"author":{"_account_id":36672,"name":"Shivam Shukla","display_name":"Shivam Shukla","email":"shivam.shukla3@india.nec.com","username":"shivam.shukla3"},"change_message_id":"ba2a6912467eb3ee5a63b2c2f8101a0be899338e","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    checked_external_docs \u003d set()"},{"line_number":86,"context_line":"    results \u003d []"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    while to_visit and len(visited) \u003c MAX_PAGES:"},{"line_number":89,"context_line":"        url \u003d to_visit.popleft()"},{"line_number":90,"context_line":"        url, _ \u003d urldefrag(url)"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"42369a45_577413dc","line":88,"in_reply_to":"18338e79_d830ff74","updated":"2026-03-13 10:40:29.000000000","message":"Thanks for the suggestion.\n\nThe \"MAX_PAGES\" limit was originally added to avoid potential excessive loops (which could cause timeouts) if a large number of URLs were discovered. However, as suggested, this may not be necessary since the number of URLs is unlikely to be that large.\n\nHence, I have removed the \"MAX_PAGES\" condition from the loop. The crawler now continues until there are no more URLs left in the \"to_visit\" queue.","commit_id":"d0f60b3db1067edc48835505521e0023b95f2338"}]}
