)]}'
{"ceilometer/storage/impl_hbase.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0308cfdc4305285a233b5b282e225c2409bc9f4c","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            live_tests \u003d bool(int(os.environ.get(\u0027CEILOMETER_TEST_LIVE\u0027, 0)))"},{"line_number":126,"context_line":"            if not live_tests:"},{"line_number":127,"context_line":"                self.conn \u003d MConnection()"},{"line_number":128,"context_line":"                self.project \u003d self.conn.table(\u0027project\u0027)"},{"line_number":129,"context_line":"                self.user \u003d self.conn.table(\u0027user\u0027)"},{"line_number":130,"context_line":"                self.resource \u003d self.conn.table(\u0027resource\u0027)"},{"line_number":131,"context_line":"                self.meter \u003d self.conn.table(\u0027meter\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1vo%3D","line":128,"updated":"2013-03-25 15:49:15.000000000","message":"Should these strings use the class attributes PROJECT\n_TABLE, USER_TABLE, etc.?","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e584484d38e168443ba5f4fa3a12684412460315","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            live_tests \u003d bool(int(os.environ.get(\u0027CEILOMETER_TEST_LIVE\u0027, 0)))"},{"line_number":126,"context_line":"            if not live_tests:"},{"line_number":127,"context_line":"                self.conn \u003d MConnection()"},{"line_number":128,"context_line":"                self.project \u003d self.conn.table(\u0027project\u0027)"},{"line_number":129,"context_line":"                self.user \u003d self.conn.table(\u0027user\u0027)"},{"line_number":130,"context_line":"                self.resource \u003d self.conn.table(\u0027resource\u0027)"},{"line_number":131,"context_line":"                self.meter \u003d self.conn.table(\u0027meter\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F0kI%3D","line":128,"in_reply_to":"AAAAOH%2F%2F1vo%3D","updated":"2013-03-26 09:10:46.000000000","message":"Makes sense to me.","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0308cfdc4305285a233b5b282e225c2409bc9f4c","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                      self.METER_TABLE]:"},{"line_number":168,"context_line":"            try:"},{"line_number":169,"context_line":"                self.conn.disable_table(table)"},{"line_number":170,"context_line":"            except:"},{"line_number":171,"context_line":"                pass"},{"line_number":172,"context_line":"            try:"},{"line_number":173,"context_line":"                self.conn.delete_table(table)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1vg%3D","line":170,"updated":"2013-03-25 15:49:15.000000000","message":"Should we at least log the errors as debug messages?","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e584484d38e168443ba5f4fa3a12684412460315","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                      self.METER_TABLE]:"},{"line_number":168,"context_line":"            try:"},{"line_number":169,"context_line":"                self.conn.disable_table(table)"},{"line_number":170,"context_line":"            except:"},{"line_number":171,"context_line":"                pass"},{"line_number":172,"context_line":"            try:"},{"line_number":173,"context_line":"                self.conn.delete_table(table)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F0j8%3D","line":170,"in_reply_to":"AAAAOH%2F%2F1vg%3D","updated":"2013-03-26 09:10:46.000000000","message":"Makes sense to me, updated.","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0308cfdc4305285a233b5b282e225c2409bc9f4c","unresolved":false,"context_lines":[{"line_number":597,"context_line":"        self._rows \u003d {}"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    def row(self, key):"},{"line_number":600,"context_line":"        return self._rows[key] if key in self._rows else {}"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    def rows(self, keys):"},{"line_number":603,"context_line":"        return ((k, v) for k, v in self._rows.iteritems() if k in keys)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1vc%3D","line":600,"updated":"2013-03-25 15:49:15.000000000","message":"That looks like it could be simplified to:\n\n  self._rows.get(key, {})","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e584484d38e168443ba5f4fa3a12684412460315","unresolved":false,"context_lines":[{"line_number":597,"context_line":"        self._rows \u003d {}"},{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    def row(self, key):"},{"line_number":600,"context_line":"        return self._rows[key] if key in self._rows else {}"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    def rows(self, keys):"},{"line_number":603,"context_line":"        return ((k, v) for k, v in self._rows.iteritems() if k in keys)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F0j4%3D","line":600,"in_reply_to":"AAAAOH%2F%2F1vc%3D","updated":"2013-03-26 09:10:46.000000000","message":"Done","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0308cfdc4305285a233b5b282e225c2409bc9f4c","unresolved":false,"context_lines":[{"line_number":600,"context_line":"        return self._rows[key] if key in self._rows else {}"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    def rows(self, keys):"},{"line_number":603,"context_line":"        return ((k, v) for k, v in self._rows.iteritems() if k in keys)"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"    def put(self, key, data):"},{"line_number":606,"context_line":"        self._rows[key] \u003d data"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1vQ%3D","line":603,"updated":"2013-03-25 15:49:15.000000000","message":"This could be\n\n  return ((k, self.row(k)) for k in keys)\n\nIs the order of the rows returned important? Do they need to be sorted on the key, for example?","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e584484d38e168443ba5f4fa3a12684412460315","unresolved":false,"context_lines":[{"line_number":600,"context_line":"        return self._rows[key] if key in self._rows else {}"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"    def rows(self, keys):"},{"line_number":603,"context_line":"        return ((k, v) for k, v in self._rows.iteritems() if k in keys)"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"    def put(self, key, data):"},{"line_number":606,"context_line":"        self._rows[key] \u003d data"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F0jg%3D","line":603,"in_reply_to":"AAAAOH%2F%2F1vQ%3D","updated":"2013-03-26 09:10:46.000000000","message":"The tests pass with your version, so I\u0027ll go for it.","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0308cfdc4305285a233b5b282e225c2409bc9f4c","unresolved":false,"context_lines":[{"line_number":607,"context_line":""},{"line_number":608,"context_line":"    def scan(self, filter\u003dNone, columns\u003d[], row_start\u003dNone, row_stop\u003dNone):"},{"line_number":609,"context_line":"        sorted_keys \u003d sorted(self._rows)"},{"line_number":610,"context_line":"        # copy data into a sorted dict"},{"line_number":611,"context_line":"        rows \u003d {}"},{"line_number":612,"context_line":"        for row in sorted_keys:"},{"line_number":613,"context_line":"            if row_start:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1u4%3D","line":610,"updated":"2013-03-25 15:49:15.000000000","message":"This just looks like a regular dictionary to me. Did you mean to use an OrderedDict?","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e584484d38e168443ba5f4fa3a12684412460315","unresolved":false,"context_lines":[{"line_number":607,"context_line":""},{"line_number":608,"context_line":"    def scan(self, filter\u003dNone, columns\u003d[], row_start\u003dNone, row_stop\u003dNone):"},{"line_number":609,"context_line":"        sorted_keys \u003d sorted(self._rows)"},{"line_number":610,"context_line":"        # copy data into a sorted dict"},{"line_number":611,"context_line":"        rows \u003d {}"},{"line_number":612,"context_line":"        for row in sorted_keys:"},{"line_number":613,"context_line":"            if row_start:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F0jU%3D","line":610,"in_reply_to":"AAAAOH%2F%2F1u4%3D","updated":"2013-03-26 09:10:46.000000000","message":"I think the comment is wrong, but the code seems ok. It copies a subset of a dict based on key ordering.","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0308cfdc4305285a233b5b282e225c2409bc9f4c","unresolved":false,"context_lines":[{"line_number":611,"context_line":"        rows \u003d {}"},{"line_number":612,"context_line":"        for row in sorted_keys:"},{"line_number":613,"context_line":"            if row_start:"},{"line_number":614,"context_line":"                if row \u003c row_start:"},{"line_number":615,"context_line":"                    continue"},{"line_number":616,"context_line":"            if row_stop:"},{"line_number":617,"context_line":"                if row \u003e row_stop:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1u0%3D","line":614,"updated":"2013-03-25 15:49:15.000000000","message":"These two conditions can be joined with an \"and\" to avoid an extra level of nesting.","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e584484d38e168443ba5f4fa3a12684412460315","unresolved":false,"context_lines":[{"line_number":611,"context_line":"        rows \u003d {}"},{"line_number":612,"context_line":"        for row in sorted_keys:"},{"line_number":613,"context_line":"            if row_start:"},{"line_number":614,"context_line":"                if row \u003c row_start:"},{"line_number":615,"context_line":"                    continue"},{"line_number":616,"context_line":"            if row_stop:"},{"line_number":617,"context_line":"                if row \u003e row_stop:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F0jQ%3D","line":614,"in_reply_to":"AAAAOH%2F%2F1u0%3D","updated":"2013-03-26 09:10:46.000000000","message":"Done","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0308cfdc4305285a233b5b282e225c2409bc9f4c","unresolved":false,"context_lines":[{"line_number":614,"context_line":"                if row \u003c row_start:"},{"line_number":615,"context_line":"                    continue"},{"line_number":616,"context_line":"            if row_stop:"},{"line_number":617,"context_line":"                if row \u003e row_stop:"},{"line_number":618,"context_line":"                    break"},{"line_number":619,"context_line":"            rows[row] \u003d copy.copy(self._rows[row])"},{"line_number":620,"context_line":"        if columns:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1uw%3D","line":617,"updated":"2013-03-25 15:49:15.000000000","message":"Ditto on nesting.","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e584484d38e168443ba5f4fa3a12684412460315","unresolved":false,"context_lines":[{"line_number":614,"context_line":"                if row \u003c row_start:"},{"line_number":615,"context_line":"                    continue"},{"line_number":616,"context_line":"            if row_stop:"},{"line_number":617,"context_line":"                if row \u003e row_stop:"},{"line_number":618,"context_line":"                    break"},{"line_number":619,"context_line":"            rows[row] \u003d copy.copy(self._rows[row])"},{"line_number":620,"context_line":"        if columns:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F0jM%3D","line":617,"in_reply_to":"AAAAOH%2F%2F1uw%3D","updated":"2013-03-26 09:10:46.000000000","message":"Done","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0308cfdc4305285a233b5b282e225c2409bc9f4c","unresolved":false,"context_lines":[{"line_number":622,"context_line":"            for row in rows.keys():"},{"line_number":623,"context_line":"                data \u003d rows[row]"},{"line_number":624,"context_line":"                for key in data:"},{"line_number":625,"context_line":"                #    if all(key in columns for key in data):"},{"line_number":626,"context_line":"                    if key in columns:"},{"line_number":627,"context_line":"                        ret[row] \u003d data"},{"line_number":628,"context_line":"            rows \u003d ret"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1u8%3D","line":625,"updated":"2013-03-25 15:49:15.000000000","message":"Can this line be deleted?","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e584484d38e168443ba5f4fa3a12684412460315","unresolved":false,"context_lines":[{"line_number":622,"context_line":"            for row in rows.keys():"},{"line_number":623,"context_line":"                data \u003d rows[row]"},{"line_number":624,"context_line":"                for key in data:"},{"line_number":625,"context_line":"                #    if all(key in columns for key in data):"},{"line_number":626,"context_line":"                    if key in columns:"},{"line_number":627,"context_line":"                        ret[row] \u003d data"},{"line_number":628,"context_line":"            rows \u003d ret"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F0jI%3D","line":625,"in_reply_to":"AAAAOH%2F%2F1u8%3D","updated":"2013-03-26 09:10:46.000000000","message":"Done","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"0308cfdc4305285a233b5b282e225c2409bc9f4c","unresolved":false,"context_lines":[{"line_number":624,"context_line":"                for key in data:"},{"line_number":625,"context_line":"                #    if all(key in columns for key in data):"},{"line_number":626,"context_line":"                    if key in columns:"},{"line_number":627,"context_line":"                        ret[row] \u003d data"},{"line_number":628,"context_line":"            rows \u003d ret"},{"line_number":629,"context_line":"        elif filter:"},{"line_number":630,"context_line":"            # TODO: we should really parse this properly, but at the moment we"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1uU%3D","line":627,"updated":"2013-03-25 15:49:15.000000000","message":"Should this somehow be restricting which columns are returned? I\u0027m not sure what the columns argument is meant to do.","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e584484d38e168443ba5f4fa3a12684412460315","unresolved":false,"context_lines":[{"line_number":624,"context_line":"                for key in data:"},{"line_number":625,"context_line":"                #    if all(key in columns for key in data):"},{"line_number":626,"context_line":"                    if key in columns:"},{"line_number":627,"context_line":"                        ret[row] \u003d data"},{"line_number":628,"context_line":"            rows \u003d ret"},{"line_number":629,"context_line":"        elif filter:"},{"line_number":630,"context_line":"            # TODO: we should really parse this properly, but at the moment we"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F0jE%3D","line":627,"in_reply_to":"AAAAOH%2F%2F1uU%3D","updated":"2013-03-26 09:10:46.000000000","message":"Can\u0027t say.","commit_id":"28fc83c1bdbe9c19589fc5ad5a0e66837ad4706f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ebb25788062eb56f7741d44b250a379180032474","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            live_tests \u003d bool(int(os.environ.get(\u0027CEILOMETER_TEST_LIVE\u0027, 0)))"},{"line_number":126,"context_line":"            if not live_tests:"},{"line_number":127,"context_line":"                self.conn \u003d MConnection()"},{"line_number":128,"context_line":"                self.project \u003d self.conn.table(\u0027project\u0027)"},{"line_number":129,"context_line":"                self.user \u003d self.conn.table(\u0027user\u0027)"},{"line_number":130,"context_line":"                self.resource \u003d self.conn.table(\u0027resource\u0027)"},{"line_number":131,"context_line":"                self.meter \u003d self.conn.table(\u0027meter\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2F0R4%3D","line":128,"updated":"2013-03-26 13:53:53.000000000","message":"Still using string literals here?","commit_id":"1ccd4f4561633fd381e1d944c28ff4ec5b8abca2"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"b70d20802168faee9bd13705e55b635f5e4143b6","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            live_tests \u003d bool(int(os.environ.get(\u0027CEILOMETER_TEST_LIVE\u0027, 0)))"},{"line_number":126,"context_line":"            if not live_tests:"},{"line_number":127,"context_line":"                self.conn \u003d MConnection()"},{"line_number":128,"context_line":"                self.project \u003d self.conn.table(\u0027project\u0027)"},{"line_number":129,"context_line":"                self.user \u003d self.conn.table(\u0027user\u0027)"},{"line_number":130,"context_line":"                self.resource \u003d self.conn.table(\u0027resource\u0027)"},{"line_number":131,"context_line":"                self.meter \u003d self.conn.table(\u0027meter\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2F0RE%3D","line":128,"in_reply_to":"AAAAOH%2F%2F0R4%3D","updated":"2013-03-26 13:57:28.000000000","message":"Done","commit_id":"1ccd4f4561633fd381e1d944c28ff4ec5b8abca2"}]}
