)]}'
{"keystoneauth1/extras/_saml2/v3/saml2.py":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"c20c853a56013f9a6a9aa4b265d57d375a407011","unresolved":false,"context_lines":[{"line_number":32,"context_line":"_XPATH_SP_CONSUMER_URL \u003d _XBASE + \u0027paos:Request/@responseConsumerURL\u0027"},{"line_number":33,"context_line":"_XPATH_IDP_CONSUMER_URL \u003d _XBASE + \u0027ecp:Response/@AssertionConsumerServiceURL\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"_SOAP_FAULT \u003d \"\"\""},{"line_number":36,"context_line":"    \u003cS:Envelope xmlns:S\u003d\"http://schemas.xmlsoap.org/soap/envelope/\"\u003e"},{"line_number":37,"context_line":"       \u003cS:Body\u003e"},{"line_number":38,"context_line":"         \u003cS:Fault\u003e"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_efd2445b","line":35,"updated":"2015-12-09 08:37:14.000000000","message":"i think it\u0027s a good time to replace this string with a (l)xlm object, later simply serialized to string.","commit_id":"9ad0e2cafec1921aea06c19cb0ec2bc2577fe848"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"fa72b19443806b26e4beb883f7822b92727d73c7","unresolved":false,"context_lines":[{"line_number":32,"context_line":"_XPATH_SP_CONSUMER_URL \u003d _XBASE + \u0027paos:Request/@responseConsumerURL\u0027"},{"line_number":33,"context_line":"_XPATH_IDP_CONSUMER_URL \u003d _XBASE + \u0027ecp:Response/@AssertionConsumerServiceURL\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"_SOAP_FAULT \u003d \"\"\""},{"line_number":36,"context_line":"    \u003cS:Envelope xmlns:S\u003d\"http://schemas.xmlsoap.org/soap/envelope/\"\u003e"},{"line_number":37,"context_line":"       \u003cS:Body\u003e"},{"line_number":38,"context_line":"         \u003cS:Fault\u003e"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_99572026","line":35,"in_reply_to":"7a740942_efd2445b","updated":"2015-12-10 00:45:00.000000000","message":"Can we hold on this until we move to the internal XML parser from LXML (if at all possible). I\u0027d like to make sure we have it right that way rather than digging ourselves deeper into LXML land.","commit_id":"9ad0e2cafec1921aea06c19cb0ec2bc2577fe848"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"c20c853a56013f9a6a9aa4b265d57d375a407011","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        request.headers[\u0027PAOS\u0027] \u003d ("},{"line_number":121,"context_line":"            \u0027ver\u003d\"urn:liberty:paos:2003-08\";\u0027"},{"line_number":122,"context_line":"            \u0027\"urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp\"\u0027"},{"line_number":123,"context_line":"        )"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        request.register_hook(\u0027response\u0027, self._handle_response)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_6f4e543c","line":122,"updated":"2015-12-09 08:37:14.000000000","message":"let\u0027s make it constants?","commit_id":"9ad0e2cafec1921aea06c19cb0ec2bc2577fe848"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"fa72b19443806b26e4beb883f7822b92727d73c7","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        request.headers[\u0027PAOS\u0027] \u003d ("},{"line_number":121,"context_line":"            \u0027ver\u003d\"urn:liberty:paos:2003-08\";\u0027"},{"line_number":122,"context_line":"            \u0027\"urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp\"\u0027"},{"line_number":123,"context_line":"        )"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        request.register_hook(\u0027response\u0027, self._handle_response)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_193a50e8","line":122,"in_reply_to":"7a740942_6f4e543c","updated":"2015-12-10 00:45:00.000000000","message":"++","commit_id":"9ad0e2cafec1921aea06c19cb0ec2bc2577fe848"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b0954c1fbf7e0efe0c69012ac293699c19375944","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            self.ECP_IDP_CONSUMER_URL,"},{"line_number":222,"context_line":"            namespaces\u003dself.ECP_SAML2_NAMESPACES)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        self.idp_response_consumer_url \u003d self._first(idp_response_consumer_url)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        self._check_consumer_urls(session, self.idp_response_consumer_url,"},{"line_number":227,"context_line":"                                  self.sp_response_consumer_url)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_75035310","side":"PARENT","line":224,"range":{"start_line":224,"start_character":8,"end_line":224,"end_character":79},"updated":"2016-07-18 04:23:35.000000000","message":"is this missing in the refactor?","commit_id":"d86df8613e1aaf800ec1a2c5b45fda548f171313"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b0954c1fbf7e0efe0c69012ac293699c19375944","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        raise InvalidResponse(msg)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def _str_from_xml(xml, path):"},{"line_number":80,"context_line":"    l \u003d xml.xpath(path, namespaces\u003d_XML_NAMESPACES)"},{"line_number":81,"context_line":"    if len(l) !\u003d 1:"},{"line_number":82,"context_line":"        raise IndexError(\u0027%s should provide a single element list\u0027 % path)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_f5a3c34d","line":79,"range":{"start_line":79,"start_character":18,"end_line":79,"end_character":21},"updated":"2016-07-18 04:23:35.000000000","message":"nit: xml is part of stdlib, so maybe rename this","commit_id":"4c48fa26e0ab15886e7b6452f32701e97292b1b2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b0954c1fbf7e0efe0c69012ac293699c19375944","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    return l[0]"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"class _SamlAuth(requests.auth.AuthBase):"},{"line_number":87,"context_line":"    \"\"\"A generic SAML ECP plugin for requests."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    This is a multi-step process including multiple HTTP requests."}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_9581a792","line":86,"range":{"start_line":86,"start_character":16,"end_line":86,"end_character":38},"updated":"2016-07-18 04:23:35.000000000","message":"a comment about requests.auth, and why it\u0027s used would be good","commit_id":"4c48fa26e0ab15886e7b6452f32701e97292b1b2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b0954c1fbf7e0efe0c69012ac293699c19375944","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            req \u003d requests.Request(*send_args, **send_kwargs)"},{"line_number":146,"context_line":"            return sp_response.connection.send(req.prepare(), **kwargs)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        authn_request \u003d _response_xml(sp_response, \u0027Service Provider\u0027)"},{"line_number":149,"context_line":"        relay_state \u003d _str_from_xml(authn_request, _XPATH_SP_RELAY_STATE)"},{"line_number":150,"context_line":"        sp_consumer_url \u003d _str_from_xml(authn_request, _XPATH_SP_CONSUMER_URL)"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_b535cbf8","line":148,"range":{"start_line":148,"start_character":8,"end_line":148,"end_character":21},"updated":"2016-07-18 04:23:35.000000000","message":"may be worth describing what authn_request is, you\u0027re mutating it a lot in this function","commit_id":"4c48fa26e0ab15886e7b6452f32701e97292b1b2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b0954c1fbf7e0efe0c69012ac293699c19375944","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        relay_state \u003d _str_from_xml(authn_request, _XPATH_SP_RELAY_STATE)"},{"line_number":150,"context_line":"        sp_consumer_url \u003d _str_from_xml(authn_request, _XPATH_SP_CONSUMER_URL)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        authn_request.remove(authn_request[0])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        idp_response \u003d send(\u0027POST\u0027,"},{"line_number":155,"context_line":"                            self.identity_provider_url,"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_35743bce","line":152,"range":{"start_line":152,"start_character":8,"end_line":152,"end_character":46},"updated":"2016-07-18 04:23:35.000000000","message":"a comment why this is done would be nice","commit_id":"4c48fa26e0ab15886e7b6452f32701e97292b1b2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b0954c1fbf7e0efe0c69012ac293699c19375944","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        authn_request.remove(authn_request[0])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        idp_response \u003d send(\u0027POST\u0027,"},{"line_number":155,"context_line":"                            self.identity_provider_url,"},{"line_number":156,"context_line":"                            headers\u003d{\u0027Content-type\u0027: \u0027text/xml\u0027},"},{"line_number":157,"context_line":"                            data\u003detree.tostring(authn_request),"},{"line_number":158,"context_line":"                            auth\u003dself.requests_auth)"},{"line_number":159,"context_line":"        history.append(idp_response)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        authn_response \u003d _response_xml(idp_response, \u0027Identity Provider\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_95588758","line":158,"range":{"start_line":154,"start_character":23,"end_line":158,"end_character":52},"updated":"2016-07-18 04:23:35.000000000","message":"missing in this refactor is:\n\n  authenticated\u003dFalse, log\u003dFalse\n\ni\u0027m guessing those are the defaults ?","commit_id":"4c48fa26e0ab15886e7b6452f32701e97292b1b2"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"a3b0129b7c9b8d321cde6be0ef621f74da7dddd4","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        authn_request.remove(authn_request[0])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        idp_response \u003d send(\u0027POST\u0027,"},{"line_number":155,"context_line":"                            self.identity_provider_url,"},{"line_number":156,"context_line":"                            headers\u003d{\u0027Content-type\u0027: \u0027text/xml\u0027},"},{"line_number":157,"context_line":"                            data\u003detree.tostring(authn_request),"},{"line_number":158,"context_line":"                            auth\u003dself.requests_auth)"},{"line_number":159,"context_line":"        history.append(idp_response)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        authn_response \u003d _response_xml(idp_response, \u0027Identity Provider\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dada55a8_47755396","line":158,"range":{"start_line":154,"start_character":23,"end_line":158,"end_character":52},"in_reply_to":"dada55a8_95588758","updated":"2016-07-19 23:15:57.000000000","message":"autenticated and log are keystoneauth additions. At this point we are going direct to requests so they are not needed.","commit_id":"4c48fa26e0ab15886e7b6452f32701e97292b1b2"}],"setup.cfg":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"3872e04c9bdbb7c75d95207a3e619bb0fe6bd652","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    v3kerberos \u003d keystoneauth1.extras.kerberos._loading:Kerberos"},{"line_number":52,"context_line":"    v3totp \u003d keystoneauth1.loading._plugins.identity.v3:TOTP"},{"line_number":53,"context_line":"    v3fedkerb \u003d keystoneauth1.extras.kerberos._loading:MappedKerberos"},{"line_number":54,"context_line":"    v3samlpassword \u003d keystoneauth1.extras._saml2._loading:Saml2Password"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"[build_sphinx]"},{"line_number":57,"context_line":"source-dir \u003d doc/source"}],"source_content_type":"text/x-ttcn-cfg","patch_set":7,"id":"5a9d85d2_65f9ae80","line":54,"range":{"start_line":54,"start_character":35,"end_line":54,"end_character":41},"updated":"2016-06-21 01:45:56.000000000","message":"maybe we should call this ecp instead of saml? or v3saml2password?","commit_id":"4c48fa26e0ab15886e7b6452f32701e97292b1b2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b0954c1fbf7e0efe0c69012ac293699c19375944","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    v3kerberos \u003d keystoneauth1.extras.kerberos._loading:Kerberos"},{"line_number":52,"context_line":"    v3totp \u003d keystoneauth1.loading._plugins.identity.v3:TOTP"},{"line_number":53,"context_line":"    v3fedkerb \u003d keystoneauth1.extras.kerberos._loading:MappedKerberos"},{"line_number":54,"context_line":"    v3samlpassword \u003d keystoneauth1.extras._saml2._loading:Saml2Password"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"[build_sphinx]"},{"line_number":57,"context_line":"source-dir \u003d doc/source"}],"source_content_type":"text/x-ttcn-cfg","patch_set":7,"id":"3aaa91ec_44578402","line":54,"range":{"start_line":54,"start_character":35,"end_line":54,"end_character":41},"in_reply_to":"5a9d85d2_65f9ae80","updated":"2016-07-18 04:23:35.000000000","message":"i\u0027m OK with this name","commit_id":"4c48fa26e0ab15886e7b6452f32701e97292b1b2"}]}
