)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"37acf46a491a188c62604b7bd270e9f4e7057741","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6a685a6a_04cb4cdb","updated":"2023-06-08 17:59:15.000000000","message":"I think I maybe like this direction -- the round-tripping through `Namespace` to filter dict keys feels a little weird, though I think I understand the why of it. Since we\u0027re adding this new interface, though, I wonder if it\u0027d be better for us to go ahead and return `Namespace` objects...","commit_id":"4c68b23e6234f6b71be01b2641c541de5f5fedc6"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"18fdf0f2ba506b61b48c45c565ada7edb3f4b7f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c6fe7f32_3ba6a295","in_reply_to":"6a685a6a_04cb4cdb","updated":"2023-06-19 04:53:44.000000000","message":"yeah, basically its a dict key filter as you mention.\nI do wonder that, seeing as we\u0027re iter_namespaces why can\u0027t they be namespace objects. But all the other iter_* methods return a dict, so just following their lead to keep it all consistent.","commit_id":"4c68b23e6234f6b71be01b2641c541de5f5fedc6"}],"swift/common/internal_client.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"7f2a5cbc86f079f6aea2b50310c22c6f9a04605f","unresolved":true,"context_lines":[{"line_number":609,"context_line":"        return self._get_metadata(path, metadata_prefix, acceptable_statuses,"},{"line_number":610,"context_line":"                                  params\u003dparams)"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"    def iter_shard_ranges("},{"line_number":613,"context_line":"            self, account, container, marker\u003d\u0027\u0027, end_marker\u003d\u0027\u0027, includes\u003dNone,"},{"line_number":614,"context_line":"            states\u003d[], include_deleted\u003dFalse, override_deleted\u003dFalse,"},{"line_number":615,"context_line":"            params\u003dNone, acceptable_statuses\u003d(2, HTTP_NOT_FOUND)):"}],"source_content_type":"text/x-python","patch_set":1,"id":"daec686d_c775f679","line":612,"range":{"start_line":612,"start_character":8,"end_line":612,"end_character":25},"updated":"2023-05-09 07:08:45.000000000","message":"The sharder would basically use this as we _want_ the lastest and rich data of full shard ranges, and also happy to take the more expensive newest\u003dTrue hit.\n\nOther things can use this too if they need the data and happy to take the hit. But most the time, if it\u0027s just where should this go, Namespace bounds + name should be enough, say for something like the updater to know where to send an update. Then they can use the iter_namespaces below.","commit_id":"4c68b23e6234f6b71be01b2641c541de5f5fedc6"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"7f2a5cbc86f079f6aea2b50310c22c6f9a04605f","unresolved":true,"context_lines":[{"line_number":674,"context_line":"                         includes the given value; if ``includes`` is"},{"line_number":675,"context_line":"                         specified then ``marker`` and ``end_marker`` are"},{"line_number":676,"context_line":"                         ignored."},{"line_number":677,"context_line":"        :param states: An optional list of either the string or integer"},{"line_number":678,"context_line":"                       representation of"},{"line_number":679,"context_line":"                       :data:`~swift.common.utils.ShardRange.STATES`."},{"line_number":680,"context_line":"        :param include_deleted: Include namespaces marked as deleted."},{"line_number":681,"context_line":"        :param override_deleted: Check a container even if it\u0027s marked as"},{"line_number":682,"context_line":"                                 deleted."},{"line_number":683,"context_line":"        :param params: Dictionary of additional params to add to the request."},{"line_number":684,"context_line":"        :param acceptable_statuses: List of status for valid responses,"},{"line_number":685,"context_line":"                                    defaults to (2, HTTP_NOT_FOUND)."}],"source_content_type":"text/x-python","patch_set":1,"id":"ccd3a758_9d7dda35","line":682,"range":{"start_line":677,"start_character":8,"end_line":682,"end_character":41},"updated":"2023-05-09 07:08:45.000000000","message":"Do any of these actually make sense in a Namespace lookup.. I mean if it\u0027s sent to the container server, yeah, we\u0027d get filtered results which we can return as namespace objects.. but if we get them from memcache they wont have state or delete markers anymore right? So maybe we just simlify the namespace interface.","commit_id":"4c68b23e6234f6b71be01b2641c541de5f5fedc6"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"18fdf0f2ba506b61b48c45c565ada7edb3f4b7f3","unresolved":true,"context_lines":[{"line_number":674,"context_line":"                         includes the given value; if ``includes`` is"},{"line_number":675,"context_line":"                         specified then ``marker`` and ``end_marker`` are"},{"line_number":676,"context_line":"                         ignored."},{"line_number":677,"context_line":"        :param states: An optional list of either the string or integer"},{"line_number":678,"context_line":"                       representation of"},{"line_number":679,"context_line":"                       :data:`~swift.common.utils.ShardRange.STATES`."},{"line_number":680,"context_line":"        :param include_deleted: Include namespaces marked as deleted."},{"line_number":681,"context_line":"        :param override_deleted: Check a container even if it\u0027s marked as"},{"line_number":682,"context_line":"                                 deleted."},{"line_number":683,"context_line":"        :param params: Dictionary of additional params to add to the request."},{"line_number":684,"context_line":"        :param acceptable_statuses: List of status for valid responses,"},{"line_number":685,"context_line":"                                    defaults to (2, HTTP_NOT_FOUND)."}],"source_content_type":"text/x-python","patch_set":1,"id":"ed975e24_2d164efd","line":682,"range":{"start_line":677,"start_character":8,"end_line":682,"end_character":41},"in_reply_to":"ca54ed72_fa46c192","updated":"2023-06-19 04:53:44.000000000","message":"thats true, when we\u0027re going to cache we\u0027d pass in the state, so they\u0027re also be filtered, at least in terms of listing or updating. So stats is probably ok.. although maybe I need to mention the nuiance in the doc string","commit_id":"4c68b23e6234f6b71be01b2641c541de5f5fedc6"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"37acf46a491a188c62604b7bd270e9f4e7057741","unresolved":true,"context_lines":[{"line_number":674,"context_line":"                         includes the given value; if ``includes`` is"},{"line_number":675,"context_line":"                         specified then ``marker`` and ``end_marker`` are"},{"line_number":676,"context_line":"                         ignored."},{"line_number":677,"context_line":"        :param states: An optional list of either the string or integer"},{"line_number":678,"context_line":"                       representation of"},{"line_number":679,"context_line":"                       :data:`~swift.common.utils.ShardRange.STATES`."},{"line_number":680,"context_line":"        :param include_deleted: Include namespaces marked as deleted."},{"line_number":681,"context_line":"        :param override_deleted: Check a container even if it\u0027s marked as"},{"line_number":682,"context_line":"                                 deleted."},{"line_number":683,"context_line":"        :param params: Dictionary of additional params to add to the request."},{"line_number":684,"context_line":"        :param acceptable_statuses: List of status for valid responses,"},{"line_number":685,"context_line":"                                    defaults to (2, HTTP_NOT_FOUND)."}],"source_content_type":"text/x-python","patch_set":1,"id":"ca54ed72_fa46c192","line":682,"range":{"start_line":677,"start_character":8,"end_line":682,"end_character":41},"in_reply_to":"ccd3a758_9d7dda35","updated":"2023-06-08 17:59:15.000000000","message":"`states`, yes -- something like bucket inventories will be interested in `listing`, object updaters in `updating`\n\n`include_deleted` and `override_deleted`, probably not?","commit_id":"4c68b23e6234f6b71be01b2641c541de5f5fedc6"}],"swift/common/utils/__init__.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"7f2a5cbc86f079f6aea2b50310c22c6f9a04605f","unresolved":true,"context_lines":[{"line_number":4534,"context_line":"        \"\"\""},{"line_number":4535,"context_line":"        if not dict_data.get(\u0027name\u0027) or dict_data.get(\u0027lower\u0027) is None \\"},{"line_number":4536,"context_line":"                or dict_data.get(\u0027upper\u0027) is None:"},{"line_number":4537,"context_line":"            raise ValueError(\"Missing expected Namespace values\")"},{"line_number":4538,"context_line":"        return Namespace(dict_data[\u0027name\u0027], dict_data[\u0027lower\u0027],"},{"line_number":4539,"context_line":"                         dict_data[\u0027upper\u0027])"},{"line_number":4540,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3c644086_35c4d8ce","line":4537,"updated":"2023-05-09 07:08:45.000000000","message":"Maybe there is a better error, and probably error the missing key, but you get the idea.","commit_id":"4c68b23e6234f6b71be01b2641c541de5f5fedc6"}]}
