)]}'
{"swift/common/storage_policy.py":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"1dee4be2351c3329cd1667955475e6b34ac7013c","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        if self.idx \u003c 0:"},{"line_number":171,"context_line":"            raise PolicyError(\u0027Invalid index\u0027, idx)"},{"line_number":172,"context_line":"        self.alias_list \u003d []"},{"line_number":173,"context_line":"        self._validate_policy_name(name):"},{"line_number":174,"context_line":"        self.alias_list.append(name)"},{"line_number":175,"context_line":"        if aliases:"},{"line_number":176,"context_line":"            names_list \u003d list_from_csv(aliases)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a57f1b5_2099a8c4","line":173,"range":{"start_line":173,"start_character":40,"end_line":173,"end_character":41},"updated":"2016-02-12 01:25:36.000000000","message":"I got a syntax error with this.\n\nTo fix:\n\n self._validate_policy_name(name)","commit_id":"3a0c6870a95c73e3367e1e88099625c45173799e"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"1dee4be2351c3329cd1667955475e6b34ac7013c","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        :param name: a new alias for the storage policy"},{"line_number":317,"context_line":"        \"\"\""},{"line_number":318,"context_line":"        if self._validate_policy_name(name):"},{"line_number":319,"context_line":"            self.alias_list.append(name)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def remove_name(self, name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a57f1b5_6058008b","line":318,"updated":"2016-02-12 01:25:36.000000000","message":"Looks like we need to remove \"if\" here too.","commit_id":"3a0c6870a95c73e3367e1e88099625c45173799e"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"64a312a7de6462ca314ed41623593bbbcd19af5a","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        if not all(c in VALID_CHARS for c in name):"},{"line_number":296,"context_line":"            msg \u003d \u0027Names are used as HTTP headers, and can not \u0027 \\"},{"line_number":297,"context_line":"                  \u0027reliably contain any characters not in %r. \u0027 \\"},{"line_number":298,"context_line":"                  \u0027Invalid name %r\u0027 % (VALID_CHARS, name)"},{"line_number":299,"context_line":"            raise PolicyError(msg, self.idx)"},{"line_number":300,"context_line":"        if name.upper() \u003d\u003d LEGACY_POLICY_NAME.upper() and self.idx !\u003d 0:"},{"line_number":301,"context_line":"            msg \u003d \u0027The name %s is reserved for policy index 0. \u0027 \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_43eb5ddf","line":298,"updated":"2016-02-12 20:37:31.000000000","message":"there\u0027s always textwrap.dedent if you wanna use triple quotes instead of line continuation!","commit_id":"3addd3a3385702da70cc0d01e98c60f28d5f2d15"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"64a312a7de6462ca314ed41623593bbbcd19af5a","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        :param name: a new alias for the storage policy"},{"line_number":317,"context_line":"        \"\"\""},{"line_number":318,"context_line":"        self._validate_policy_name(name)"},{"line_number":319,"context_line":"        self.alias_list.append(name)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def remove_name(self, name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_a3b6d1f6","line":318,"updated":"2016-02-12 20:37:31.000000000","message":"well there you go - missing not name check - fixed - nice.","commit_id":"3addd3a3385702da70cc0d01e98c60f28d5f2d15"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"0a6eef902e166a837857f04446554a8617ffe14e","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        if self.idx \u003c 0:"},{"line_number":171,"context_line":"            raise PolicyError(\u0027Invalid index\u0027, idx)"},{"line_number":172,"context_line":"        self.alias_list \u003d []"},{"line_number":173,"context_line":"        self._validate_policy_name(name)"},{"line_number":174,"context_line":"        self.alias_list.append(name)"},{"line_number":175,"context_line":"        if aliases:"},{"line_number":176,"context_line":"            names_list \u003d list_from_csv(aliases)"},{"line_number":177,"context_line":"            for alias in names_list:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_e1a2aa4a","line":174,"range":{"start_line":173,"start_character":1,"end_line":174,"end_character":36},"updated":"2016-03-30 02:32:37.000000000","message":"Nits) Looks like we can replace these 2 lines by self.add_name(name)","commit_id":"7dcab1b4c190891483f7a31af2c8a8f8e359d76e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"b0e96d35458c9b2267247ea3e88adaa4258e068d","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        if self.idx \u003c 0:"},{"line_number":171,"context_line":"            raise PolicyError(\u0027Invalid index\u0027, idx)"},{"line_number":172,"context_line":"        self.alias_list \u003d []"},{"line_number":173,"context_line":"        self._validate_policy_name(name)"},{"line_number":174,"context_line":"        self.alias_list.append(name)"},{"line_number":175,"context_line":"        if aliases:"},{"line_number":176,"context_line":"            names_list \u003d list_from_csv(aliases)"},{"line_number":177,"context_line":"            for alias in names_list:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_2c0f792f","line":174,"range":{"start_line":173,"start_character":1,"end_line":174,"end_character":36},"in_reply_to":"ba0121b8_e1a2aa4a","updated":"2016-03-30 02:42:09.000000000","message":"Done","commit_id":"7dcab1b4c190891483f7a31af2c8a8f8e359d76e"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"0a6eef902e166a837857f04446554a8617ffe14e","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            for alias in names_list:"},{"line_number":178,"context_line":"                if alias \u003d\u003d name:"},{"line_number":179,"context_line":"                    continue"},{"line_number":180,"context_line":"                self._validate_policy_name(alias)"},{"line_number":181,"context_line":"                self.alias_list.append(alias)"},{"line_number":182,"context_line":"        self.is_deprecated \u003d config_true_value(is_deprecated)"},{"line_number":183,"context_line":"        self.is_default \u003d config_true_value(is_default)"},{"line_number":184,"context_line":"        if self.policy_type not in BaseStoragePolicy.policy_type_to_policy_cls:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_2185c2ac","line":181,"range":{"start_line":180,"start_character":0,"end_line":181,"end_character":45},"updated":"2016-03-30 02:32:37.000000000","message":"Same as above.","commit_id":"7dcab1b4c190891483f7a31af2c8a8f8e359d76e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"b0e96d35458c9b2267247ea3e88adaa4258e068d","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            for alias in names_list:"},{"line_number":178,"context_line":"                if alias \u003d\u003d name:"},{"line_number":179,"context_line":"                    continue"},{"line_number":180,"context_line":"                self._validate_policy_name(alias)"},{"line_number":181,"context_line":"                self.alias_list.append(alias)"},{"line_number":182,"context_line":"        self.is_deprecated \u003d config_true_value(is_deprecated)"},{"line_number":183,"context_line":"        self.is_default \u003d config_true_value(is_default)"},{"line_number":184,"context_line":"        if self.policy_type not in BaseStoragePolicy.policy_type_to_policy_cls:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_8c1e8561","line":181,"range":{"start_line":180,"start_character":0,"end_line":181,"end_character":45},"in_reply_to":"ba0121b8_2185c2ac","updated":"2016-03-30 02:42:09.000000000","message":"Done","commit_id":"7dcab1b4c190891483f7a31af2c8a8f8e359d76e"}],"test/unit/common/test_storage_policy.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"64a312a7de6462ca314ed41623593bbbcd19af5a","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        extra_commas_conf \u003d self._conf(\"\"\""},{"line_number":378,"context_line":"        [storage-policy:0]"},{"line_number":379,"context_line":"        name \u003d one"},{"line_number":380,"context_line":"        aliases \u003d one, , "},{"line_number":381,"context_line":"        default \u003d yes"},{"line_number":382,"context_line":"        \"\"\")"},{"line_number":383,"context_line":"        # Extra blank entries should be silently dropped"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_03c80573","line":380,"updated":"2016-02-12 20:37:31.000000000","message":"is the trailing whitespace needed?  I mean you can remove it and the test still passes - but I think the idea is just that it should work and not throw an error - which is a useful if not terribly strong assertion.","commit_id":"3addd3a3385702da70cc0d01e98c60f28d5f2d15"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d188ce85a70c225acea969b3504a2e9be985fbcd","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        extra_commas_conf \u003d self._conf(\"\"\""},{"line_number":378,"context_line":"        [storage-policy:0]"},{"line_number":379,"context_line":"        name \u003d one"},{"line_number":380,"context_line":"        aliases \u003d one, , "},{"line_number":381,"context_line":"        default \u003d yes"},{"line_number":382,"context_line":"        \"\"\")"},{"line_number":383,"context_line":"        # Extra blank entries should be silently dropped"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a54edaf_83083e2a","line":380,"in_reply_to":"3a57f1b5_03c80573","updated":"2016-02-13 01:15:08.000000000","message":"Not really, and yeah, pep8 doesn\u0027t like it.","commit_id":"3addd3a3385702da70cc0d01e98c60f28d5f2d15"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"64a312a7de6462ca314ed41623593bbbcd19af5a","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        aliases \u003d one, , "},{"line_number":381,"context_line":"        default \u003d yes"},{"line_number":382,"context_line":"        \"\"\")"},{"line_number":383,"context_line":"        # Extra blank entries should be silently dropped"},{"line_number":384,"context_line":"        policies \u003d parse_storage_policies(extra_commas_conf)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        bad_conf \u003d self._conf(\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a57f1b5_23a8a176","line":383,"updated":"2016-02-12 20:37:31.000000000","message":"is that true?  not an error?","commit_id":"3addd3a3385702da70cc0d01e98c60f28d5f2d15"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d188ce85a70c225acea969b3504a2e9be985fbcd","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        aliases \u003d one, , "},{"line_number":381,"context_line":"        default \u003d yes"},{"line_number":382,"context_line":"        \"\"\")"},{"line_number":383,"context_line":"        # Extra blank entries should be silently dropped"},{"line_number":384,"context_line":"        policies \u003d parse_storage_policies(extra_commas_conf)"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        bad_conf \u003d self._conf(\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a54edaf_c34cf678","line":383,"in_reply_to":"3a57f1b5_23a8a176","updated":"2016-02-13 01:15:08.000000000","message":"Yep, it uses list_from_csv which drops blank values [1]. Which is why it didn\u0027t matter much that add_name skipped the not-name check.\n\n[1] https://github.com/openstack/swift/blob/2.6.0/swift/common/utils.py#L2736","commit_id":"3addd3a3385702da70cc0d01e98c60f28d5f2d15"}]}
