)]}'
{"test/functional/test_mpu.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"023c6a2b907a58498cd8530d9a27a70ce0e06566","unresolved":true,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"class TestMPU(BaseTestMPU):"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    @tf.requires_policies"},{"line_number":202,"context_line":"    def setUp(self):"},{"line_number":203,"context_line":"        super(TestMPU, self).setUp()"},{"line_number":204,"context_line":"        self.mpu_name \u003d uuid4().hex"}],"source_content_type":"text/x-python","patch_set":5,"id":"e454e8be_9168c29a","side":"PARENT","line":201,"updated":"2024-12-17 10:06:31.000000000","message":"This was causing zuul jobs to skip these tests - they run in process with a single policy. This decorator was also unnecessary!","commit_id":"1341c53b4d0c4c365534572b7509057aa08bdce9"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"023c6a2b907a58498cd8530d9a27a70ce0e06566","unresolved":true,"context_lines":[{"line_number":169,"context_line":"        return len(self.body) if self.body else 0"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"class MPUClient(ObjectClient):"},{"line_number":173,"context_line":"    def __init__(self, container, name\u003dNone, use_account\u003d1, url_account\u003d1):"},{"line_number":174,"context_line":"        super(MPUClient, self).__init__(container, name)"},{"line_number":175,"context_line":"        self.use_account \u003d use_account"}],"source_content_type":"text/x-python","patch_set":5,"id":"47176a9d_e5975f14","line":172,"updated":"2024-12-17 10:06:31.000000000","message":"I\u0027ve found this class helpful for keeping all the attributes of an mpu in one place (etag, size, upload id etc)","commit_id":"fa9a04099540b9b9289e13cef23f712901dd0f1e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"023c6a2b907a58498cd8530d9a27a70ce0e06566","unresolved":true,"context_lines":[{"line_number":259,"context_line":""},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"class TestMPU(unittest.TestCase):"},{"line_number":262,"context_line":"    def _assert_dict_equal_piecemeal(self, expected, actual):"},{"line_number":263,"context_line":"        errors \u003d []"},{"line_number":264,"context_line":"        for k, v in expected.items():"},{"line_number":265,"context_line":"            if k not in actual:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ed8d5554_6ee1d212","line":262,"updated":"2024-12-17 10:06:31.000000000","message":"I added this because I was finding zuul errors lacked sufficient detail for debug","commit_id":"fa9a04099540b9b9289e13cef23f712901dd0f1e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"023c6a2b907a58498cd8530d9a27a70ce0e06566","unresolved":true,"context_lines":[{"line_number":274,"context_line":"                errors.append(\u0027Unexpected in actual: %s \u003d %s\u0027 % (k, v))"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        if errors:"},{"line_number":277,"context_line":"            self.maxDiff \u003d None"},{"line_number":278,"context_line":"            self.fail(str(errors))"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"4958a3ca_24d3bbc2","line":277,"updated":"2024-12-17 10:06:31.000000000","message":"IDK if this is strictly necessary","commit_id":"fa9a04099540b9b9289e13cef23f712901dd0f1e"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"023c6a2b907a58498cd8530d9a27a70ce0e06566","unresolved":true,"context_lines":[{"line_number":284,"context_line":"        return cls.user_cont"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    @classmethod"},{"line_number":287,"context_line":"    def _get_singleton_src_obj(cls):"},{"line_number":288,"context_line":"        # Get or create a single unique source object in user container."},{"line_number":289,"context_line":"        # Don\u0027t modify this object."},{"line_number":290,"context_line":"        if not cls.singleton_src:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ca5116b6_42f29593","line":287,"updated":"2024-12-17 10:06:31.000000000","message":"I\u0027ve mixed feelings about these singleton objects - there may be a risk of test coupling if their read only nature is not respected, but I think I\u0027ve seen disks fill up particularly running the in-process versions of func tests, so avoiding creating too many objects seems like a good thing. It\u0027s more significant with mpus where the parts are not sync deleted if the mpu is overwritten","commit_id":"fa9a04099540b9b9289e13cef23f712901dd0f1e"}]}
