)]}'
{"ceilometer/transformer/conversions.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bc63168cd0820bc6036d1024db133c00c42c291a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        :param target: dict containing target counter name, type,"},{"line_number":35,"context_line":"                       unit and scaling factor (a missing value"},{"line_number":36,"context_line":"                       connotes no change)"},{"line_number":37,"context_line":"        :param replace: true iff source counter is to be replaced"},{"line_number":38,"context_line":"                        (as opposed to an additive conversion)"},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        self.source \u003d source"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRsI%3D","line":37,"updated":"2013-07-05 12:00:34.000000000","message":"if","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"46b3c5e7794d81265b2f9e903fc171dbf687ea84","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        :param target: dict containing target counter name, type,"},{"line_number":35,"context_line":"                       unit and scaling factor (a missing value"},{"line_number":36,"context_line":"                       connotes no change)"},{"line_number":37,"context_line":"        :param replace: true iff source counter is to be replaced"},{"line_number":38,"context_line":"                        (as opposed to an additive conversion)"},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        self.source \u003d source"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRgY%3D","line":37,"in_reply_to":"AAAAPn%2F%2FRn0%3D","updated":"2013-07-05 13:47:19.000000000","message":"Aahh… So could I have the full sentence even though please? :)","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"0e5f5bf0e4003d5e7d0183c077c8c14fc355db99","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        :param target: dict containing target counter name, type,"},{"line_number":35,"context_line":"                       unit and scaling factor (a missing value"},{"line_number":36,"context_line":"                       connotes no change)"},{"line_number":37,"context_line":"        :param replace: true iff source counter is to be replaced"},{"line_number":38,"context_line":"                        (as opposed to an additive conversion)"},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        self.source \u003d source"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRn0%3D","line":37,"in_reply_to":"AAAAPn%2F%2FRsI%3D","updated":"2013-07-05 12:56:17.000000000","message":"For once, not my Irish spelling :)\n\n\"iff\" abreviates \"if and only if\"","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bc63168cd0820bc6036d1024db133c00c42c291a","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.target \u003d target"},{"line_number":42,"context_line":"        self.replace \u003d replace"},{"line_number":43,"context_line":"        self.keep \u003d None"},{"line_number":44,"context_line":"        LOG.info(_(\u0027scaling conversion transformer with source:\u0027"},{"line_number":45,"context_line":"                   \u0027 %(source)s target: %(target)s replace:\u0027"},{"line_number":46,"context_line":"                   \u0027 %(replace)s\u0027) % locals())"},{"line_number":47,"context_line":"        super(ScalingTransformer, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRsM%3D","line":44,"updated":"2013-07-05 12:00:34.000000000","message":"info seems too verbose to me, debug should be enough","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"0e5f5bf0e4003d5e7d0183c077c8c14fc355db99","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.target \u003d target"},{"line_number":42,"context_line":"        self.replace \u003d replace"},{"line_number":43,"context_line":"        self.keep \u003d None"},{"line_number":44,"context_line":"        LOG.info(_(\u0027scaling conversion transformer with source:\u0027"},{"line_number":45,"context_line":"                   \u0027 %(source)s target: %(target)s replace:\u0027"},{"line_number":46,"context_line":"                   \u0027 %(replace)s\u0027) % locals())"},{"line_number":47,"context_line":"        super(ScalingTransformer, self).__init__(**kwargs)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRnw%3D","line":44,"in_reply_to":"AAAAPn%2F%2FRsM%3D","updated":"2013-07-05 12:56:17.000000000","message":"Fair enough, I change to debug.","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"9d5b36ec26d54a7bb949b1cddc7dff58fabc8f3c","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        \"\"\"Apply the scaling factor (either a straight multiplicative"},{"line_number":52,"context_line":"           factor or else a string to be eval\u0027d)."},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":"        return ((eval(scale) if isinstance(scale, basestring)"},{"line_number":55,"context_line":"                 else counter.volume * scale) if scale else counter.volume)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _convert(self, counter, growth\u003d1):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRbk%3D","line":54,"updated":"2013-07-05 14:42:39.000000000","message":"We should put all of the counter and metadata variables into a namespace, so the formula doesn\u0027t have to know how to use counter.resource_metadata.get() to fetch the values it wants. We should use a deepcopy, too, to prevent the expression from modifying the metadata and breaking something.","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"9d5b36ec26d54a7bb949b1cddc7dff58fabc8f3c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        unit \u003d self.target.get(\u0027unit\u0027)"},{"line_number":62,"context_line":"        type \u003d self.target.get(\u0027type\u0027)"},{"line_number":63,"context_line":"        scale \u003d self.target.get(\u0027scale\u0027)"},{"line_number":64,"context_line":"        return counter._replace("},{"line_number":65,"context_line":"            name\u003dname if name else counter.name,"},{"line_number":66,"context_line":"            unit\u003dunit if unit else counter.unit,"},{"line_number":67,"context_line":"            type\u003dtype if type else counter.type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRaM%3D","line":64,"updated":"2013-07-05 14:42:39.000000000","message":"Replace is a private method of the namedtuple, so we shouldn\u0027t use it here. We should return a new object.","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"9d5b36ec26d54a7bb949b1cddc7dff58fabc8f3c","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        type \u003d self.target.get(\u0027type\u0027)"},{"line_number":63,"context_line":"        scale \u003d self.target.get(\u0027scale\u0027)"},{"line_number":64,"context_line":"        return counter._replace("},{"line_number":65,"context_line":"            name\u003dname if name else counter.name,"},{"line_number":66,"context_line":"            unit\u003dunit if unit else counter.unit,"},{"line_number":67,"context_line":"            type\u003dtype if type else counter.type,"},{"line_number":68,"context_line":"            volume\u003dself._scale(counter, scale) * growth"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRaY%3D","line":65,"updated":"2013-07-05 14:42:39.000000000","message":"These can all just be \"self.target.get(\u0027thing\u0027, counter.thing)\" instead of pre-fetching and then testing the values.","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"9d5b36ec26d54a7bb949b1cddc7dff58fabc8f3c","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            volume\u003dself._scale(counter, scale) * growth"},{"line_number":69,"context_line":"        )"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _keep(self, counter, transformed):"},{"line_number":72,"context_line":"        \"\"\"Either replace counter with the transformed version"},{"line_number":73,"context_line":"           or preserve for flush() call to emit as an additional"},{"line_number":74,"context_line":"           sample."}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRZw%3D","line":71,"updated":"2013-07-05 14:42:39.000000000","message":"Having an attribute keep and a method _keep() is a little confusing. Would it be right to call the attribute \"_previous\"?","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"9d5b36ec26d54a7bb949b1cddc7dff58fabc8f3c","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _keep(self, counter, transformed):"},{"line_number":72,"context_line":"        \"\"\"Either replace counter with the transformed version"},{"line_number":73,"context_line":"           or preserve for flush() call to emit as an additional"},{"line_number":74,"context_line":"           sample."},{"line_number":75,"context_line":"        \"\"\""},{"line_number":76,"context_line":"        if self.replace:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRZo%3D","line":73,"updated":"2013-07-05 14:42:39.000000000","message":"I wonder if we should just make handle_sample() return an iterable instead of a single value to avoid having to play this sort of game?","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bc63168cd0820bc6036d1024db133c00c42c291a","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        \"\"\"Handle a sample, converting if necessary.\"\"\""},{"line_number":84,"context_line":"        LOG.debug(\u0027handling counter %s\u0027, (counter,))"},{"line_number":85,"context_line":"        if ("},{"line_number":86,"context_line":"            counter.name \u003d\u003d self.source.get(\u0027name\u0027) or"},{"line_number":87,"context_line":"            counter.unit \u003d\u003d self.source.get(\u0027unit\u0027)"},{"line_number":88,"context_line":"        ):"},{"line_number":89,"context_line":"            transformed \u003d self._convert(counter)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRr8%3D","line":86,"updated":"2013-07-05 12:00:34.000000000","message":"You shouldn\u0027t have this name parameter IIUC.\n\nThe pipeline is supposed to do the job of configuring which samples are passed to which parameters, so it seems incongruous to do it a second time here.\n\nWe don\u0027t have a pipeline parameter for unit dispatching though, so that may be ok.","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"69e7c321685722378e9090fef1c3ff934232d6a0","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        \"\"\"Handle a sample, converting if necessary.\"\"\""},{"line_number":84,"context_line":"        LOG.debug(\u0027handling counter %s\u0027, (counter,))"},{"line_number":85,"context_line":"        if ("},{"line_number":86,"context_line":"            counter.name \u003d\u003d self.source.get(\u0027name\u0027) or"},{"line_number":87,"context_line":"            counter.unit \u003d\u003d self.source.get(\u0027unit\u0027)"},{"line_number":88,"context_line":"        ):"},{"line_number":89,"context_line":"            transformed \u003d self._convert(counter)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAP3%2F%2F13Y%3D","line":86,"in_reply_to":"AAAAPn%2F%2FRgE%3D","updated":"2013-07-10 15:27:50.000000000","message":"I think it\u0027s a toss-up between configuring an entirely new pipeline just to change the scale of one meter vs. having a transformation that only applies to one type of meter.\n\nWhat if we move the tests for applying a transformation out of the implementation of the transformer and let the pipeline handle it? (If we do that, let\u0027s go ahead with this functional patch, first.)","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"46b3c5e7794d81265b2f9e903fc171dbf687ea84","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        \"\"\"Handle a sample, converting if necessary.\"\"\""},{"line_number":84,"context_line":"        LOG.debug(\u0027handling counter %s\u0027, (counter,))"},{"line_number":85,"context_line":"        if ("},{"line_number":86,"context_line":"            counter.name \u003d\u003d self.source.get(\u0027name\u0027) or"},{"line_number":87,"context_line":"            counter.unit \u003d\u003d self.source.get(\u0027unit\u0027)"},{"line_number":88,"context_line":"        ):"},{"line_number":89,"context_line":"            transformed \u003d self._convert(counter)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRgE%3D","line":86,"in_reply_to":"AAAAPn%2F%2FRnQ%3D","updated":"2013-07-05 13:47:19.000000000","message":"Understood. Though I\u0027d really prefer to solve problem in one place only to avoid confusions etc. These software are already utterly complicated to configure, so adding multiple times the same mechanism isn\u0027t going to help.\n\nThough maybe I\u0027m the only one thinking that, I\u0027d be curious to have others\u0027 opinions on this. :)","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"0e5f5bf0e4003d5e7d0183c077c8c14fc355db99","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        \"\"\"Handle a sample, converting if necessary.\"\"\""},{"line_number":84,"context_line":"        LOG.debug(\u0027handling counter %s\u0027, (counter,))"},{"line_number":85,"context_line":"        if ("},{"line_number":86,"context_line":"            counter.name \u003d\u003d self.source.get(\u0027name\u0027) or"},{"line_number":87,"context_line":"            counter.unit \u003d\u003d self.source.get(\u0027unit\u0027)"},{"line_number":88,"context_line":"        ):"},{"line_number":89,"context_line":"            transformed \u003d self._convert(counter)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRnQ%3D","line":86,"in_reply_to":"AAAAPn%2F%2FRr8%3D","updated":"2013-07-05 12:56:17.000000000","message":"I thought a bit about whether to rely on the pipeline counter config, or to include counter name-matching within the transformer itself. My logic for doing it this way was that a pipeline is potentially a fairly coarse-grained structure (i.e. includes elements likely to be common, such as interval and publisher, and the wildcard-based counter matching makes it easy to apply one pipeline to many counters).\n\nSo it seemed useful to be able to apply the scaling logic selectively to only some of those counters handled by a particular pipeline, to avoid making the pipeline.yaml too verbose with multiple pipelines set up for fine-grained matching of counter names (with likely repetition of the interval, publisher settings).","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"bc63168cd0820bc6036d1024db133c00c42c291a","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def flush(self, context, source):"},{"line_number":95,"context_line":"        \"\"\"Flush is the mechanism whereby a transformer may emit"},{"line_number":96,"context_line":"           additional counters."},{"line_number":97,"context_line":"        \"\"\""},{"line_number":98,"context_line":"        counters \u003d []"},{"line_number":99,"context_line":"        if self.keep:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRsE%3D","line":96,"updated":"2013-07-05 12:00:34.000000000","message":"I\u0027m not sure that\u0027s a good comment. You should explain what it does, now why it does it here. :)","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"0e5f5bf0e4003d5e7d0183c077c8c14fc355db99","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def flush(self, context, source):"},{"line_number":95,"context_line":"        \"\"\"Flush is the mechanism whereby a transformer may emit"},{"line_number":96,"context_line":"           additional counters."},{"line_number":97,"context_line":"        \"\"\""},{"line_number":98,"context_line":"        counters \u003d []"},{"line_number":99,"context_line":"        if self.keep:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPn%2F%2FRns%3D","line":96,"in_reply_to":"AAAAPn%2F%2FRsE%3D","updated":"2013-07-05 12:56:17.000000000","message":"Yep, I\u0027ll fix that.","commit_id":"15acebe74f1ed6b0bdc3f9f485fa2ede32d9127f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"cef89515de1d8c63401c44ace8615bc889baf626","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        return ((eval(scale, {}, ns) if isinstance(scale, basestring)"},{"line_number":58,"context_line":"                 else counter.volume * scale) if scale else counter.volume)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _convert(self, counter, growth\u003d1):"},{"line_number":61,"context_line":"        \"\"\"Transform the appropriate counter fields."},{"line_number":62,"context_line":"        \"\"\""},{"line_number":63,"context_line":"        scale \u003d self.target.get(\u0027scale\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAP3%2F%2F41k%3D","line":60,"updated":"2013-07-09 18:52:30.000000000","message":"what\u0027s growth used for? it always seems to be 1","commit_id":"d4e20f85f9e9eb66d543bd6ddbeda8fce5de0837"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"56b5298f2a36c8316a33860f0df49aa2ee2cadb9","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        return ((eval(scale, {}, ns) if isinstance(scale, basestring)"},{"line_number":58,"context_line":"                 else counter.volume * scale) if scale else counter.volume)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _convert(self, counter, growth\u003d1):"},{"line_number":61,"context_line":"        \"\"\"Transform the appropriate counter fields."},{"line_number":62,"context_line":"        \"\"\""},{"line_number":63,"context_line":"        scale \u003d self.target.get(\u0027scale\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAP3%2F%2FyPI%3D","line":60,"in_reply_to":"AAAAP3%2F%2F41k%3D","updated":"2013-07-11 14:30:13.000000000","message":"Just a placeholder needed by the next patch in the sequence:\n\n  https://review.openstack.org/35774\n\nI\u0027ll remove from this patch and move it up to the later patch as it would be better to keep them completely independent?","commit_id":"d4e20f85f9e9eb66d543bd6ddbeda8fce5de0837"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"4a83dc46c7e7cfd2e02abf696419094a25c16603","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        \"\"\"Transform the appropriate counter fields."},{"line_number":62,"context_line":"        \"\"\""},{"line_number":63,"context_line":"        scale \u003d self.target.get(\u0027scale\u0027)"},{"line_number":64,"context_line":"        return counter._replace("},{"line_number":65,"context_line":"            name\u003dself.target.get(\u0027name\u0027, counter.name),"},{"line_number":66,"context_line":"            unit\u003dself.target.get(\u0027unit\u0027, counter.unit),"},{"line_number":67,"context_line":"            type\u003dself.target.get(\u0027type\u0027, counter.type),"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAP3%2F%2F13A%3D","line":64,"updated":"2013-07-10 15:33:39.000000000","message":"This is still using a private method of the namedtuple implementation. Just instantiate a new counter explicitly.","commit_id":"32cac94d8ef94c92663c7ca1f9063ebf2e46ee84"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"5edecab2e007e604b872e4e2802a0245c27d9f94","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from ceilometer import counter as ceilocounter"},{"line_number":22,"context_line":"from ceilometer import transformer"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ceilometer.openstack.common import log"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAP3%2F%2Fz34%3D","line":24,"updated":"2013-07-11 04:00:01.000000000","message":"import order?","commit_id":"64a4bc4b194d046da20d4e0877692482323785a9"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"7675e0e016fb33bcff41e1b100a1ff8a0ad9ec05","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from ceilometer import counter as ceilocounter"},{"line_number":22,"context_line":"from ceilometer import transformer"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ceilometer.openstack.common import log"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAP3%2F%2Fy%2Fc%3D","line":24,"in_reply_to":"AAAAP3%2F%2Fz34%3D","updated":"2013-07-11 09:51:04.000000000","message":"Fixed in latest.","commit_id":"64a4bc4b194d046da20d4e0877692482323785a9"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f926d176b27416b248402ae544dc114666bef616","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        \"\"\"Apply the scaling factor (either a straight multiplicative"},{"line_number":54,"context_line":"           factor or else a string to be eval\u0027d)."},{"line_number":55,"context_line":"        \"\"\""},{"line_number":56,"context_line":"        ns \u003d copy.deepcopy(counter._asdict())"},{"line_number":57,"context_line":"        return ((eval(scale, {}, ns) if isinstance(scale, basestring)"},{"line_number":58,"context_line":"                 else counter.volume * scale) if scale else counter.volume)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAP3%2F%2FyHQ%3D","line":56,"updated":"2013-07-11 14:56:10.000000000","message":"You know what Doug\u0027s going to say on this.","commit_id":"a26b7cfbe682394b44fd3e5eb9a5ca7795f4c973"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c4e22ad5b17ffd3181a402b6136e2f6b8b85b3e5","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        \"\"\"Apply the scaling factor (either a straight multiplicative"},{"line_number":54,"context_line":"           factor or else a string to be eval\u0027d)."},{"line_number":55,"context_line":"        \"\"\""},{"line_number":56,"context_line":"        ns \u003d copy.deepcopy(counter._asdict())"},{"line_number":57,"context_line":"        return ((eval(scale, {}, ns) if isinstance(scale, basestring)"},{"line_number":58,"context_line":"                 else counter.volume * scale) if scale else counter.volume)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAP3%2F%2FxuU%3D","line":56,"in_reply_to":"AAAAP3%2F%2FyHQ%3D","updated":"2013-07-11 16:21:33.000000000","message":"sneak this in before Doug notices? seems fine... underscore is only there for naming conflict according to doc","commit_id":"a26b7cfbe682394b44fd3e5eb9a5ca7795f4c973"}],"tests/test_pipeline.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"cef89515de1d8c63401c44ace8615bc889baf626","unresolved":false,"context_lines":[{"line_number":742,"context_line":"        self.assertEquals(getattr(amb_temp, \u0027name\u0027), \u0027ambient_temperature\u0027)"},{"line_number":743,"context_line":"        self.assertEquals(getattr(amb_temp, \u0027unit\u0027), \u0027°F\u0027)"},{"line_number":744,"context_line":"        self.assertEquals(getattr(amb_temp, \u0027volume\u0027), 88.8)"},{"line_number":745,"context_line":"        self.assertEquals(getattr(core_temp, \u0027volume\u0027), 96.8)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAP3%2F%2F40s%3D","line":745,"updated":"2013-07-09 18:52:30.000000000","message":"(nit) this assert isn\u0027t necessary -- a repeat of above.","commit_id":"d4e20f85f9e9eb66d543bd6ddbeda8fce5de0837"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"56b5298f2a36c8316a33860f0df49aa2ee2cadb9","unresolved":false,"context_lines":[{"line_number":742,"context_line":"        self.assertEquals(getattr(amb_temp, \u0027name\u0027), \u0027ambient_temperature\u0027)"},{"line_number":743,"context_line":"        self.assertEquals(getattr(amb_temp, \u0027unit\u0027), \u0027°F\u0027)"},{"line_number":744,"context_line":"        self.assertEquals(getattr(amb_temp, \u0027volume\u0027), 88.8)"},{"line_number":745,"context_line":"        self.assertEquals(getattr(core_temp, \u0027volume\u0027), 96.8)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAP3%2F%2FyO8%3D","line":745,"in_reply_to":"AAAAP3%2F%2F40s%3D","updated":"2013-07-11 14:30:13.000000000","message":"Darn copy\u0027n\u0027paste will fix!","commit_id":"d4e20f85f9e9eb66d543bd6ddbeda8fce5de0837"}]}
