)]}'
{"swift/cli/shard-info.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"832938621082381fce4778f1bd392219b7618248","unresolved":false,"context_lines":[{"line_number":83,"context_line":"          (indent, sr.lower, sr.upper, sr.object_count, sr.bytes_used,"},{"line_number":84,"context_line":"           Timestamp(sr.timestamp).isoformat, sr.timestamp.internal,"},{"line_number":85,"context_line":"           Timestamp(sr.meta_timestamp).isoformat, sr.meta_timestamp.internal,"},{"line_number":86,"context_line":"           ShardRange.STATES[sr.state], sr.state_timestamp.isoformat,"},{"line_number":87,"context_line":"           sr.state_timestamp.internal, sr.deleted, node))"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_776c879b","line":86,"range":{"start_line":86,"start_character":11,"end_line":86,"end_character":39},"updated":"2018-01-18 01:15:53.000000000","message":"Makes me wonder if this should be a property -- sr.state_text maybe?","commit_id":"56978caa2849da4c6654843f6bce926287888822"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"499e15a9d427b0e3106c4305e96705376423b749","unresolved":false,"context_lines":[{"line_number":83,"context_line":"          (indent, sr.lower, sr.upper, sr.object_count, sr.bytes_used,"},{"line_number":84,"context_line":"           Timestamp(sr.timestamp).isoformat, sr.timestamp.internal,"},{"line_number":85,"context_line":"           Timestamp(sr.meta_timestamp).isoformat, sr.meta_timestamp.internal,"},{"line_number":86,"context_line":"           ShardRange.STATES[sr.state], sr.state_timestamp.isoformat,"},{"line_number":87,"context_line":"           sr.state_timestamp.internal, sr.deleted, node))"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_6d6b45f0","line":86,"range":{"start_line":86,"start_character":11,"end_line":86,"end_character":39},"in_reply_to":"7f96bb07_776c879b","updated":"2018-01-18 11:53:37.000000000","message":"nice idea","commit_id":"56978caa2849da4c6654843f6bce926287888822"}],"swift/common/request_helpers.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"832938621082381fce4778f1bd392219b7618248","unresolved":false,"context_lines":[{"line_number":692,"context_line":"    # TODO: add unit test"},{"line_number":693,"context_line":"    return ShardRange("},{"line_number":694,"context_line":"        name,"},{"line_number":695,"context_line":"        headers.get(\u0027x-backend-timestamp\u0027),"},{"line_number":696,"context_line":"        headers.get(\u0027x-backend-shard-lower\u0027),"},{"line_number":697,"context_line":"        headers.get(\u0027x-backend-shard-upper\u0027),"},{"line_number":698,"context_line":"        headers.get(\u0027x-backend-shard-objects\u0027, 0),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_f70df7e7","line":695,"range":{"start_line":695,"start_character":16,"end_line":695,"end_character":19},"updated":"2018-01-18 01:15:53.000000000","message":"Do we ever expect any of these to be missing? Would it be better to just use\n\n headers[\u0027x-backend-timestamp\u0027]\n\nand the like to catch unexpected states early?","commit_id":"56978caa2849da4c6654843f6bce926287888822"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"832938621082381fce4778f1bd392219b7618248","unresolved":false,"context_lines":[{"line_number":699,"context_line":"        headers.get(\u0027x-backend-shard-bytes\u0027, 0),"},{"line_number":700,"context_line":"        headers.get(\u0027x-meta-timestamp\u0027),"},{"line_number":701,"context_line":"        state\u003dheaders.get(\u0027x-backend-shard-state\u0027),"},{"line_number":702,"context_line":"        state_timestamp\u003dheaders.get(\u0027x-backend-shard-state-timestamp\u0027)"},{"line_number":703,"context_line":"    )"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_97fcb3b5","line":702,"updated":"2018-01-18 01:15:53.000000000","message":"I wonder if most/all of these should be passed as keyword args...\n\nAnd we never need to pass around `deleted` as a header, is that right?","commit_id":"56978caa2849da4c6654843f6bce926287888822"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"499e15a9d427b0e3106c4305e96705376423b749","unresolved":false,"context_lines":[{"line_number":699,"context_line":"        headers.get(\u0027x-backend-shard-bytes\u0027, 0),"},{"line_number":700,"context_line":"        headers.get(\u0027x-meta-timestamp\u0027),"},{"line_number":701,"context_line":"        state\u003dheaders.get(\u0027x-backend-shard-state\u0027),"},{"line_number":702,"context_line":"        state_timestamp\u003dheaders.get(\u0027x-backend-shard-state-timestamp\u0027)"},{"line_number":703,"context_line":"    )"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_2d621d0b","line":702,"in_reply_to":"7f96bb07_97fcb3b5","updated":"2018-01-18 11:53:37.000000000","message":"currently deleted is managed by the request verb DELETE but I can imagine making it a header and a flavour of PUT.","commit_id":"56978caa2849da4c6654843f6bce926287888822"}],"swift/common/utils.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"d641e9ffa3c76dcbd506a016117d787fa8f98b3b","unresolved":false,"context_lines":[{"line_number":4299,"context_line":"            updated; defaults to the value of ``created_at``."},{"line_number":4300,"context_line":"        :param deleted: if set the shard range is considered to be deleted."},{"line_number":4301,"context_line":"        :param state: the state, must be one of ShardRange.STATES, defaults to"},{"line_number":4302,"context_line":"            CREATED"},{"line_number":4303,"context_line":"        \"\"\""},{"line_number":4304,"context_line":"        self.account, self.container \u003d self.validate_name(name)"},{"line_number":4305,"context_line":"        self.name \u003d name"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_086cfd99","line":4302,"updated":"2018-01-18 04:09:38.000000000","message":"No state_timestamp param.","commit_id":"56978caa2849da4c6654843f6bce926287888822"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"499e15a9d427b0e3106c4305e96705376423b749","unresolved":false,"context_lines":[{"line_number":4299,"context_line":"            updated; defaults to the value of ``created_at``."},{"line_number":4300,"context_line":"        :param deleted: if set the shard range is considered to be deleted."},{"line_number":4301,"context_line":"        :param state: the state, must be one of ShardRange.STATES, defaults to"},{"line_number":4302,"context_line":"            CREATED"},{"line_number":4303,"context_line":"        \"\"\""},{"line_number":4304,"context_line":"        self.account, self.container \u003d self.validate_name(name)"},{"line_number":4305,"context_line":"        self.name \u003d name"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_2d277dcc","line":4302,"in_reply_to":"7f96bb07_086cfd99","updated":"2018-01-18 11:53:37.000000000","message":"oops will fix","commit_id":"56978caa2849da4c6654843f6bce926287888822"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"832938621082381fce4778f1bd392219b7618248","unresolved":false,"context_lines":[{"line_number":4319,"context_line":"        self.bytes_used \u003d bytes_used"},{"line_number":4320,"context_line":"        # TODO: add getter/setter for deleted similar to other attrs \u0026 validate"},{"line_number":4321,"context_line":"        self.deleted \u003d deleted"},{"line_number":4322,"context_line":"        self._state \u003d None"},{"line_number":4323,"context_line":"        self.state \u003d self.CREATED if state is None else state"},{"line_number":4324,"context_line":"        self._state_timestamp \u003d None"},{"line_number":4325,"context_line":"        self.state_timestamp \u003d state_timestamp"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_d71f9b05","line":4322,"updated":"2018-01-18 01:15:53.000000000","message":"Unneeded? Meh, I suppose setting to None just before we set to something else doesn\u0027t really hurt...","commit_id":"56978caa2849da4c6654843f6bce926287888822"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"499e15a9d427b0e3106c4305e96705376423b749","unresolved":false,"context_lines":[{"line_number":4319,"context_line":"        self.bytes_used \u003d bytes_used"},{"line_number":4320,"context_line":"        # TODO: add getter/setter for deleted similar to other attrs \u0026 validate"},{"line_number":4321,"context_line":"        self.deleted \u003d deleted"},{"line_number":4322,"context_line":"        self._state \u003d None"},{"line_number":4323,"context_line":"        self.state \u003d self.CREATED if state is None else state"},{"line_number":4324,"context_line":"        self._state_timestamp \u003d None"},{"line_number":4325,"context_line":"        self.state_timestamp \u003d state_timestamp"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_cd361904","line":4322,"in_reply_to":"7f96bb07_d71f9b05","updated":"2018-01-18 11:53:37.000000000","message":"MY IDE complains about vars that are first assigned outside of the __init__ so I succumb to its demands","commit_id":"56978caa2849da4c6654843f6bce926287888822"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"832938621082381fce4778f1bd392219b7618248","unresolved":false,"context_lines":[{"line_number":4468,"context_line":"        return \u0027%s\u003c%r to %r as of %s, (%d, %d) as of %s, %s as of %s\u003e\u0027 % ("},{"line_number":4469,"context_line":"            self.__class__.__name__, self.lower, self.upper,"},{"line_number":4470,"context_line":"            self.timestamp.internal, self.object_count, self.bytes_used,"},{"line_number":4471,"context_line":"            self.meta_timestamp.internal, self.state,"},{"line_number":4472,"context_line":"            self.state_timestamp.internal)"},{"line_number":4473,"context_line":""},{"line_number":4474,"context_line":"    def entire_namespace(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_57d94b54","line":4471,"range":{"start_line":4471,"start_character":42,"end_line":4471,"end_character":52},"updated":"2018-01-18 01:15:53.000000000","message":"Better to have the state name/text","commit_id":"56978caa2849da4c6654843f6bce926287888822"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"499e15a9d427b0e3106c4305e96705376423b749","unresolved":false,"context_lines":[{"line_number":4468,"context_line":"        return \u0027%s\u003c%r to %r as of %s, (%d, %d) as of %s, %s as of %s\u003e\u0027 % ("},{"line_number":4469,"context_line":"            self.__class__.__name__, self.lower, self.upper,"},{"line_number":4470,"context_line":"            self.timestamp.internal, self.object_count, self.bytes_used,"},{"line_number":4471,"context_line":"            self.meta_timestamp.internal, self.state,"},{"line_number":4472,"context_line":"            self.state_timestamp.internal)"},{"line_number":4473,"context_line":""},{"line_number":4474,"context_line":"    def entire_namespace(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_0d288194","line":4471,"range":{"start_line":4471,"start_character":42,"end_line":4471,"end_character":52},"in_reply_to":"7f96bb07_57d94b54","updated":"2018-01-18 11:53:37.000000000","message":"+1","commit_id":"56978caa2849da4c6654843f6bce926287888822"}],"swift/container/backend.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"832938621082381fce4778f1bd392219b7618248","unresolved":false,"context_lines":[{"line_number":463,"context_line":"                bytes_used INTEGER DEFAULT 0,"},{"line_number":464,"context_line":"                created_at TEXT,"},{"line_number":465,"context_line":"                meta_timestamp TEXT,"},{"line_number":466,"context_line":"                state TEXT,"},{"line_number":467,"context_line":"                state_timestamp TEXT,"},{"line_number":468,"context_line":"                deleted INTEGER DEFAULT 0"},{"line_number":469,"context_line":"            );"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_d73c7b30","line":466,"range":{"start_line":466,"start_character":22,"end_line":466,"end_character":26},"updated":"2018-01-18 01:15:53.000000000","message":"TEXT, or INTEGER?","commit_id":"56978caa2849da4c6654843f6bce926287888822"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"832938621082381fce4778f1bd392219b7618248","unresolved":false,"context_lines":[{"line_number":1453,"context_line":"            ``marker`` and ``end_marker`` are ignored."},{"line_number":1454,"context_line":"        :param reverse: reverse the result order."},{"line_number":1455,"context_line":"        :param include_deleted: include items that have the delete marker set"},{"line_number":1456,"context_line":"        :param state: restricts the returned list to shard ranges that have the"},{"line_number":1457,"context_line":"            given state."},{"line_number":1458,"context_line":"        :return: a list of instances of :class:`swift.common.utils.ShardRange`"},{"line_number":1459,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_377cbfea","line":1456,"range":{"start_line":1456,"start_character":22,"end_line":1456,"end_character":31},"updated":"2018-01-18 01:15:53.000000000","message":"\u003e if specified, restricts ...","commit_id":"56978caa2849da4c6654843f6bce926287888822"}],"swift/container/server.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"832938621082381fce4778f1bd392219b7618248","unresolved":false,"context_lines":[{"line_number":621,"context_line":"            return HTTPNotFound(request\u003dreq, headers\u003dresp_headers)"},{"line_number":622,"context_line":"        include_deleted \u003d False"},{"line_number":623,"context_line":"        if items \u003d\u003d \u0027shard\u0027:"},{"line_number":624,"context_line":"            state \u003d ShardRange.STATES_BY_NAME.get(get_param(req, \u0027state\u0027))"},{"line_number":625,"context_line":"            container_list \u003d broker.get_shard_ranges("},{"line_number":626,"context_line":"                marker, end_marker, includes, reverse, state\u003dstate)"},{"line_number":627,"context_line":"        elif info.get(\u0027db_state\u0027) \u003d\u003d DB_STATE_SHARDING:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_77e327a5","line":624,"updated":"2018-01-18 01:15:53.000000000","message":"I\u0027d kinda prefer that we return 400 rather than paper over a KeyError...","commit_id":"56978caa2849da4c6654843f6bce926287888822"}],"swift/container/sharder.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"832938621082381fce4778f1bd392219b7618248","unresolved":false,"context_lines":[{"line_number":686,"context_line":"                             (op, shard_range, obj_path))"},{"line_number":687,"context_line":"            headers \u003d shard_range_to_headers(shard_range)"},{"line_number":688,"context_line":"            headers[\u0027x-backend-record-type\u0027] \u003d RECORD_TYPE_SHARD_NODE"},{"line_number":689,"context_line":"            headers[\u0027x-size\u0027] \u003d 0"},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"            for node in nodes:"},{"line_number":692,"context_line":"                self.cpool.spawn("}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_17bae36c","line":689,"range":{"start_line":689,"start_character":12,"end_line":689,"end_character":33},"updated":"2018-01-18 01:15:53.000000000","message":"Huh. This rather sticks out as an oddity now...","commit_id":"56978caa2849da4c6654843f6bce926287888822"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"499e15a9d427b0e3106c4305e96705376423b749","unresolved":false,"context_lines":[{"line_number":686,"context_line":"                             (op, shard_range, obj_path))"},{"line_number":687,"context_line":"            headers \u003d shard_range_to_headers(shard_range)"},{"line_number":688,"context_line":"            headers[\u0027x-backend-record-type\u0027] \u003d RECORD_TYPE_SHARD_NODE"},{"line_number":689,"context_line":"            headers[\u0027x-size\u0027] \u003d 0"},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"            for node in nodes:"},{"line_number":692,"context_line":"                self.cpool.spawn("}],"source_content_type":"text/x-python","patch_set":5,"id":"7f96bb07_1016584a","line":689,"range":{"start_line":689,"start_character":12,"end_line":689,"end_character":33},"in_reply_to":"7f96bb07_17bae36c","updated":"2018-01-18 11:53:37.000000000","message":"yes it\u0027s on my radar in another patch","commit_id":"56978caa2849da4c6654843f6bce926287888822"}]}
