)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5787ec499ef015248fb2fe5304795d749cf11e71","unresolved":false,"context_lines":[{"line_number":15,"context_line":"namedtuple made things uglier (IMO), so it remains namedtuple-ish."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Removed one-line _stats_for_dev method on object replicator and just"},{"line_number":18,"context_line":"used self.stats[dev] instead."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Idecf5d9050ceb14fabd755275b7c72944bbed9ec"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bf659307_56a1a8a8","line":18,"updated":"2018-04-10 03:46:26.000000000","message":"I didn\u0027t have a strong preference for this, the \"for_dev\" or \"per_dev\" was pretty good, I just couldn\u0027t for the life of me understand the reasoning that led you to want to avoid renaming the stats attribute?  something in the tests somewhere?  I feel like I\u0027m missing something...","commit_id":"c38601cbd906c57dc6e040e3140285865a2e956c"}],"swift/obj/replicator.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5787ec499ef015248fb2fe5304795d749cf11e71","unresolved":false,"context_lines":[{"line_number":53,"context_line":"class Stats(object):"},{"line_number":54,"context_line":"    fields \u003d [\u0027attempted\u0027, \u0027failure\u0027, \u0027hashmatch\u0027, \u0027remove\u0027, \u0027rsync\u0027,"},{"line_number":55,"context_line":"              \u0027success\u0027, \u0027suffix_count\u0027, \u0027suffix_hash\u0027, \u0027suffix_sync\u0027,"},{"line_number":56,"context_line":"              \u0027failure_nodes\u0027]"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @classmethod"},{"line_number":59,"context_line":"    def from_recon(cls, dct):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_76d62c2a","line":56,"updated":"2018-04-10 03:46:26.000000000","message":"yeah, that\u0027s probably the way to go +2","commit_id":"c38601cbd906c57dc6e040e3140285865a2e956c"}],"test/unit/obj/test_replicator.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"5787ec499ef015248fb2fe5304795d749cf11e71","unresolved":false,"context_lines":[{"line_number":2453,"context_line":"    def test_from_recon_skips_extra_fields(self):"},{"line_number":2454,"context_line":"        # If another attribute ever sneaks its way in, we should ignore it."},{"line_number":2455,"context_line":"        # This will make aborted upgrades a little less painful for"},{"line_number":2456,"context_line":"        # operators."},{"line_number":2457,"context_line":"        recon_dict \u003d {\u0027attempted\u0027: 1, \u0027failure\u0027: 2, \u0027hashmatch\u0027: 3,"},{"line_number":2458,"context_line":"                      \u0027spices\u0027: 5, \u0027treasures\u0027: 8}"},{"line_number":2459,"context_line":"        stats \u003d object_replicator.Stats.from_recon(recon_dict)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf659307_96f0a0cb","line":2456,"updated":"2018-04-10 03:46:26.000000000","message":"+2","commit_id":"c38601cbd906c57dc6e040e3140285865a2e956c"}]}
