)]}'
{"swift/cli/recon.py":[{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"fb9c7a2d759a7e0fdf22f8814fb929acf4bcd241","unresolved":false,"context_lines":[{"line_number":703,"context_line":"                conq[url] \u003d response[\u0027containers\u0027]"},{"line_number":704,"context_line":"                acctq[url] \u003d response[\u0027accounts\u0027]"},{"line_number":705,"context_line":"                if response[\u0027policies\u0027]:"},{"line_number":706,"context_line":"                    for key in response[\u0027policies\u0027].iterkeys():"},{"line_number":707,"context_line":"                        poliq[url] \u003d response[\u0027policies\u0027][key][\u0027objects\u0027]"},{"line_number":708,"context_line":"                        pkey \u003d \"objects_%s\" % key"},{"line_number":709,"context_line":"                        if pkey not in stats:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_d725ebae","line":706,"updated":"2014-12-02 01:38:30.000000000","message":"no need for .iterkeys()","commit_id":"f18b672e7057484108ed38946e3d289b664e34e3"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"fb9c7a2d759a7e0fdf22f8814fb929acf4bcd241","unresolved":false,"context_lines":[{"line_number":707,"context_line":"                        poliq[url] \u003d response[\u0027policies\u0027][key][\u0027objects\u0027]"},{"line_number":708,"context_line":"                        pkey \u003d \"objects_%s\" % key"},{"line_number":709,"context_line":"                        if pkey not in stats:"},{"line_number":710,"context_line":"                            stats.update({pkey: {}})"},{"line_number":711,"context_line":"                        stats[pkey][url] \u003d poliq[url]"},{"line_number":712,"context_line":"        stats.update({\"objects\": objq, \"containers\": conq, \"accounts\": acctq})"},{"line_number":713,"context_line":"        for item in stats:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_5c0be02a","line":710,"updated":"2014-12-02 01:38:30.000000000","message":"these 2 lines can be reduced to\n\n    stats.setdefault(pkey, {})","commit_id":"f18b672e7057484108ed38946e3d289b664e34e3"},{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"fb9c7a2d759a7e0fdf22f8814fb929acf4bcd241","unresolved":false,"context_lines":[{"line_number":708,"context_line":"                        pkey \u003d \"objects_%s\" % key"},{"line_number":709,"context_line":"                        if pkey not in stats:"},{"line_number":710,"context_line":"                            stats.update({pkey: {}})"},{"line_number":711,"context_line":"                        stats[pkey][url] \u003d poliq[url]"},{"line_number":712,"context_line":"        stats.update({\"objects\": objq, \"containers\": conq, \"accounts\": acctq})"},{"line_number":713,"context_line":"        for item in stats:"},{"line_number":714,"context_line":"            if len(stats[item]) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_370c6f3b","line":711,"updated":"2014-12-02 01:38:30.000000000","message":"if you\u0027re feeling fancy, the previous 4 lines can be reduced to\n\n    stats.setdefault(\"objects_%s\" % key, {})[url] \u003d poliq[url]","commit_id":"f18b672e7057484108ed38946e3d289b664e34e3"},{"author":{"_account_id":7479,"name":"paul luse","email":"paul.e.luse@intel.com","username":"peluse"},"change_message_id":"dd98ee128ab5b0573a6a9a0754103c1e544c00a2","unresolved":false,"context_lines":[{"line_number":682,"context_line":"                print(\"[%s_load_avg] - No hosts returned valid data.\" % item)"},{"line_number":683,"context_line":"        print(\"\u003d\" * 79)"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"    def quarantine_check(self, hosts):"},{"line_number":686,"context_line":"        \"\"\""},{"line_number":687,"context_line":"        Obtain and print quarantine statistics"},{"line_number":688,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_37417a0a","line":685,"updated":"2015-01-15 22:03:53.000000000","message":"so there was no coverage on this func at all to begin with, personally I think it\u0027d be great if you could take the opportunity to cover the whole thing since you\u0027re touching it but won\u0027t hold it up since it was 0 here to start","commit_id":"1b44dfbbe89d085f0d7602022159c5eaf76f4910"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"ae7bd1f459f7f294085d454e5746791469cfe45a","unresolved":false,"context_lines":[{"line_number":682,"context_line":"                print(\"[%s_load_avg] - No hosts returned valid data.\" % item)"},{"line_number":683,"context_line":"        print(\"\u003d\" * 79)"},{"line_number":684,"context_line":""},{"line_number":685,"context_line":"    def quarantine_check(self, hosts):"},{"line_number":686,"context_line":"        \"\"\""},{"line_number":687,"context_line":"        Obtain and print quarantine statistics"},{"line_number":688,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_641e8e76","line":685,"in_reply_to":"3a961159_37417a0a","updated":"2015-01-20 09:42:04.000000000","message":"I added an unit test.","commit_id":"1b44dfbbe89d085f0d7602022159c5eaf76f4910"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"7dc46579b9b1f458947ce0d2e6dcbcf9bdb42194","unresolved":false,"context_lines":[{"line_number":692,"context_line":"        objq \u003d {}"},{"line_number":693,"context_line":"        conq \u003d {}"},{"line_number":694,"context_line":"        acctq \u003d {}"},{"line_number":695,"context_line":"        poliq \u003d {}"},{"line_number":696,"context_line":"        stats \u003d {}"},{"line_number":697,"context_line":"        recon \u003d Scout(\"quarantined\", self.verbose, self.suppress_errors,"},{"line_number":698,"context_line":"                      self.timeout)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_6ad9fe27","line":695,"updated":"2015-01-20 05:56:31.000000000","message":"Do we need the poliq variable here? When I look below, the variable in only used withing the inner for loop, so does it need such a high scope.. or even need to define it at all?","commit_id":"1b44dfbbe89d085f0d7602022159c5eaf76f4910"},{"author":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"change_message_id":"ae7bd1f459f7f294085d454e5746791469cfe45a","unresolved":false,"context_lines":[{"line_number":692,"context_line":"        objq \u003d {}"},{"line_number":693,"context_line":"        conq \u003d {}"},{"line_number":694,"context_line":"        acctq \u003d {}"},{"line_number":695,"context_line":"        poliq \u003d {}"},{"line_number":696,"context_line":"        stats \u003d {}"},{"line_number":697,"context_line":"        recon \u003d Scout(\"quarantined\", self.verbose, self.suppress_errors,"},{"line_number":698,"context_line":"                      self.timeout)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_04386aed","line":695,"in_reply_to":"3a961159_6ad9fe27","updated":"2015-01-20 09:42:04.000000000","message":"I cannot remember why I put this variable but it is obviously unnecessary. Thanks.","commit_id":"1b44dfbbe89d085f0d7602022159c5eaf76f4910"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"7dc46579b9b1f458947ce0d2e6dcbcf9bdb42194","unresolved":false,"context_lines":[{"line_number":707,"context_line":"                        poliq[url] \u003d response[\u0027policies\u0027][key][\u0027objects\u0027]"},{"line_number":708,"context_line":"                        pkey \u003d \"objects_%s\" % key"},{"line_number":709,"context_line":"                        stats.setdefault(pkey, {})"},{"line_number":710,"context_line":"                        stats[pkey][url] \u003d poliq[url]"},{"line_number":711,"context_line":"        stats.update({\"objects\": objq, \"containers\": conq, \"accounts\": acctq})"},{"line_number":712,"context_line":"        for item in stats:"},{"line_number":713,"context_line":"            if len(stats[item]) \u003e 0:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_4a70c208","line":710,"updated":"2015-01-20 05:56:31.000000000","message":"You define a value to poliq[url], then use it in the line above. But there is no other reference to the dictionary, so why are we storing and keeping the number of objects per url outside this scope?\n\nCan we get away with:\n\n  if response[\u0027policies\u0027]:\n      for key in response[\u0027policies\u0027]:\n          pkey \u003d \"objects_%s\" % key\n          stats.setdefault(pkey, {})\n\t  stats[pkey][url] \u003d response[\u0027policies\u0027][key][\u0027objects\u0027]","commit_id":"1b44dfbbe89d085f0d7602022159c5eaf76f4910"}],"swift/common/middleware/recon.py":[{"author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"change_message_id":"fb9c7a2d759a7e0fdf22f8814fb929acf4bcd241","unresolved":false,"context_lines":[{"line_number":280,"context_line":"                            if \u0027-\u0027 in qtype:"},{"line_number":281,"context_line":"                                pkey \u003d \u0027policy\u0027 + qtype.split(\u0027-\u0027, 1)[1]"},{"line_number":282,"context_line":"                            else:"},{"line_number":283,"context_line":"                                pkey \u003d \u0027policy0\u0027"},{"line_number":284,"context_line":"                            if pkey not in qcounts[\u0027policies\u0027]:"},{"line_number":285,"context_line":"                                qcounts[\u0027policies\u0027].update({pkey:"},{"line_number":286,"context_line":"                                                            {\u0027objects\u0027: 0}})"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_d79a4bc4","line":283,"updated":"2014-12-02 01:38:30.000000000","message":"Can we just use the index as the key? I don\u0027t see anything gained from having \"policy\" at the start of the key, and it\u0027ll probably make our lives easier later on if we don\u0027t put extra stuff there.\n\nIf you\u0027d like to have it displayed as policy-$N, you can always do that at display time.","commit_id":"f18b672e7057484108ed38946e3d289b664e34e3"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"a0a69bdbab097cf43f4f4ab99cc51c42c210b8a5","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                    qtgt \u003d os.path.join(qpath, qtype)"},{"line_number":277,"context_line":"                    linkcount \u003d os.lstat(qtgt).st_nlink"},{"line_number":278,"context_line":"                    if linkcount \u003e 2:"},{"line_number":279,"context_line":"                        if qtype.startswith(\u0027objects\u0027):"},{"line_number":280,"context_line":"                            if \u0027-\u0027 in qtype:"},{"line_number":281,"context_line":"                                pkey \u003d qtype.split(\u0027-\u0027, 1)[1]"},{"line_number":282,"context_line":"                            else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_13af7de4","line":279,"updated":"2015-02-10 18:57:48.000000000","message":"I would split first, compare next, just so \"objectsxxxxx-0\" would not match. Not that it matters :-)","commit_id":"f8fa1a9234cd0c1d7466dd51d8528e2abd859c2b"}]}
