)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"39277337a1e2f30a64f469eaa38cf0bb76cd619e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bd65e1dc_0931fd9e","updated":"2024-01-22 17:13:54.000000000","message":"Strawman for review - I\u0027m not convinced this is the right fix as it changes the md5 digest calculation which has broader impact in other projects unit tests (at least nova).","commit_id":"7fc66ed06eb4491422d25c456dcd5aa539f54aff"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"e889cbeb4666b39f352dc23cf2701f9aa5e103f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"dc6decbf_677aac24","in_reply_to":"bd65e1dc_0931fd9e","updated":"2024-01-22 17:22:09.000000000","message":"Yes I\u0027m wondering the same thing. It seems weird that change the md5 digest calculation.","commit_id":"7fc66ed06eb4491422d25c456dcd5aa539f54aff"},{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"35304da3d181e21d0fe059accba000d06d560617","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f839dbc7_386d2e4c","updated":"2024-02-02 10:07:04.000000000","message":"An alternative approach which produces consistent hashing results across Pythons.","commit_id":"8dd97f10e2f86c38f5e3130b31194f98d59764b9"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"a5e2242eaffd440b622eb39ce802a5230764953d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3b980f03_a6264b75","updated":"2024-08-01 09:30:41.000000000","message":"I agree with the comments of Takashi about the alias and blank line.","commit_id":"bb39b909a005261b31ebe28de0b4a755139b6fd6"}],"oslo_versionedobjects/fixture.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"eb2c36bf6dfc8c02083ccb5f75504050d05ce48b","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from collections import namedtuple"},{"line_number":24,"context_line":"from collections import OrderedDict"},{"line_number":25,"context_line":"from reprlib import recursive_repr as _recursive_repr"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import copy"},{"line_number":28,"context_line":"import datetime"}],"source_content_type":"text/x-python","patch_set":4,"id":"a7bd0ea4_c3e5e846","line":25,"range":{"start_line":25,"start_character":38,"end_line":25,"end_character":53},"updated":"2024-02-20 09:51:24.000000000","message":"this aliasing may not be needed and you can just use recursive_repr","commit_id":"bb39b909a005261b31ebe28de0b4a755139b6fd6"},{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"5fdb03636d9e335b7916a21db310931844d96219","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from collections import namedtuple"},{"line_number":24,"context_line":"from collections import OrderedDict"},{"line_number":25,"context_line":"from reprlib import recursive_repr as _recursive_repr"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import copy"},{"line_number":28,"context_line":"import datetime"}],"source_content_type":"text/x-python","patch_set":4,"id":"648884c1_a30b430a","line":25,"range":{"start_line":25,"start_character":38,"end_line":25,"end_character":53},"in_reply_to":"a7bd0ea4_c3e5e846","updated":"2024-08-01 18:22:57.000000000","message":"Done","commit_id":"bb39b909a005261b31ebe28de0b4a755139b6fd6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"eb2c36bf6dfc8c02083ccb5f75504050d05ce48b","unresolved":true,"context_lines":[{"line_number":23,"context_line":"from collections import namedtuple"},{"line_number":24,"context_line":"from collections import OrderedDict"},{"line_number":25,"context_line":"from reprlib import recursive_repr as _recursive_repr"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import copy"},{"line_number":28,"context_line":"import datetime"},{"line_number":29,"context_line":"import inspect"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f8d4f50_e4ed1671","line":26,"updated":"2024-02-20 09:51:24.000000000","message":"why do we need a blank line here ? I don\u0027t get the point of having one blank line in the middle of built-in libs.","commit_id":"bb39b909a005261b31ebe28de0b4a755139b6fd6"},{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"5fdb03636d9e335b7916a21db310931844d96219","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from collections import namedtuple"},{"line_number":24,"context_line":"from collections import OrderedDict"},{"line_number":25,"context_line":"from reprlib import recursive_repr as _recursive_repr"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import copy"},{"line_number":28,"context_line":"import datetime"},{"line_number":29,"context_line":"import inspect"}],"source_content_type":"text/x-python","patch_set":4,"id":"d946c8e5_da6f0db4","line":26,"in_reply_to":"9f8d4f50_e4ed1671","updated":"2024-08-01 18:22:57.000000000","message":"Done","commit_id":"bb39b909a005261b31ebe28de0b4a755139b6fd6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a04a84633efae1c7e2b2704dca39faf4896a57d7","unresolved":true,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    @recursive_repr()"},{"line_number":109,"context_line":"    def __repr__(self):"},{"line_number":110,"context_line":"        \u0027od.__repr__() \u003c\u003d\u003d\u003e repr(od)\u0027"},{"line_number":111,"context_line":"        if not self:"},{"line_number":112,"context_line":"            return \u0027%s()\u0027 % self.__class__.__bases__[0].__name__"},{"line_number":113,"context_line":"        # NOTE(jamespage):"}],"source_content_type":"text/x-python","patch_set":5,"id":"a7775ec2_87bb2972","line":110,"range":{"start_line":110,"start_character":8,"end_line":110,"end_character":37},"updated":"2024-08-01 14:01:38.000000000","message":"Sorry I should have pointed this early but what this string is for ?","commit_id":"13ccd6a71386d9b79123fb256006ce90da888463"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8791022f830894aeb35785bfa4a20a20dcc07577","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    @recursive_repr()"},{"line_number":109,"context_line":"    def __repr__(self):"},{"line_number":110,"context_line":"        \u0027od.__repr__() \u003c\u003d\u003d\u003e repr(od)\u0027"},{"line_number":111,"context_line":"        if not self:"},{"line_number":112,"context_line":"            return \u0027%s()\u0027 % self.__class__.__bases__[0].__name__"},{"line_number":113,"context_line":"        # NOTE(jamespage):"}],"source_content_type":"text/x-python","patch_set":5,"id":"b3fa7d26_3f1c3d40","line":110,"range":{"start_line":110,"start_character":8,"end_line":110,"end_character":37},"in_reply_to":"7803848c_97262452","updated":"2024-10-02 10:09:34.000000000","message":"Done","commit_id":"13ccd6a71386d9b79123fb256006ce90da888463"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"b02a744c1457ef31428a869fcdf38cf6598e869d","unresolved":true,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    @recursive_repr()"},{"line_number":109,"context_line":"    def __repr__(self):"},{"line_number":110,"context_line":"        \u0027od.__repr__() \u003c\u003d\u003d\u003e repr(od)\u0027"},{"line_number":111,"context_line":"        if not self:"},{"line_number":112,"context_line":"            return \u0027%s()\u0027 % self.__class__.__bases__[0].__name__"},{"line_number":113,"context_line":"        # NOTE(jamespage):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7803848c_97262452","line":110,"range":{"start_line":110,"start_character":8,"end_line":110,"end_character":37},"in_reply_to":"a7775ec2_87bb2972","updated":"2024-08-06 12:37:10.000000000","message":"I have exactly the same question, I don\u0027t understand what this string is for?","commit_id":"13ccd6a71386d9b79123fb256006ce90da888463"}]}
