)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34556,"name":"Aarni Koskela","email":"akx@iki.fi","username":"akx"},"change_message_id":"db5f48887d87659bd9f8dab59fe9a604e9271f21","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"524149d3_3b6b26cf","updated":"2023-12-11 08:08:32.000000000","message":"Could someone maybe take a look at this? (I just looked at people who\u0027d recently reviewed code changes in this project to tag.)","commit_id":"e7a02d65401a6a3652f8af2a48b7e51490c499a1"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f930086ff2838ab807857286997ba741232e6adc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4919bca0_f132699b","updated":"2023-12-20 13:10:23.000000000","message":"The change mostly looks good to me but I have some doubts about how six.str_types is translated.","commit_id":"e7a02d65401a6a3652f8af2a48b7e51490c499a1"},{"author":{"_account_id":34556,"name":"Aarni Koskela","email":"akx@iki.fi","username":"akx"},"change_message_id":"e07daa560e554617a628d58e165bddbe7283bd6a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"75c439aa_507eeb4b","in_reply_to":"524149d3_3b6b26cf","updated":"2024-01-26 20:07:41.000000000","message":"Done","commit_id":"e7a02d65401a6a3652f8af2a48b7e51490c499a1"},{"author":{"_account_id":34556,"name":"Aarni Koskela","email":"akx@iki.fi","username":"akx"},"change_message_id":"58011fd4982949b9e9e07e3b12c55bc49aa583d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"384bffa7_3319638f","updated":"2023-12-20 13:44:49.000000000","message":"Thanks for the review! I addressed the (well-spotted!) issues.","commit_id":"1833d5bb5cd3833713ee09c051f259d0a2d75162"}],"keystoneclient/common/cms.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f930086ff2838ab807857286997ba741232e6adc","unresolved":true,"context_lines":[{"line_number":161,"context_line":"                                                              properly."},{"line_number":162,"context_line":"    \"\"\""},{"line_number":163,"context_line":"    _ensure_subprocess()"},{"line_number":164,"context_line":"    if isinstance(formatted, (str, bytes)):"},{"line_number":165,"context_line":"        data \u003d bytearray(formatted, _encoding_for_form(inform))"},{"line_number":166,"context_line":"    else:"},{"line_number":167,"context_line":"        data \u003d formatted"}],"source_content_type":"text/x-python","patch_set":2,"id":"049805fe_ef7c09f4","line":164,"range":{"start_line":164,"start_character":29,"end_line":164,"end_character":41},"updated":"2023-12-20 13:10:23.000000000","message":"shouldn\u0027t this be (str,) ?\n\nhttps://github.com/benjaminp/six/blob/02c3bcab0b94eb7a86f6606bc8b02e3ee0a72860/six.py#L41","commit_id":"e7a02d65401a6a3652f8af2a48b7e51490c499a1"},{"author":{"_account_id":34556,"name":"Aarni Koskela","email":"akx@iki.fi","username":"akx"},"change_message_id":"58011fd4982949b9e9e07e3b12c55bc49aa583d1","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                                                              properly."},{"line_number":162,"context_line":"    \"\"\""},{"line_number":163,"context_line":"    _ensure_subprocess()"},{"line_number":164,"context_line":"    if isinstance(formatted, (str, bytes)):"},{"line_number":165,"context_line":"        data \u003d bytearray(formatted, _encoding_for_form(inform))"},{"line_number":166,"context_line":"    else:"},{"line_number":167,"context_line":"        data \u003d formatted"}],"source_content_type":"text/x-python","patch_set":2,"id":"7c7cb6a6_f3f0af08","line":164,"range":{"start_line":164,"start_character":29,"end_line":164,"end_character":41},"in_reply_to":"049805fe_ef7c09f4","updated":"2023-12-20 13:44:49.000000000","message":"Sure – though in fact `bytearray` is a bit wrong here too, since `data` ends up going to `Popen.communicate()`, so it should just be `bytes`. I\u0027ll change that while I\u0027m at it.","commit_id":"e7a02d65401a6a3652f8af2a48b7e51490c499a1"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f930086ff2838ab807857286997ba741232e6adc","unresolved":true,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    \"\"\""},{"line_number":357,"context_line":"    _ensure_subprocess()"},{"line_number":358,"context_line":"    if isinstance(data_to_sign, (str, bytes)):"},{"line_number":359,"context_line":"        data \u003d bytearray(data_to_sign, encoding\u003d\u0027utf-8\u0027)"},{"line_number":360,"context_line":"    else:"},{"line_number":361,"context_line":"        data \u003d data_to_sign"}],"source_content_type":"text/x-python","patch_set":2,"id":"8267eaa4_91efcc55","line":358,"range":{"start_line":358,"start_character":32,"end_line":358,"end_character":44},"updated":"2023-12-20 13:10:23.000000000","message":"ditto","commit_id":"e7a02d65401a6a3652f8af2a48b7e51490c499a1"},{"author":{"_account_id":34556,"name":"Aarni Koskela","email":"akx@iki.fi","username":"akx"},"change_message_id":"58011fd4982949b9e9e07e3b12c55bc49aa583d1","unresolved":false,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    \"\"\""},{"line_number":357,"context_line":"    _ensure_subprocess()"},{"line_number":358,"context_line":"    if isinstance(data_to_sign, (str, bytes)):"},{"line_number":359,"context_line":"        data \u003d bytearray(data_to_sign, encoding\u003d\u0027utf-8\u0027)"},{"line_number":360,"context_line":"    else:"},{"line_number":361,"context_line":"        data \u003d data_to_sign"}],"source_content_type":"text/x-python","patch_set":2,"id":"226a72ef_b50fe89f","line":358,"range":{"start_line":358,"start_character":32,"end_line":358,"end_character":44},"in_reply_to":"8267eaa4_91efcc55","updated":"2023-12-20 13:44:49.000000000","message":"Done","commit_id":"e7a02d65401a6a3652f8af2a48b7e51490c499a1"}],"keystoneclient/tests/unit/test_session.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f930086ff2838ab807857286997ba741232e6adc","unresolved":true,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import argparse"},{"line_number":16,"context_line":"from io import StringIO"},{"line_number":17,"context_line":"import itertools"},{"line_number":18,"context_line":"import logging"},{"line_number":19,"context_line":"from unittest import mock"}],"source_content_type":"text/x-python","patch_set":2,"id":"ddb20dde_95ccf338","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":23},"updated":"2023-12-20 13:10:23.000000000","message":"(nit) I may suggest importing a module(`io`) rather than a class","commit_id":"e7a02d65401a6a3652f8af2a48b7e51490c499a1"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"5c2038c66283e3e32240f666319a8170c296bbbe","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import argparse"},{"line_number":16,"context_line":"from io import StringIO"},{"line_number":17,"context_line":"import itertools"},{"line_number":18,"context_line":"import logging"},{"line_number":19,"context_line":"from unittest import mock"}],"source_content_type":"text/x-python","patch_set":2,"id":"04ec7d18_43873b23","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":23},"in_reply_to":"47029c23_d89e9864","updated":"2023-12-20 15:32:06.000000000","message":"Ah. OK. That makes sense.","commit_id":"e7a02d65401a6a3652f8af2a48b7e51490c499a1"},{"author":{"_account_id":34556,"name":"Aarni Koskela","email":"akx@iki.fi","username":"akx"},"change_message_id":"58011fd4982949b9e9e07e3b12c55bc49aa583d1","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import argparse"},{"line_number":16,"context_line":"from io import StringIO"},{"line_number":17,"context_line":"import itertools"},{"line_number":18,"context_line":"import logging"},{"line_number":19,"context_line":"from unittest import mock"}],"source_content_type":"text/x-python","patch_set":2,"id":"47029c23_d89e9864","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":23},"in_reply_to":"ddb20dde_95ccf338","updated":"2023-12-20 13:44:49.000000000","message":"NAK – `io` is being used as a local name in the tests.","commit_id":"e7a02d65401a6a3652f8af2a48b7e51490c499a1"}],"keystoneclient/tests/unit/v3/test_oauth1.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f930086ff2838ab807857286997ba741232e6adc","unresolved":true,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        self.assertEqual(\u0027HMAC-SHA1\u0027, parameters[\u0027oauth_signature_method\u0027])"},{"line_number":107,"context_line":"        self.assertEqual(\u00271.0\u0027, parameters[\u0027oauth_version\u0027])"},{"line_number":108,"context_line":"        self.assertIsInstance(parameters[\u0027oauth_nonce\u0027], (str, bytes))"},{"line_number":109,"context_line":"        self.assertEqual(oauth_client.client_key,"},{"line_number":110,"context_line":"                         parameters[\u0027oauth_consumer_key\u0027])"},{"line_number":111,"context_line":"        if oauth_client.resource_owner_key:"}],"source_content_type":"text/x-python","patch_set":2,"id":"8e5b3983_9fadec61","line":108,"range":{"start_line":108,"start_character":57,"end_line":108,"end_character":69},"updated":"2023-12-20 13:10:23.000000000","message":"IIUC string_types is (str, ) in python 3.","commit_id":"e7a02d65401a6a3652f8af2a48b7e51490c499a1"},{"author":{"_account_id":34556,"name":"Aarni Koskela","email":"akx@iki.fi","username":"akx"},"change_message_id":"58011fd4982949b9e9e07e3b12c55bc49aa583d1","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        self.assertEqual(\u0027HMAC-SHA1\u0027, parameters[\u0027oauth_signature_method\u0027])"},{"line_number":107,"context_line":"        self.assertEqual(\u00271.0\u0027, parameters[\u0027oauth_version\u0027])"},{"line_number":108,"context_line":"        self.assertIsInstance(parameters[\u0027oauth_nonce\u0027], (str, bytes))"},{"line_number":109,"context_line":"        self.assertEqual(oauth_client.client_key,"},{"line_number":110,"context_line":"                         parameters[\u0027oauth_consumer_key\u0027])"},{"line_number":111,"context_line":"        if oauth_client.resource_owner_key:"}],"source_content_type":"text/x-python","patch_set":2,"id":"8db294a1_61d3ef2a","line":108,"range":{"start_line":108,"start_character":57,"end_line":108,"end_character":69},"in_reply_to":"8e5b3983_9fadec61","updated":"2023-12-20 13:44:49.000000000","message":"Sure!","commit_id":"e7a02d65401a6a3652f8af2a48b7e51490c499a1"}],"keystoneclient/v3/application_credentials.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f930086ff2838ab807857286997ba741232e6adc","unresolved":true,"context_lines":[{"line_number":76,"context_line":"            if not isinstance(roles, list):"},{"line_number":77,"context_line":"                roles \u003d [roles]"},{"line_number":78,"context_line":"            for role in roles:"},{"line_number":79,"context_line":"                if isinstance(role, (str, bytes)):"},{"line_number":80,"context_line":"                    role_list.extend([{\u0027id\u0027: role}])"},{"line_number":81,"context_line":"                elif isinstance(role, dict):"},{"line_number":82,"context_line":"                    role_list.extend([role])"}],"source_content_type":"text/x-python","patch_set":2,"id":"f51dfb19_d63af92d","line":79,"range":{"start_line":79,"start_character":36,"end_line":79,"end_character":48},"updated":"2023-12-20 13:10:23.000000000","message":"ditto","commit_id":"e7a02d65401a6a3652f8af2a48b7e51490c499a1"},{"author":{"_account_id":34556,"name":"Aarni Koskela","email":"akx@iki.fi","username":"akx"},"change_message_id":"58011fd4982949b9e9e07e3b12c55bc49aa583d1","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if not isinstance(roles, list):"},{"line_number":77,"context_line":"                roles \u003d [roles]"},{"line_number":78,"context_line":"            for role in roles:"},{"line_number":79,"context_line":"                if isinstance(role, (str, bytes)):"},{"line_number":80,"context_line":"                    role_list.extend([{\u0027id\u0027: role}])"},{"line_number":81,"context_line":"                elif isinstance(role, dict):"},{"line_number":82,"context_line":"                    role_list.extend([role])"}],"source_content_type":"text/x-python","patch_set":2,"id":"00a67840_705f3467","line":79,"range":{"start_line":79,"start_character":36,"end_line":79,"end_character":48},"in_reply_to":"f51dfb19_d63af92d","updated":"2023-12-20 13:44:49.000000000","message":"Acknowledged","commit_id":"e7a02d65401a6a3652f8af2a48b7e51490c499a1"}]}
