)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9642,"name":"Guillaume Espanel","email":"guillaume.espanel@gmail.com","username":"quatre"},"change_message_id":"52593ee74d70dd82eda3a71c3144a9cb2dbe7a98","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Stéphane Albert \u003cstephane.albert@objectif-libre.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-24 14:54:44 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added CSV support to report writer"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ice51fe37308772fb407ecf2f3a4627fb6b979e79"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a1a9d01_c847a9ba","line":7,"updated":"2015-09-29 10:41:16.000000000","message":"s/Added/Add/ ?","commit_id":"1bf6dc671300872777cf991ea581eb504be7ae39"}],"cloudkitty/writer/__init__.py":[{"author":{"_account_id":9642,"name":"Guillaume Espanel","email":"guillaume.espanel@gmail.com","username":"quatre"},"change_message_id":"52593ee74d70dd82eda3a71c3144a9cb2dbe7a98","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @abc.abstractmethod"},{"line_number":56,"context_line":"    def _gen_filename(self, timeframe):"},{"line_number":57,"context_line":"        \"\"\"Filename generation"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a1a9d01_c81ec9ba","line":57,"updated":"2015-09-29 10:41:16.000000000","message":"Can you quickly explain what a timeframe is?","commit_id":"1bf6dc671300872777cf991ea581eb504be7ae39"}],"cloudkitty/writer/csv_base.py":[{"author":{"_account_id":15701,"name":"venkatesh","email":"p.venkatesh551@gmail.com","username":"venkatesh"},"change_message_id":"1d385d7519382f49680a9a299ec8528764c002a6","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        # Current usage period lines"},{"line_number":59,"context_line":"        self._usage_data \u003d []"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _gen_filename(self, timeframe):"},{"line_number":62,"context_line":"        filename \u003d (\u0027{}-{}-{:02d}.csv\u0027).format(self._tenant_id,"},{"line_number":63,"context_line":"                                               timeframe.year,"},{"line_number":64,"context_line":"                                               timeframe.month)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_025331e3","line":61,"updated":"2015-07-18 07:49:40.000000000","message":"no of arguments differ from Baseclass \u0027_gen_filename\u0027 method\n\nRefactoring suggestion : \nmake this  as \n _gen_filename(self, timeframe, filename_ext) in the base class, and generic function body","commit_id":"3c2c972c1f53d60e95ada59876e2ba56e6e67870"},{"author":{"_account_id":15701,"name":"venkatesh","email":"p.venkatesh551@gmail.com","username":"venkatesh"},"change_message_id":"1d385d7519382f49680a9a299ec8528764c002a6","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                for report_data in data[service]:"},{"line_number":128,"context_line":"                    self._process_data(service, report_data)"},{"line_number":129,"context_line":"                # Update totals"},{"line_number":130,"context_line":"                for entry in data[service]:"},{"line_number":131,"context_line":"                    self.total +\u003d entry[\u0027rating\u0027][\u0027price\u0027]"},{"line_number":132,"context_line":"        except InconsistentHeaders:"},{"line_number":133,"context_line":"            self._crumple()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_a0c6c865","line":130,"updated":"2015-07-18 07:49:40.000000000","message":"performance improvement: Remove extra loop, after _process_data Update total.","commit_id":"3c2c972c1f53d60e95ada59876e2ba56e6e67870"},{"author":{"_account_id":15701,"name":"venkatesh","email":"p.venkatesh551@gmail.com","username":"venkatesh"},"change_message_id":"1d385d7519382f49680a9a299ec8528764c002a6","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        self._report.seek(-buf_size, 2)"},{"line_number":145,"context_line":"        end_buf \u003d self._report.read()"},{"line_number":146,"context_line":"        last_line \u003d buf_size"},{"line_number":147,"context_line":"        for i in range(4):"},{"line_number":148,"context_line":"            last_line \u003d end_buf.rfind(\u0027\\n\u0027, 0, last_line)"},{"line_number":149,"context_line":"        if last_line \u003e 0:"},{"line_number":150,"context_line":"            last_line -\u003d len(end_buf) - 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_08e9541a","line":147,"updated":"2015-07-18 07:49:40.000000000","message":"convention: using _ as unused loop variable is a better choice","commit_id":"3c2c972c1f53d60e95ada59876e2ba56e6e67870"},{"author":{"_account_id":15701,"name":"venkatesh","email":"p.venkatesh551@gmail.com","username":"venkatesh"},"change_message_id":"1d385d7519382f49680a9a299ec8528764c002a6","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            self._report.seek(0)"},{"line_number":164,"context_line":"            reader \u003d csv.reader(self._report)"},{"line_number":165,"context_line":"            # Skip header"},{"line_number":166,"context_line":"            for i in range(2):"},{"line_number":167,"context_line":"                line \u003d reader.next()"},{"line_number":168,"context_line":"            self.usage_start_dt \u003d datetime.datetime.strptime("},{"line_number":169,"context_line":"                line[0],"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_08d07452","line":166,"updated":"2015-07-18 07:49:40.000000000","message":"convention : using _ as unused loop variable","commit_id":"3c2c972c1f53d60e95ada59876e2ba56e6e67870"},{"author":{"_account_id":15701,"name":"venkatesh","email":"p.venkatesh551@gmail.com","username":"venkatesh"},"change_message_id":"1d385d7519382f49680a9a299ec8528764c002a6","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        wildcard_line \u003d []"},{"line_number":203,"context_line":"        headers_changed \u003d False"},{"line_number":204,"context_line":"        self._allocate_extra(wildcard_line)"},{"line_number":205,"context_line":"        base_section, base_field \u003d base.split(\u0027:\u0027)"},{"line_number":206,"context_line":"        if not report_data:"},{"line_number":207,"context_line":"            return []"},{"line_number":208,"context_line":"        for field in report_data:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_48551cc4","line":205,"updated":"2015-07-18 07:49:40.000000000","message":"unused variable :  base_filed\nwe can use _ : convention","commit_id":"3c2c972c1f53d60e95ada59876e2ba56e6e67870"},{"author":{"_account_id":9642,"name":"Guillaume Espanel","email":"guillaume.espanel@gmail.com","username":"quatre"},"change_message_id":"52593ee74d70dd82eda3a71c3144a9cb2dbe7a98","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from cloudkitty import writer"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class InconsistentHeaders(Exception):"},{"line_number":28,"context_line":"    pass"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a1a9d01_6870dddc","line":27,"updated":"2015-09-29 10:41:16.000000000","message":"What does this error represent?","commit_id":"1bf6dc671300872777cf991ea581eb504be7ae39"}],"cloudkitty/writer/csv_map.py":[{"author":{"_account_id":15701,"name":"venkatesh","email":"p.venkatesh551@gmail.com","username":"venkatesh"},"change_message_id":"1d385d7519382f49680a9a299ec8528764c002a6","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import collections"},{"line_number":19,"context_line":"import datetime"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from cloudkitty_csv.writer import csv_base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class CSVMapped(csv_base.BaseCSVBackend):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_4327c662","line":21,"updated":"2015-07-18 07:49:40.000000000","message":"Unresolved import, It should be\n\nfrom cloudkitty.writer import csv_base","commit_id":"3c2c972c1f53d60e95ada59876e2ba56e6e67870"}]}
