)]}'
{"smaug/services/protection/bank_plugin.py":[{"author":{"_account_id":19346,"name":"yinwei","email":"yinweiishere@icloud.com","username":"yinwei"},"change_message_id":"6067ff45a542c6c09dfdd4a9ad389083b826ae1c","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        return"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @abc.abstractmethod"},{"line_number":58,"context_line":"    def list_objects(self, prefix\u003dNone):"},{"line_number":59,"context_line":"        return"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_af606902","line":58,"updated":"2016-02-29 01:01:20.000000000","message":"One question is about this interface, if only prefix is provided, what about the pagination of the list result? At least, we need two params like anchor and limit to do pagination.","commit_id":"78d0baf3e512034dfd8e0f138a1d65c04254d830"},{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"d975ff8d2fa549ac25d1879a3be5c5229751a356","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        return"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @abc.abstractmethod"},{"line_number":58,"context_line":"    def list_objects(self, prefix\u003dNone):"},{"line_number":59,"context_line":"        return"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_343e4a28","line":58,"in_reply_to":"9aed3d3a_af606902","updated":"2016-02-29 16:14:31.000000000","message":"You are correct! Didn\u0027t even think about it.","commit_id":"78d0baf3e512034dfd8e0f138a1d65c04254d830"},{"author":{"_account_id":15069,"name":"zhonghuali","email":"lizhonghua.li@huawei.com","username":"sloblee"},"change_message_id":"ef3f30fd58ce5f1412a5e1dd51ab6faca0bb5c74","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        return"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class BankSection(BankPlugin):"},{"line_number":67,"context_line":"    \"\"\"Bank Section compartmentalizes a section of a bank."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    Bank section is used when an object wants to pass a section of"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_38df7d0e","line":66,"range":{"start_line":66,"start_character":6,"end_line":66,"end_character":17},"updated":"2016-02-29 03:10:47.000000000","message":"I am not sure i understood the BackSection\u0027s responsibility correctly, it seems that it can be replaced by a decorator, am I right?","commit_id":"78d0baf3e512034dfd8e0f138a1d65c04254d830"},{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"d975ff8d2fa549ac25d1879a3be5c5229751a356","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        return"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class BankSection(BankPlugin):"},{"line_number":67,"context_line":"    \"\"\"Bank Section compartmentalizes a section of a bank."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    Bank section is used when an object wants to pass a section of"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_94f0f692","line":66,"range":{"start_line":66,"start_character":6,"end_line":66,"end_character":17},"in_reply_to":"9aed3d3a_38df7d0e","updated":"2016-02-29 16:14:31.000000000","message":"It\u0027s a proxy class that limits the access to only a subsection of the bank. I don\u0027t see how python decorators relate to this.","commit_id":"78d0baf3e512034dfd8e0f138a1d65c04254d830"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"785c4f917f84210763f119a890c1b48d78cd18b6","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    \"\"\""},{"line_number":73,"context_line":"    def __init__(self, bank, prefix, is_writable\u003dTrue):"},{"line_number":74,"context_line":"        self._bank \u003d bank"},{"line_number":75,"context_line":"        self._prefix \u003d prefix"},{"line_number":76,"context_line":"        self._is_writable \u003d is_writable"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_8410e45a","line":75,"updated":"2016-02-29 07:02:11.000000000","message":"Suggest validating the input prefix, if it\u0027s None, convert to an empty string.","commit_id":"78d0baf3e512034dfd8e0f138a1d65c04254d830"},{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"d975ff8d2fa549ac25d1879a3be5c5229751a356","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    \"\"\""},{"line_number":73,"context_line":"    def __init__(self, bank, prefix, is_writable\u003dTrue):"},{"line_number":74,"context_line":"        self._bank \u003d bank"},{"line_number":75,"context_line":"        self._prefix \u003d prefix"},{"line_number":76,"context_line":"        self._is_writable \u003d is_writable"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_d47a7ef0","line":75,"in_reply_to":"9aed3d3a_8410e45a","updated":"2016-02-29 16:14:31.000000000","message":"Done","commit_id":"78d0baf3e512034dfd8e0f138a1d65c04254d830"},{"author":{"_account_id":15069,"name":"zhonghuali","email":"lizhonghua.li@huawei.com","username":"sloblee"},"change_message_id":"ef3f30fd58ce5f1412a5e1dd51ab6faca0bb5c74","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _prepend_prefix(self, key):"},{"line_number":83,"context_line":"        if not key:"},{"line_number":84,"context_line":"            raise RuntimeError(\"No key specified\")"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        return \"%s/%s\" % (self._prefix, key)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_38a3fdb3","line":84,"range":{"start_line":84,"start_character":18,"end_line":84,"end_character":30},"updated":"2016-02-29 03:10:47.000000000","message":"please use marker function, follow the doc:http://docs.openstack.org/developer/oslo.i18n/guidelines.html\nplease check other places.","commit_id":"78d0baf3e512034dfd8e0f138a1d65c04254d830"},{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"d975ff8d2fa549ac25d1879a3be5c5229751a356","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _prepend_prefix(self, key):"},{"line_number":83,"context_line":"        if not key:"},{"line_number":84,"context_line":"            raise RuntimeError(\"No key specified\")"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        return \"%s/%s\" % (self._prefix, key)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_54794ec7","line":84,"range":{"start_line":84,"start_character":18,"end_line":84,"end_character":30},"in_reply_to":"9aed3d3a_38a3fdb3","updated":"2016-02-29 16:14:31.000000000","message":"Done","commit_id":"78d0baf3e512034dfd8e0f138a1d65c04254d830"},{"author":{"_account_id":15069,"name":"zhonghuali","email":"lizhonghua.li@huawei.com","username":"sloblee"},"change_message_id":"ef3f30fd58ce5f1412a5e1dd51ab6faca0bb5c74","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            self._prepend_prefix(key),"},{"line_number":109,"context_line":"        )"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def list_objects(self, prefix\u003dNone):"},{"line_number":112,"context_line":"        if not prefix:"},{"line_number":113,"context_line":"            prefix \u003d self._prefix"},{"line_number":114,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_38977ded","line":111,"range":{"start_line":111,"start_character":8,"end_line":111,"end_character":20},"updated":"2016-02-29 03:10:47.000000000","message":"I am not sure why need the prefix parameter here, if we want to query a sub-section collection, it\u0027s more reasonable to be a class method or static method rather than a member method.","commit_id":"78d0baf3e512034dfd8e0f138a1d65c04254d830"},{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"d975ff8d2fa549ac25d1879a3be5c5229751a356","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            self._prepend_prefix(key),"},{"line_number":109,"context_line":"        )"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def list_objects(self, prefix\u003dNone):"},{"line_number":112,"context_line":"        if not prefix:"},{"line_number":113,"context_line":"            prefix \u003d self._prefix"},{"line_number":114,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_54278ec9","line":111,"range":{"start_line":111,"start_character":8,"end_line":111,"end_character":20},"in_reply_to":"9aed3d3a_38977ded","updated":"2016-02-29 16:14:31.000000000","message":"The fact that it\u0027s a section should be transparent to the caller so we have to implement the BankPlugin interface","commit_id":"78d0baf3e512034dfd8e0f138a1d65c04254d830"}]}
