)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38828,"name":"Karan Anand","display_name":"Karan","email":"anandkarancompsci@gmail.com","username":"anandkaranubc"},"change_message_id":"40280754fc92191e25b09c628074387777a73e13","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1bc6ea74_a850cd96","updated":"2026-03-01 00:50:01.000000000","message":"Done! Thanks again for the feedback.","commit_id":"3b51c18354e288e34907d614ae4723a92ed915fe"}],"ironicclient/exc.py":[{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"af5bbb7db4380c53ef8dde2b0b0335b0788a2bf8","unresolved":true,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class AmbiguousAuthSystem(exceptions.ClientException):"},{"line_number":32,"context_line":"    \"\"\"Could not obtain token and endpoint using provided credentials.\"\"\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    pass"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"14888fd2_85c871fd","line":33,"updated":"2026-02-28 20:02:46.000000000","message":"Extra white space?","commit_id":"9f28000d5debe6f845d4d8f694d397a911827cf2"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"af5bbb7db4380c53ef8dde2b0b0335b0788a2bf8","unresolved":true,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def from_response(  # type: ignore[no-redef]"},{"line_number":54,"context_line":"    response: Any,"},{"line_number":55,"context_line":"    message: str | None \u003d None,"},{"line_number":56,"context_line":"    traceback: str | None \u003d None,"},{"line_number":57,"context_line":"    method: str | None \u003d None,"}],"source_content_type":"text/x-python","patch_set":2,"id":"572676e3_0519443c","line":54,"updated":"2026-02-28 20:02:46.000000000","message":"This isn’t an Any. It’s a requests.Response.","commit_id":"9f28000d5debe6f845d4d8f694d397a911827cf2"},{"author":{"_account_id":38828,"name":"Karan Anand","display_name":"Karan","email":"anandkarancompsci@gmail.com","username":"anandkaranubc"},"change_message_id":"40280754fc92191e25b09c628074387777a73e13","unresolved":true,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def from_response(  # type: ignore[no-redef]"},{"line_number":54,"context_line":"    response: Any,"},{"line_number":55,"context_line":"    message: str | None \u003d None,"},{"line_number":56,"context_line":"    traceback: str | None \u003d None,"},{"line_number":57,"context_line":"    method: str | None \u003d None,"}],"source_content_type":"text/x-python","patch_set":2,"id":"63bc4212_c5ba9e83","line":54,"in_reply_to":"572676e3_0519443c","updated":"2026-03-01 00:50:01.000000000","message":"Thanks @cardoe@cardoe.com for the feedback. The reason I used `Any` here is that, in this function, `response` can be either a `status` or a `status_code`, meaning it may be a union of `requests.Response` and something like `http.client.HTTPResponse`. Open to your suggestions on how to type this more precisely. Thank you!","commit_id":"9f28000d5debe6f845d4d8f694d397a911827cf2"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"c9324ca3ecf1a91b24b59677db329dfe80c6757b","unresolved":true,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def from_response(  # type: ignore[no-redef]"},{"line_number":54,"context_line":"    response: Any,"},{"line_number":55,"context_line":"    message: str | None \u003d None,"},{"line_number":56,"context_line":"    traceback: str | None \u003d None,"},{"line_number":57,"context_line":"    method: str | None \u003d None,"}],"source_content_type":"text/x-python","patch_set":2,"id":"f786d928_9f44e1a4","line":54,"in_reply_to":"63bc4212_c5ba9e83","updated":"2026-03-03 13:06:44.000000000","message":"This is not really resolved yet.","commit_id":"9f28000d5debe6f845d4d8f694d397a911827cf2"},{"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":"52fbcfbc19e0bf097c4f9f29737b85d425a2bfb2","unresolved":true,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def from_response(  # type: ignore[no-redef]"},{"line_number":54,"context_line":"    response: Any,"},{"line_number":55,"context_line":"    message: str | None \u003d None,"},{"line_number":56,"context_line":"    traceback: str | None \u003d None,"},{"line_number":57,"context_line":"    method: str | None \u003d None,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9201af3d_e4bf3bc9","line":54,"in_reply_to":"f786d928_9f44e1a4","updated":"2026-03-04 17:16:35.000000000","message":"We looked at this during the MLH chat, this needs Response | HTTPResponse","commit_id":"9f28000d5debe6f845d4d8f694d397a911827cf2"},{"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":"13bcdc91feb8d24567c2f59326e769f9c7d7e9f0","unresolved":true,"context_lines":[{"line_number":49,"context_line":"    \"\"\"Timed out while waiting for a requested provision state.\"\"\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"def from_response(  # type: ignore[no-redef]"},{"line_number":53,"context_line":"    response: requests.Response,"},{"line_number":54,"context_line":"    message: str | None \u003d None,"},{"line_number":55,"context_line":"    traceback: str | None \u003d None,"}],"source_content_type":"text/x-python","patch_set":5,"id":"61eb00c8_52ff30b2","line":52,"updated":"2026-03-11 14:57:34.000000000","message":"I\u0027m confused as to why the no-redef is needed here?","commit_id":"727dcaace44ece77a54336bd329dac5230c1c0ee"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e9511e68e54bb62db973c744c6d4483a1095c608","unresolved":true,"context_lines":[{"line_number":68,"context_line":"        # NOTE(akurilin): These modifications around response object give"},{"line_number":69,"context_line":"        # ability to get all necessary information in method `from_response`"},{"line_number":70,"context_line":"        # from common code, which expecting response object from `requests`"},{"line_number":71,"context_line":"        # library instead of object from `httplib/httplib2` library."},{"line_number":72,"context_line":"        response.status_code \u003d response.status  # type: ignore[attr-defined]"},{"line_number":73,"context_line":"        response.headers \u003d {  # type: ignore[assignment]"},{"line_number":74,"context_line":"            \u0027Content-Type\u0027:"},{"line_number":75,"context_line":"            response.getheader(  # type: ignore[attr-defined]"},{"line_number":76,"context_line":"                \u0027content-type\u0027, \"\")}"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    if hasattr(response, \u0027status_code\u0027):"},{"line_number":79,"context_line":"        # NOTE(jiangfei): These modifications allow SessionClient"}],"source_content_type":"text/x-python","patch_set":5,"id":"6b906e68_fa88f184","line":76,"range":{"start_line":71,"start_character":68,"end_line":76,"end_character":36},"updated":"2026-03-19 11:20:11.000000000","message":"This will go away if you add `types-requests` to the dependency list","commit_id":"727dcaace44ece77a54336bd329dac5230c1c0ee"}]}
