)]}'
{"ceilometer/dispatcher/http.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"14401b2bdae2e4e98edcf6fcea27dc842006d6de","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                    \u0027is not set, no data will be posted. For example: target \u0027"},{"line_number":33,"context_line":"                    \u0027\u003d http://hostname:1234/path\u0027),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027target_username\u0027,"},{"line_number":35,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":36,"context_line":"               help\u003d\u0027If the target requires Basic authentication, this is the \u0027"},{"line_number":37,"context_line":"                    \u0027username to use\u0027),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027target_password\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_8ccd87b9","line":35,"updated":"2017-03-02 17:33:00.000000000","message":"just set no default, it will be None","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"14401b2bdae2e4e98edcf6fcea27dc842006d6de","unresolved":false,"context_lines":[{"line_number":36,"context_line":"               help\u003d\u0027If the target requires Basic authentication, this is the \u0027"},{"line_number":37,"context_line":"                    \u0027username to use\u0027),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027target_password\u0027,"},{"line_number":39,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":40,"context_line":"               help\u003d\u0027If the target requires Basic authentication, this is the \u0027"},{"line_number":41,"context_line":"                    \u0027password to use\u0027),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027target_clientcert\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_acc6cb97","line":39,"updated":"2017-03-02 17:33:00.000000000","message":"ditto","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"14401b2bdae2e4e98edcf6fcea27dc842006d6de","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               help\u003d\u0027If the target requires Basic authentication, this is the \u0027"},{"line_number":41,"context_line":"                    \u0027password to use\u0027),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027target_clientcert\u0027,"},{"line_number":43,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027If the target requires client certificate authentication,\u0027"},{"line_number":45,"context_line":"                    \u0027 this is the path to the certificate file\u0027),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027target_clientkey\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_ecbc4308","line":43,"updated":"2017-03-02 17:33:00.000000000","message":"ditto","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"14401b2bdae2e4e98edcf6fcea27dc842006d6de","unresolved":false,"context_lines":[{"line_number":44,"context_line":"               help\u003d\u0027If the target requires client certificate authentication,\u0027"},{"line_number":45,"context_line":"                    \u0027 this is the path to the certificate file\u0027),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027target_clientkey\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":48,"context_line":"               help\u003d\u0027If the target requires client certificate \u0027"},{"line_number":49,"context_line":"                    \u0027authentication and target_clientcert does not already  \u0027"},{"line_number":50,"context_line":"                    \u0027contain the key, this is the path to the key file\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_0cba770a","line":47,"updated":"2017-03-02 17:33:00.000000000","message":"ditto","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"14401b2bdae2e4e98edcf6fcea27dc842006d6de","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                    \u0027sent to. If this is not set, it will default to the same \u0027"},{"line_number":54,"context_line":"                    \u0027as for \\\u0027target\\\u0027.\u0027),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027event_target_username\u0027,"},{"line_number":56,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":57,"context_line":"               help\u003d\u0027If the event target requires Basic authentication, \u0027"},{"line_number":58,"context_line":"                    \u0027this is the username to use. If this is not set, it will \u0027"},{"line_number":59,"context_line":"                    \u0027default to same as for \\\u0027target\\\u0027.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_2c39fba4","line":56,"updated":"2017-03-02 17:33:00.000000000","message":"ditto","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"14401b2bdae2e4e98edcf6fcea27dc842006d6de","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                    \u0027this is the username to use. If this is not set, it will \u0027"},{"line_number":59,"context_line":"                    \u0027default to same as for \\\u0027target\\\u0027.\u0027),"},{"line_number":60,"context_line":"    cfg.StrOpt(\u0027event_target_password\u0027,"},{"line_number":61,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":62,"context_line":"               help\u003d\u0027If the event target requires Basic authentication, \u0027"},{"line_number":63,"context_line":"                    \u0027this is the password to use. If this is not set, it will \u0027"},{"line_number":64,"context_line":"                    \u0027default to same as for \\\u0027target\\\u0027.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_ac4deb3f","line":61,"updated":"2017-03-02 17:33:00.000000000","message":"ditto","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"14401b2bdae2e4e98edcf6fcea27dc842006d6de","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                    \u0027this is the password to use. If this is not set, it will \u0027"},{"line_number":64,"context_line":"                    \u0027default to same as for \\\u0027target\\\u0027.\u0027),"},{"line_number":65,"context_line":"    cfg.StrOpt(\u0027event_target_clientcert\u0027,"},{"line_number":66,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":67,"context_line":"               help\u003d\u0027If the target requires client certificate \u0027"},{"line_number":68,"context_line":"                    \u0027authentication, this is the path to the certificate \u0027"},{"line_number":69,"context_line":"                    \u0027file. If this is not set, it will default to the same as \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_ec5363e0","line":66,"updated":"2017-03-02 17:33:00.000000000","message":"ditto","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"14401b2bdae2e4e98edcf6fcea27dc842006d6de","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                    \u0027file. If this is not set, it will default to the same as \u0027"},{"line_number":70,"context_line":"                    \u0027for \\\u0027target\\\u0027.\u0027),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027event_target_clientkey\u0027,"},{"line_number":72,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":73,"context_line":"               help\u003d\u0027If the target requires client certificate authentication \u0027"},{"line_number":74,"context_line":"                    \u0027and event_target_clientcert does not already contain the \u0027"},{"line_number":75,"context_line":"                    \u0027key, this is the path to the key file. If this is not \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_2c601ba5","line":72,"updated":"2017-03-02 17:33:00.000000000","message":"ditto","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"}],"ceilometer/publisher/http.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"14401b2bdae2e4e98edcf6fcea27dc842006d6de","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            self.verify_ssl \u003d (verify_ssl"},{"line_number":95,"context_line":"                               or True)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        username \u003d self._get_param(params, \u0027username\u0027, None)"},{"line_number":98,"context_line":"        password \u003d self._get_param(params, \u0027password\u0027, None)"},{"line_number":99,"context_line":"        if username:"},{"line_number":100,"context_line":"            self.client_auth \u003d (username, password)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_ac224b50","line":97,"updated":"2017-03-02 17:33:00.000000000","message":"It would be better to use the username from the URL, e.g. parsed_url.username","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"0a4a6d1c2b2e6bf560d5dbc241971c62edf5fcf9","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            self.verify_ssl \u003d (verify_ssl"},{"line_number":95,"context_line":"                               or True)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        username \u003d self._get_param(params, \u0027username\u0027, None)"},{"line_number":98,"context_line":"        password \u003d self._get_param(params, \u0027password\u0027, None)"},{"line_number":99,"context_line":"        if username:"},{"line_number":100,"context_line":"            self.client_auth \u003d (username, password)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_aae5c1dc","line":97,"in_reply_to":"ba2be162_077df0b0","updated":"2017-03-02 22:05:17.000000000","message":"so _get_params take the param from:\n\nhttp://example.com/?usernaname\u003dfoobar\n\nwhereas I\u0027d suggest to pick\n\nhttp://foobar@example.com/","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"},{"author":{"_account_id":14768,"name":"Darren Hague","email":"d.hague@sap.com","username":"dhague"},"change_message_id":"e38deabb85d438c06bccdb4d286057a5bc61e669","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            self.verify_ssl \u003d (verify_ssl"},{"line_number":95,"context_line":"                               or True)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        username \u003d self._get_param(params, \u0027username\u0027, None)"},{"line_number":98,"context_line":"        password \u003d self._get_param(params, \u0027password\u0027, None)"},{"line_number":99,"context_line":"        if username:"},{"line_number":100,"context_line":"            self.client_auth \u003d (username, password)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_dd7aab87","line":97,"in_reply_to":"ba2be162_aae5c1dc","updated":"2017-03-03 08:53:39.000000000","message":"OK, understood. I did think about doing it that way, but didn\u0027t want users to think we were using an insecure URL scheme - but I guess it\u0027s no more confusing than using query params.","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"},{"author":{"_account_id":14768,"name":"Darren Hague","email":"d.hague@sap.com","username":"dhague"},"change_message_id":"69cc7f4519c4d399b688706552da9a48fbdbe014","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            self.verify_ssl \u003d (verify_ssl"},{"line_number":95,"context_line":"                               or True)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        username \u003d self._get_param(params, \u0027username\u0027, None)"},{"line_number":98,"context_line":"        password \u003d self._get_param(params, \u0027password\u0027, None)"},{"line_number":99,"context_line":"        if username:"},{"line_number":100,"context_line":"            self.client_auth \u003d (username, password)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_077df0b0","line":97,"in_reply_to":"ba2be162_ac224b50","updated":"2017-03-02 18:01:17.000000000","message":"I\u0027m confused - why should this be different to the pattern used for getting parameters in the rest of the code?","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"14401b2bdae2e4e98edcf6fcea27dc842006d6de","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                               or True)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        username \u003d self._get_param(params, \u0027username\u0027, None)"},{"line_number":98,"context_line":"        password \u003d self._get_param(params, \u0027password\u0027, None)"},{"line_number":99,"context_line":"        if username:"},{"line_number":100,"context_line":"            self.client_auth \u003d (username, password)"},{"line_number":101,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_cc1f7f06","line":98,"updated":"2017-03-02 17:33:00.000000000","message":"ditto","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"14401b2bdae2e4e98edcf6fcea27dc842006d6de","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            self.client_auth \u003d None"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        clientcert \u003d self._get_param(params, \u0027clientcert\u0027, None)"},{"line_number":105,"context_line":"        if clientcert\u003d\u003d\u0027None\u0027:"},{"line_number":106,"context_line":"            clientcert \u003d None"},{"line_number":107,"context_line":"        clientkey \u003d self._get_param(params, \u0027clientkey\u0027, None)"},{"line_number":108,"context_line":"        if clientkey\u003d\u003d\u0027None\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_0c16f7f0","line":105,"updated":"2017-03-02 17:33:00.000000000","message":"this does not look right","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"},{"author":{"_account_id":14768,"name":"Darren Hague","email":"d.hague@sap.com","username":"dhague"},"change_message_id":"69cc7f4519c4d399b688706552da9a48fbdbe014","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            self.client_auth \u003d None"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        clientcert \u003d self._get_param(params, \u0027clientcert\u0027, None)"},{"line_number":105,"context_line":"        if clientcert\u003d\u003d\u0027None\u0027:"},{"line_number":106,"context_line":"            clientcert \u003d None"},{"line_number":107,"context_line":"        clientkey \u003d self._get_param(params, \u0027clientkey\u0027, None)"},{"line_number":108,"context_line":"        if clientkey\u003d\u003d\u0027None\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_925bdcf5","line":105,"in_reply_to":"ba2be162_0c16f7f0","updated":"2017-03-02 18:01:17.000000000","message":"You\u0027re probably right - it was a workaround for an obscure bug we had which probably no longer applies. I\u0027ll double check.","commit_id":"776ea2558d8abe31d25736d298b87f39b4dd062c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c253d33e79db31f664ab16d60d280bcd6702e29d","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self.poster \u003d ("},{"line_number":94,"context_line":"            self._do_post if strutils.bool_from_string(self._get_param("},{"line_number":95,"context_line":"                params, \u0027batch\u0027, True)) else self._individual_post)"},{"line_number":96,"context_line":"        verify_ssl \u003d self._get_param(params, \u0027verify_ssl\u0027, None)"},{"line_number":97,"context_line":"        try:"},{"line_number":98,"context_line":"            self.verify_ssl \u003d strutils.bool_from_string(verify_ssl,"},{"line_number":99,"context_line":"                                                        strict\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a30ddce_d76a081a","line":96,"range":{"start_line":96,"start_character":59,"end_line":96,"end_character":63},"updated":"2017-03-07 14:46:39.000000000","message":"True","commit_id":"9a4879f85bb00e3d0dc6474821ad8c638d1fdca2"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c253d33e79db31f664ab16d60d280bcd6702e29d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            self._do_post if strutils.bool_from_string(self._get_param("},{"line_number":95,"context_line":"                params, \u0027batch\u0027, True)) else self._individual_post)"},{"line_number":96,"context_line":"        verify_ssl \u003d self._get_param(params, \u0027verify_ssl\u0027, None)"},{"line_number":97,"context_line":"        try:"},{"line_number":98,"context_line":"            self.verify_ssl \u003d strutils.bool_from_string(verify_ssl,"},{"line_number":99,"context_line":"                                                        strict\u003dTrue)"},{"line_number":100,"context_line":"        except ValueError:"},{"line_number":101,"context_line":"            self.verify_ssl \u003d (verify_ssl or True)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        username \u003d parsed_url.username"},{"line_number":104,"context_line":"        password \u003d parsed_url.password"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a30ddce_577e18e5","line":101,"range":{"start_line":97,"start_character":0,"end_line":101,"end_character":50},"updated":"2017-03-07 14:46:39.000000000","message":"self.verify_ssl \u003d strutils.bool_from_string(verify_ssl, default\u003dTrue)","commit_id":"9a4879f85bb00e3d0dc6474821ad8c638d1fdca2"},{"author":{"_account_id":14768,"name":"Darren Hague","email":"d.hague@sap.com","username":"dhague"},"change_message_id":"b6e36f6536877f40f80c6ee9f5658cc8830ccbb9","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            self._do_post if strutils.bool_from_string(self._get_param("},{"line_number":95,"context_line":"                params, \u0027batch\u0027, True)) else self._individual_post)"},{"line_number":96,"context_line":"        verify_ssl \u003d self._get_param(params, \u0027verify_ssl\u0027, None)"},{"line_number":97,"context_line":"        try:"},{"line_number":98,"context_line":"            self.verify_ssl \u003d strutils.bool_from_string(verify_ssl,"},{"line_number":99,"context_line":"                                                        strict\u003dTrue)"},{"line_number":100,"context_line":"        except ValueError:"},{"line_number":101,"context_line":"            self.verify_ssl \u003d (verify_ssl or True)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        username \u003d parsed_url.username"},{"line_number":104,"context_line":"        password \u003d parsed_url.password"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a30ddce_d6c84177","line":101,"range":{"start_line":97,"start_character":0,"end_line":101,"end_character":50},"in_reply_to":"9a30ddce_577e18e5","updated":"2017-03-07 17:38:01.000000000","message":"It needs to be the original code, as this could be a path to a cert file as well as plain True or False. Blame the requests module: http://docs.python-requests.org/en/master/user/advanced/#ssl-cert-verification  :)","commit_id":"9a4879f85bb00e3d0dc6474821ad8c638d1fdca2"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c253d33e79db31f664ab16d60d280bcd6702e29d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        password \u003d parsed_url.password"},{"line_number":105,"context_line":"        if username:"},{"line_number":106,"context_line":"            self.client_auth \u003d (username, password)"},{"line_number":107,"context_line":"            netloc \u003d parsed_url.netloc.replace(username+\u0027:\u0027+password+\u0027@\u0027, \u0027\u0027)"},{"line_number":108,"context_line":"        else:"},{"line_number":109,"context_line":"            self.client_auth \u003d None"},{"line_number":110,"context_line":"            netloc \u003d parsed_url.netloc"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a30ddce_f74e2cc0","line":107,"updated":"2017-03-07 14:46:39.000000000","message":"is this really needed? just wondering","commit_id":"9a4879f85bb00e3d0dc6474821ad8c638d1fdca2"},{"author":{"_account_id":14768,"name":"Darren Hague","email":"d.hague@sap.com","username":"dhague"},"change_message_id":"b6e36f6536877f40f80c6ee9f5658cc8830ccbb9","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        password \u003d parsed_url.password"},{"line_number":105,"context_line":"        if username:"},{"line_number":106,"context_line":"            self.client_auth \u003d (username, password)"},{"line_number":107,"context_line":"            netloc \u003d parsed_url.netloc.replace(username+\u0027:\u0027+password+\u0027@\u0027, \u0027\u0027)"},{"line_number":108,"context_line":"        else:"},{"line_number":109,"context_line":"            self.client_auth \u003d None"},{"line_number":110,"context_line":"            netloc \u003d parsed_url.netloc"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a30ddce_16bad9e1","line":107,"in_reply_to":"9a30ddce_f74e2cc0","updated":"2017-03-07 17:38:01.000000000","message":"Using a URL with credentials in it is a strong security antipattern - this URL could get logged somewhere with reduced access controls which would expose the credentials.","commit_id":"9a4879f85bb00e3d0dc6474821ad8c638d1fdca2"}],"ceilometer/tests/unit/dispatcher/test_http.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c253d33e79db31f664ab16d60d280bcd6702e29d","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        dispatcher \u003d http.HttpDispatcher(self.CONF)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        # The target should be None"},{"line_number":57,"context_line":"        self.assertEqual(None, dispatcher.target)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        with mock.patch.object(requests, \u0027post\u0027) as post:"},{"line_number":60,"context_line":"            dispatcher.record_metering_data(self.msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a30ddce_97d6d0c3","line":57,"updated":"2017-03-07 14:46:39.000000000","message":"assertIsNone","commit_id":"9a4879f85bb00e3d0dc6474821ad8c638d1fdca2"}]}
