)]}'
{"openstackclient/identity/v3/policy.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9a0c840b3e2a999d00a127cb21b19411d7def883","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        try:"},{"line_number":53,"context_line":"            file \u003d open(parsed_args.blob_file)"},{"line_number":54,"context_line":"            blob \u003d file.read().strip()"},{"line_number":55,"context_line":"        except Exception:"},{"line_number":56,"context_line":"            msg \u003d \"Policy not created, could not read input blob-file \\n\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1NM%3D","line":53,"updated":"2013-03-25 20:22:14.000000000","message":"use \"with open() ...\" so that the file doesn\u0027t get left open.","commit_id":"81a351d4844325d7577cad752c4e5478b1a17d20"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9a0c840b3e2a999d00a127cb21b19411d7def883","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            file \u003d open(parsed_args.blob_file)"},{"line_number":54,"context_line":"            blob \u003d file.read().strip()"},{"line_number":55,"context_line":"        except Exception:"},{"line_number":56,"context_line":"            msg \u003d \"Policy not created, could not read input blob-file \\n\""},{"line_number":57,"context_line":"            raise exceptions.FileNotFoundError(msg)"},{"line_number":58,"context_line":"        else:"},{"line_number":59,"context_line":"            identity_client \u003d self.app.client_manager.identity"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1NI%3D","line":56,"updated":"2013-03-25 20:22:14.000000000","message":"Include the filename in the error message.","commit_id":"81a351d4844325d7577cad752c4e5478b1a17d20"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9a0c840b3e2a999d00a127cb21b19411d7def883","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        except Exception:"},{"line_number":56,"context_line":"            msg \u003d \"Policy not created, could not read input blob-file \\n\""},{"line_number":57,"context_line":"            raise exceptions.FileNotFoundError(msg)"},{"line_number":58,"context_line":"        else:"},{"line_number":59,"context_line":"            identity_client \u003d self.app.client_manager.identity"},{"line_number":60,"context_line":"            policy \u003d identity_client.policies.create("},{"line_number":61,"context_line":"                blob, type\u003dparsed_args.type"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1NE%3D","line":58,"updated":"2013-03-25 20:22:14.000000000","message":"suggest remove else and level of indentation.","commit_id":"81a351d4844325d7577cad752c4e5478b1a17d20"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9a0c840b3e2a999d00a127cb21b19411d7def883","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":84,"context_line":"        identity_client \u003d self.app.client_manager.identity"},{"line_number":85,"context_line":"        identity_client.policies.delete(parsed_args.policy)"},{"line_number":86,"context_line":"        return"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class ListPolicy(lister.Lister):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1M4%3D","line":86,"updated":"2013-03-25 20:22:14.000000000","message":"(nit) remove useless statement.","commit_id":"81a351d4844325d7577cad752c4e5478b1a17d20"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9a0c840b3e2a999d00a127cb21b19411d7def883","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        if parsed_args.blob_file:"},{"line_number":150,"context_line":"            try:"},{"line_number":151,"context_line":"                file \u003d open(parsed_args.blob_file)"},{"line_number":152,"context_line":"                blob \u003d file.read().strip()"},{"line_number":153,"context_line":"            except Exception:"},{"line_number":154,"context_line":"                msg \u003d \"Policy not updated, could not read input blob-file \\n\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1Mk%3D","line":151,"updated":"2013-03-25 20:22:14.000000000","message":"use \"with open() ...\" form so file isn\u0027t left open.","commit_id":"81a351d4844325d7577cad752c4e5478b1a17d20"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"9a0c840b3e2a999d00a127cb21b19411d7def883","unresolved":false,"context_lines":[{"line_number":152,"context_line":"                blob \u003d file.read().strip()"},{"line_number":153,"context_line":"            except Exception:"},{"line_number":154,"context_line":"                msg \u003d \"Policy not updated, could not read input blob-file \\n\""},{"line_number":155,"context_line":"                raise exceptions.FileNotFoundError(msg)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        kwargs \u003d {}"},{"line_number":158,"context_line":"        if blob:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1Mc%3D","line":155,"updated":"2013-03-25 20:22:14.000000000","message":"suggest move duplicated code to a separate function and share it.","commit_id":"81a351d4844325d7577cad752c4e5478b1a17d20"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"2c15c466685cff422ee0e7c12175e9aed7e693fe","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        parser.add_argument("},{"line_number":37,"context_line":"            \u0027--type\u0027,"},{"line_number":38,"context_line":"            metavar\u003d\u0027\u003cpolicy-type\u003e\u0027,"},{"line_number":39,"context_line":"            default\u003d\"application/json\","},{"line_number":40,"context_line":"            help\u003d\u0027New MIME Type of the policy blob - i.e.: application/json\u0027,"},{"line_number":41,"context_line":"        )"},{"line_number":42,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2F0Os%3D","line":39,"updated":"2013-03-26 14:16:12.000000000","message":"Would it make sense to default to trying to guess the mimetype based on the filename? http://docs.python.org/2/library/mimetypes.html#mimetypes.guess_type","commit_id":"76e06d144e70c0f532f0258c7176013e91c20fd2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"829f6f04ad7326272dd300145e4996c57dfcdd13","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        parser.add_argument("},{"line_number":37,"context_line":"            \u0027--type\u0027,"},{"line_number":38,"context_line":"            metavar\u003d\u0027\u003cpolicy-type\u003e\u0027,"},{"line_number":39,"context_line":"            default\u003d\"application/json\","},{"line_number":40,"context_line":"            help\u003d\u0027New MIME Type of the policy blob - i.e.: application/json\u0027,"},{"line_number":41,"context_line":"        )"},{"line_number":42,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2Fz30%3D","line":39,"in_reply_to":"AAAAOH%2F%2F0Os%3D","updated":"2013-03-26 17:41:35.000000000","message":"I\u0027m okay with that, if a mime type is specified in the arguments, it will proceed with that one (no guessing). \n\nOtherwise, it will guess based on the input file\u0027s extension; but if it cannot determine the mime type, it will default to \"None\", do we want to default back to \"application/json\" instead?","commit_id":"76e06d144e70c0f532f0258c7176013e91c20fd2"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"2c15c466685cff422ee0e7c12175e9aed7e693fe","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"def _read_blob_file_contents(blob_file):"},{"line_number":184,"context_line":"    with open(blob_file) as file:"},{"line_number":185,"context_line":"        blob \u003d file.read().strip()"},{"line_number":186,"context_line":"    return blob"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2F0OU%3D","line":185,"updated":"2013-03-26 14:16:12.000000000","message":"If this is going to treat the contents of the file as a string instead of just bytes, should it be doing something about encodings?","commit_id":"76e06d144e70c0f532f0258c7176013e91c20fd2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"829f6f04ad7326272dd300145e4996c57dfcdd13","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"def _read_blob_file_contents(blob_file):"},{"line_number":184,"context_line":"    with open(blob_file) as file:"},{"line_number":185,"context_line":"        blob \u003d file.read().strip()"},{"line_number":186,"context_line":"    return blob"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2Fz3c%3D","line":185,"in_reply_to":"AAAAOH%2F%2F0OU%3D","updated":"2013-03-26 17:41:35.000000000","message":"I\u0027m going to hope others chime in on this one.","commit_id":"76e06d144e70c0f532f0258c7176013e91c20fd2"}]}
