)]}'
{"ceilometer/agent.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"10d86274f2583232a1b4652f2e1b8087e4a5c119","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"class AgentManager(os_service.Service):"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def __init__(self, namespace, default_discovery\u003d[]):"},{"line_number":103,"context_line":"        super(AgentManager, self).__init__()"},{"line_number":104,"context_line":"        self.default_discovery \u003d default_discovery"},{"line_number":105,"context_line":"        self.pollster_manager \u003d self._extensions(\u0027poll\u0027, namespace)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_61f3ed73","side":"PARENT","line":102,"updated":"2014-04-30 09:14:14.000000000","message":"To minimize intrusion in the code in the list case, would it make sense use a tuple as an \u0027immutable list\u0027 stand-in?\n\ni.e. in this case:\n\n    def __init__(self, namespace, default_discovery\u003d()):","commit_id":"1779020170ebcc0e9f8bad82ad3117f849a1a147"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"b605408e2c7daa309354056091b261e1666e52ea","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"class AgentManager(os_service.Service):"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def __init__(self, namespace, default_discovery\u003d[]):"},{"line_number":103,"context_line":"        super(AgentManager, self).__init__()"},{"line_number":104,"context_line":"        self.default_discovery \u003d default_discovery"},{"line_number":105,"context_line":"        self.pollster_manager \u003d self._extensions(\u0027poll\u0027, namespace)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_d201e53a","side":"PARENT","line":102,"in_reply_to":"9ad9bd40_321771ef","updated":"2014-04-30 10:49:43.000000000","message":"Yes, the point of the suggestion is that an attempt to apply append to the defaulted tuple wouldn\u0027t work and would instead fail fast (*assuming* that the unit tests actually exercise that codepath).\n\nBut I take the point that we\u0027re not guaranteed that such unit test coverage in all cases.","commit_id":"1779020170ebcc0e9f8bad82ad3117f849a1a147"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"4beb04f824b4afeda08eb626459936c40c339e7d","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"class AgentManager(os_service.Service):"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def __init__(self, namespace, default_discovery\u003d[]):"},{"line_number":103,"context_line":"        super(AgentManager, self).__init__()"},{"line_number":104,"context_line":"        self.default_discovery \u003d default_discovery"},{"line_number":105,"context_line":"        self.pollster_manager \u003d self._extensions(\u0027poll\u0027, namespace)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_321771ef","side":"PARENT","line":102,"in_reply_to":"9ad9bd40_61f3ed73","updated":"2014-04-30 10:27:11.000000000","message":"Eoghan, thanks for the review. I guess changing the list -\u003e tuple might cause more problems and code changes than these several lines. Please let me explain:\n\n1) that will need lots of testing to be sure that there is no place in the method request chain where this tuple will be used like a list (append method won\u0027t work, for instance)\n2) there are lots of tests that currently use default list values, so that tuple (not list) behaviour might cause lots of changes in the tests..\n\nwhat do you think?","commit_id":"1779020170ebcc0e9f8bad82ad3117f849a1a147"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8a4505a48346b679a914fa1ed446bde44d6def27","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        return None"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def discover(self, discovery\u003dNone):"},{"line_number":161,"context_line":"        discovery \u003d discovery or []"},{"line_number":162,"context_line":"        resources \u003d []"},{"line_number":163,"context_line":"        for url in (discovery or self.default_discovery):"},{"line_number":164,"context_line":"            name, param \u003d self._parse_discoverer(url)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_53e4db0c","line":161,"updated":"2014-05-01 13:15:05.000000000","message":"i\u0027m not sure we need this logically. if discovery is None, it will correctly default to default_discovery in for loop","commit_id":"c35f5c0ffd11d3d0da66b29c2ec7fd6507a0f5ce"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"01fc68d990e62168e8fcff68f184ea05a8518c0f","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        return None"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def discover(self, discovery\u003dNone):"},{"line_number":161,"context_line":"        discovery \u003d discovery or []"},{"line_number":162,"context_line":"        resources \u003d []"},{"line_number":163,"context_line":"        for url in (discovery or self.default_discovery):"},{"line_number":164,"context_line":"            name, param \u003d self._parse_discoverer(url)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_72e1afcf","line":161,"in_reply_to":"9ad9bd40_53e4db0c","updated":"2014-05-02 21:13:56.000000000","message":"Done","commit_id":"c35f5c0ffd11d3d0da66b29c2ec7fd6507a0f5ce"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"98c7d14bdf0ade2877c454bca8b4dbf3f668a450","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        return None"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def discover(self, discovery\u003dNone):"},{"line_number":161,"context_line":"        discovery \u003d discovery or []"},{"line_number":162,"context_line":"        resources \u003d []"},{"line_number":163,"context_line":"        for url in (discovery or self.default_discovery):"},{"line_number":164,"context_line":"            name, param \u003d self._parse_discoverer(url)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_7209afdc","line":161,"in_reply_to":"9ad9bd40_53e4db0c","updated":"2014-05-02 21:04:39.000000000","message":"ok, will fix","commit_id":"c35f5c0ffd11d3d0da66b29c2ec7fd6507a0f5ce"}],"ceilometer/api/controllers/v2.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8a4505a48346b679a914fa1ed446bde44d6def27","unresolved":false,"context_lines":[{"line_number":538,"context_line":"    search_offset: search_offset parameter from request"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"    \"\"\""},{"line_number":541,"context_line":"    args \u003d args or {}"},{"line_number":542,"context_line":"    search_offset \u003d int(args.get(\u0027search_offset\u0027, 0))"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"    start_timestamp \u003d args.get(\u0027start_timestamp\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_13e33308","line":541,"updated":"2014-05-01 13:15:05.000000000","message":"this would probably make more sense as:\n\nif args is None:\n    return\n\nor an if statement that wraps everything","commit_id":"c35f5c0ffd11d3d0da66b29c2ec7fd6507a0f5ce"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"01fc68d990e62168e8fcff68f184ea05a8518c0f","unresolved":false,"context_lines":[{"line_number":538,"context_line":"    search_offset: search_offset parameter from request"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"    \"\"\""},{"line_number":541,"context_line":"    args \u003d args or {}"},{"line_number":542,"context_line":"    search_offset \u003d int(args.get(\u0027search_offset\u0027, 0))"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"    start_timestamp \u003d args.get(\u0027start_timestamp\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_b2eb37af","line":541,"in_reply_to":"9ad9bd40_13e33308","updated":"2014-05-02 21:13:56.000000000","message":"Done","commit_id":"c35f5c0ffd11d3d0da66b29c2ec7fd6507a0f5ce"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8a4505a48346b679a914fa1ed446bde44d6def27","unresolved":false,"context_lines":[{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def __init__(self, counter_volume\u003dNone, resource_metadata\u003dNone,"},{"line_number":650,"context_line":"                 timestamp\u003dNone, **kwds):"},{"line_number":651,"context_line":"        resource_metadata \u003d resource_metadata or {}"},{"line_number":652,"context_line":"        if counter_volume is not None:"},{"line_number":653,"context_line":"            counter_volume \u003d float(counter_volume)"},{"line_number":654,"context_line":"        resource_metadata \u003d _flatten_metadata(resource_metadata)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_337cb720","line":651,"updated":"2014-05-01 13:15:05.000000000","message":"out of curiosity, if the variable is never edited? do we still have an issue? resource_metadata here and most of the items below are never updated just read.","commit_id":"c35f5c0ffd11d3d0da66b29c2ec7fd6507a0f5ce"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"11cafc3f44f0d4449b70adc21b385403add36340","unresolved":false,"context_lines":[{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def __init__(self, counter_volume\u003dNone, resource_metadata\u003dNone,"},{"line_number":650,"context_line":"                 timestamp\u003dNone, **kwds):"},{"line_number":651,"context_line":"        resource_metadata \u003d resource_metadata or {}"},{"line_number":652,"context_line":"        if counter_volume is not None:"},{"line_number":653,"context_line":"            counter_volume \u003d float(counter_volume)"},{"line_number":654,"context_line":"        resource_metadata \u003d _flatten_metadata(resource_metadata)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_72936f4f","line":651,"in_reply_to":"9ad9bd40_337cb720","updated":"2014-05-02 21:10:33.000000000","message":"well, that\u0027s also the anti-patternt to use mutables s defaults if there is no special need in it... I guess that\u0027s the solution for further problems if it\u0027ll be needed to change it in some future","commit_id":"c35f5c0ffd11d3d0da66b29c2ec7fd6507a0f5ce"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"3955e8ec33925218c0e9674f3ea17b51d635d827","unresolved":false,"context_lines":[{"line_number":539,"context_line":""},{"line_number":540,"context_line":"    \"\"\""},{"line_number":541,"context_line":"    if args is None:"},{"line_number":542,"context_line":"        return {}"},{"line_number":543,"context_line":"    search_offset \u003d int(args.get(\u0027search_offset\u0027, 0))"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"    start_timestamp \u003d args.get(\u0027start_timestamp\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_47550bc5","line":542,"updated":"2014-05-08 08:50:03.000000000","message":"Does this change means it will return different types of data for None or non-none args? I think we should either keep the original return intact or change the comment about what it returns above.","commit_id":"83df3b680b57b080d74d085054de33da48e0cbda"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"3f5a008c1470375c2dc09d7b709c7a880838f516","unresolved":false,"context_lines":[{"line_number":539,"context_line":""},{"line_number":540,"context_line":"    \"\"\""},{"line_number":541,"context_line":"    if args is None:"},{"line_number":542,"context_line":"        return {}"},{"line_number":543,"context_line":"    search_offset \u003d int(args.get(\u0027search_offset\u0027, 0))"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"    start_timestamp \u003d args.get(\u0027start_timestamp\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_3fc0e329","line":542,"in_reply_to":"7adec928_47550bc5","updated":"2014-05-09 19:00:21.000000000","message":"well, yes, I need, I guess, keep original default return value:\n\n           {\u0027query_start\u0027: None,\n            \u0027query_end\u0027: None,\n            \u0027start_timestamp\u0027: None,\n            \u0027end_timestamp\u0027: None,\n            \u0027search_offset\u0027: 0,\n            }","commit_id":"83df3b680b57b080d74d085054de33da48e0cbda"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"3955e8ec33925218c0e9674f3ea17b51d635d827","unresolved":false,"context_lines":[{"line_number":813,"context_line":"        self.meter_name \u003d meter_name"},{"line_number":814,"context_line":""},{"line_number":815,"context_line":"    @wsme_pecan.wsexpose([OldSample], [Query], int)"},{"line_number":816,"context_line":"    def get_all(self, q\u003dNone, limit\u003dNone):"},{"line_number":817,"context_line":"        \"\"\"Return samples for the meter."},{"line_number":818,"context_line":""},{"line_number":819,"context_line":"        :param q: Filter rules for the data to be returned."}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_67e4c73b","line":816,"updated":"2014-05-08 08:50:03.000000000","message":"I\u0027m not sure if this is conflict with the wsexpose decrator?","commit_id":"83df3b680b57b080d74d085054de33da48e0cbda"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"3f5a008c1470375c2dc09d7b709c7a880838f516","unresolved":false,"context_lines":[{"line_number":813,"context_line":"        self.meter_name \u003d meter_name"},{"line_number":814,"context_line":""},{"line_number":815,"context_line":"    @wsme_pecan.wsexpose([OldSample], [Query], int)"},{"line_number":816,"context_line":"    def get_all(self, q\u003dNone, limit\u003dNone):"},{"line_number":817,"context_line":"        \"\"\"Return samples for the meter."},{"line_number":818,"context_line":""},{"line_number":819,"context_line":"        :param q: Filter rules for the data to be returned."}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_3fee23b5","line":816,"in_reply_to":"7adec928_67e4c73b","updated":"2014-05-09 19:00:21.000000000","message":"well, I guess no... I\u0027ve tested it on the lab, but I may check it one more time :)","commit_id":"83df3b680b57b080d74d085054de33da48e0cbda"}],"ceilometer/openstack/common/db/exception.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8a4505a48346b679a914fa1ed446bde44d6def27","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class DBDuplicateEntry(DBError):"},{"line_number":32,"context_line":"    \"\"\"Wraps an implementation specific exception.\"\"\""},{"line_number":33,"context_line":"    def __init__(self, columns\u003dNone, inner_exception\u003dNone):"},{"line_number":34,"context_line":"        self.columns \u003d columns or []"},{"line_number":35,"context_line":"        super(DBDuplicateEntry, self).__init__(inner_exception)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_533cdb2f","line":34,"updated":"2014-05-01 13:15:05.000000000","message":"this is common code, it should be modified in oslo-incubator or oslo.db\n\nhttps://github.com/openstack/oslo-incubator or https://github.com/malor/oslo.db","commit_id":"c35f5c0ffd11d3d0da66b29c2ec7fd6507a0f5ce"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"01fc68d990e62168e8fcff68f184ea05a8518c0f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class DBDuplicateEntry(DBError):"},{"line_number":32,"context_line":"    \"\"\"Wraps an implementation specific exception.\"\"\""},{"line_number":33,"context_line":"    def __init__(self, columns\u003dNone, inner_exception\u003dNone):"},{"line_number":34,"context_line":"        self.columns \u003d columns or []"},{"line_number":35,"context_line":"        super(DBDuplicateEntry, self).__init__(inner_exception)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_f2ccdf63","line":34,"in_reply_to":"9ad9bd40_533cdb2f","updated":"2014-05-02 21:13:56.000000000","message":"Done","commit_id":"c35f5c0ffd11d3d0da66b29c2ec7fd6507a0f5ce"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"98c7d14bdf0ade2877c454bca8b4dbf3f668a450","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class DBDuplicateEntry(DBError):"},{"line_number":32,"context_line":"    \"\"\"Wraps an implementation specific exception.\"\"\""},{"line_number":33,"context_line":"    def __init__(self, columns\u003dNone, inner_exception\u003dNone):"},{"line_number":34,"context_line":"        self.columns \u003d columns or []"},{"line_number":35,"context_line":"        super(DBDuplicateEntry, self).__init__(inner_exception)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_92b553f0","line":34,"in_reply_to":"9ad9bd40_533cdb2f","updated":"2014-05-02 21:04:39.000000000","message":"Yeah, sorry, missed that while fixing.","commit_id":"c35f5c0ffd11d3d0da66b29c2ec7fd6507a0f5ce"}]}
