)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"b735280274828af002694b0cc70c58e5b004829b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"92a59bcb_40618c79","updated":"2025-02-05 15:41:24.000000000","message":"WIP because I\u0027d like to consider alternatives","commit_id":"5dab7ab32919a5f2b72964192bb7106ce2537000"}],"swift/common/request_helpers.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"95f77ee167452770328869ed51e367413e096c7f","unresolved":true,"context_lines":[{"line_number":19,"context_line":"Why not swift.common.utils, you ask? Because this way we can import things"},{"line_number":20,"context_line":"from swob in here without creating circular imports."},{"line_number":21,"context_line":"\"\"\""},{"line_number":22,"context_line":"import cgi"},{"line_number":23,"context_line":"import itertools"},{"line_number":24,"context_line":"import time"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"e0d09694_5f50fe4e","line":22,"range":{"start_line":22,"start_character":7,"end_line":22,"end_character":10},"updated":"2025-01-24 19:11:49.000000000","message":"Shoot, we still need to close the loop on https://review.opendev.org/c/openstack/swift/+/887908 :-/","commit_id":"1646bba39703b9e72001e43c3ce56d0b5b7d778c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"95f77ee167452770328869ed51e367413e096c7f","unresolved":true,"context_lines":[{"line_number":1042,"context_line":""},{"line_number":1043,"context_line":"    def chunk_update(self, chunk, requested_size\u003dNone, *args, **kwargs):"},{"line_number":1044,"context_line":"        if self.watchers:"},{"line_number":1045,"context_line":"            self.hasher.update(chunk)"},{"line_number":1046,"context_line":"        return chunk"},{"line_number":1047,"context_line":""},{"line_number":1048,"context_line":"    def digest(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9b792439_8399f5cc","line":1045,"updated":"2025-01-24 19:11:49.000000000","message":"This feels like the start of some Swift koan -- if a request is made but no one\u0027s there to check the etag, do we still do an MD5?\n\n[Yes](https://github.com/openstack/swift/blob/2.34.0/swift/common/middleware/crypto/encrypter.py#L194), [all](https://github.com/openstack/swift/blob/2.34.0/swift/common/middleware/crypto/encrypter.py#L197) [the](https://github.com/openstack/swift/blob/2.34.0/swift/proxy/controllers/obj.py#L3130) [freakin\u0027](https://github.com/openstack/swift/blob/2.34.0/swift/proxy/controllers/obj.py#L3147) [time](https://github.com/openstack/swift/blob/2.34.0/swift/common/utils/__init__.py#L1097).","commit_id":"1646bba39703b9e72001e43c3ce56d0b5b7d778c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"95f77ee167452770328869ed51e367413e096c7f","unresolved":true,"context_lines":[{"line_number":1113,"context_line":"    else:"},{"line_number":1114,"context_line":"        # TODO: improve the watcher reference"},{"line_number":1115,"context_line":"        hasher \u003d MD5HashingInput(req.environ[\u0027wsgi.input\u0027],"},{"line_number":1116,"context_line":"                                 EtagOverride.override_hdr_key)  # yuk"},{"line_number":1117,"context_line":"        req.environ[\u0027wsgi.input\u0027] \u003d  hasher"},{"line_number":1118,"context_line":"        req.environ[key] \u003d hasher"},{"line_number":1119,"context_line":"    return EtagOverride(req, hasher)"}],"source_content_type":"text/x-python","patch_set":1,"id":"6e617858_6b085dd5","line":1116,"updated":"2025-01-24 19:11:49.000000000","message":"I... what? Somehow that was **not** what I expected a `watcher` to look like.","commit_id":"1646bba39703b9e72001e43c3ce56d0b5b7d778c"}]}
