)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"b2a83689030893a1eff04d972daaf877469551f9","unresolved":false,"context_lines":[{"line_number":10,"context_line":"This patch replaces unicode with six.text_type to make Keystone"},{"line_number":11,"context_line":"compatible with Python 2 and Python 3."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Blueprint keystone-py3kcompat"},{"line_number":14,"context_line":"Change-Id: I4a5cf86ca1aa5f4d305696c2b39cdbc7e2cbc71e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a7b0d38_2aed3def","line":13,"range":{"start_line":13,"start_character":10,"end_line":13,"end_character":18},"updated":"2015-12-24 14:14:42.000000000","message":"change from \"keystone-py3kcompat\" to python3. keystone-py3kcompat is not a valid bp anymore.","commit_id":"27c617032171290c9872474cf1fb5b74a2ec5bb1"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"a22291eb89fba9dfaf9c30c1d10541071f8da71b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"This patch replaces unicode with six.text_type to make Keystone"},{"line_number":11,"context_line":"compatible with Python 2 and Python 3."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Blueprint keystone-py3kcompat"},{"line_number":14,"context_line":"Change-Id: I4a5cf86ca1aa5f4d305696c2b39cdbc7e2cbc71e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a7b0d38_411e6f64","line":13,"range":{"start_line":13,"start_character":10,"end_line":13,"end_character":18},"in_reply_to":"1a7b0d38_2aed3def","updated":"2015-12-24 15:13:21.000000000","message":"I have added \"keystone-py3kcompat\" because this link returns the correct blueprint in search result but with \"python3\" it returns a list of blueprints for different projects. I\u0027ll make this change in next PS if it is required. Please let me know your opinion.","commit_id":"27c617032171290c9872474cf1fb5b74a2ec5bb1"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"5e13a97d57c0014240571a7024873840c4a2264e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"file was added to tox.ini."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Co-Authored-By: Tom Cocozzello \u003ctjcocozz@us.ibm.com\u003e"},{"line_number":16,"context_line":"Blueprint keystone-py3kcompat"},{"line_number":17,"context_line":"Change-Id: I4a5cf86ca1aa5f4d305696c2b39cdbc7e2cbc71e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"fa69d971_42b408f1","line":16,"updated":"2016-01-08 18:08:07.000000000","message":"This is not a blueprint. It should reference \"python3\"","commit_id":"7c06a1005cb08b145050444698d263894b9eca52"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"10fd191d4d110cf78c612e11ca04bcc85e10d897","unresolved":false,"context_lines":[{"line_number":13,"context_line":"file was added to tox.ini."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Co-Authored-By: Tom Cocozzello \u003ctjcocozz@us.ibm.com\u003e"},{"line_number":16,"context_line":"Blueprint keystone-py3kcompat"},{"line_number":17,"context_line":"Change-Id: I4a5cf86ca1aa5f4d305696c2b39cdbc7e2cbc71e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa69d971_77e0e5cc","line":16,"updated":"2016-01-08 22:53:29.000000000","message":"from patch set 8:\n\nThis is not a blueprint. It should reference \"python3\"","commit_id":"a110831a88d63fccc808da17c0b559ec12d0605d"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"03f7799351e09586e229b03e7526c1b602afd950","unresolved":false,"context_lines":[{"line_number":13,"context_line":"file was added to tox.ini."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Co-Authored-By: Tom Cocozzello \u003ctjcocozz@us.ibm.com\u003e"},{"line_number":16,"context_line":"Blueprint keystone-py3kcompat"},{"line_number":17,"context_line":"Change-Id: I4a5cf86ca1aa5f4d305696c2b39cdbc7e2cbc71e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa69d971_179f2904","line":16,"in_reply_to":"fa69d971_77e0e5cc","updated":"2016-01-08 23:02:47.000000000","message":"Done","commit_id":"a110831a88d63fccc808da17c0b559ec12d0605d"}],"keystone/tests/unit/core.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"15f443b9fbb776ef9e40978bfd99b17086a8428d","unresolved":false,"context_lines":[{"line_number":779,"context_line":"    def assertNotEmpty(self, l):"},{"line_number":780,"context_line":"        self.assertTrue(len(l))"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"    def assertRaisesRegexp(self, expected_exception, expected_regexp,"},{"line_number":783,"context_line":"                           callable_obj, *args, **kwargs):"},{"line_number":784,"context_line":"        \"\"\"Asserts that the message in a raised exception matches a regexp.\"\"\""},{"line_number":785,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_c5adede9","side":"PARENT","line":782,"updated":"2016-01-06 21:50:50.000000000","message":"Whatever modules that contain tests using this method which were previously failing may be added to the the tox.ini py3 job if they are now passing.\n\nThis module should not be added.","commit_id":"a422291b03eb73d6c5d4c9207f2ff2de45b6d3ec"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"28e0f9f6813147166f1bac160eec0fa0d96745a2","unresolved":false,"context_lines":[{"line_number":779,"context_line":"    def assertNotEmpty(self, l):"},{"line_number":780,"context_line":"        self.assertTrue(len(l))"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"    def assertRaisesRegexp(self, expected_exception, expected_regexp,"},{"line_number":783,"context_line":"                           callable_obj, *args, **kwargs):"},{"line_number":784,"context_line":"        \"\"\"Asserts that the message in a raised exception matches a regexp.\"\"\""},{"line_number":785,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_d66ef7fe","side":"PARENT","line":782,"in_reply_to":"fa69d971_c5adede9","updated":"2016-01-07 07:06:58.000000000","message":"I tried to find modules that contain tests using this method but we can not add them in tox as of now due to other py3 dependencies. Thanks","commit_id":"a422291b03eb73d6c5d4c9207f2ff2de45b6d3ec"}],"keystone/tests/unit/test_middleware.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f97e0bf7b3e77b1d28099ade7eaba49a8b09aae2","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def _application(self):"},{"line_number":41,"context_line":"        \"\"\"A base wsgi application that returns a simple response.\"\"\""},{"line_number":42,"context_line":"        def app(environ, start_response):"},{"line_number":43,"context_line":"            body \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":44,"context_line":"            resp_headers \u003d [(\u0027Content-Type\u0027, \u0027text/html; charset\u003dutf8\u0027),"},{"line_number":45,"context_line":"                            (\u0027Content-Length\u0027, str(len(body)))]"},{"line_number":46,"context_line":"            start_response(\u0027200 OK\u0027, resp_headers)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_0be876e1","line":43,"updated":"2016-01-08 15:44:27.000000000","message":"This needs a comment to say why it\u0027s needed.","commit_id":"12c26f956cb1734097a5d878bbf3e82ebba73bef"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"7005b9b92f737f94c8bc33e675477d72633401f7","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def _application(self):"},{"line_number":41,"context_line":"        \"\"\"A base wsgi application that returns a simple response.\"\"\""},{"line_number":42,"context_line":"        def app(environ, start_response):"},{"line_number":43,"context_line":"            body \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":44,"context_line":"            resp_headers \u003d [(\u0027Content-Type\u0027, \u0027text/html; charset\u003dutf8\u0027),"},{"line_number":45,"context_line":"                            (\u0027Content-Length\u0027, str(len(body)))]"},{"line_number":46,"context_line":"            start_response(\u0027200 OK\u0027, resp_headers)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_6b38123e","line":43,"in_reply_to":"fa69d971_0be876e1","updated":"2016-01-08 15:46:33.000000000","message":"I will do it now","commit_id":"12c26f956cb1734097a5d878bbf3e82ebba73bef"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"65656d664cd6755d720786f2a5033ce050f6d680","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def _application(self):"},{"line_number":41,"context_line":"        \"\"\"A base wsgi application that returns a simple response.\"\"\""},{"line_number":42,"context_line":"        def app(environ, start_response):"},{"line_number":43,"context_line":"            body \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":44,"context_line":"            resp_headers \u003d [(\u0027Content-Type\u0027, \u0027text/html; charset\u003dutf8\u0027),"},{"line_number":45,"context_line":"                            (\u0027Content-Length\u0027, str(len(body)))]"},{"line_number":46,"context_line":"            start_response(\u0027200 OK\u0027, resp_headers)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_0b5f1642","line":43,"in_reply_to":"fa69d971_6b38123e","updated":"2016-01-08 15:51:00.000000000","message":"reference https://www.python.org/dev/peps/pep-3333/#unicode-issues","commit_id":"12c26f956cb1734097a5d878bbf3e82ebba73bef"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f97e0bf7b3e77b1d28099ade7eaba49a8b09aae2","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def setUp(self):"},{"line_number":193,"context_line":"        super(AuthContextMiddlewareTest, self).setUp()"},{"line_number":194,"context_line":"        self.client_issuer \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":195,"context_line":"        self.untrusted_client_issuer \u003d uuid.uuid4().hex"},{"line_number":196,"context_line":"        self.trusted_issuer \u003d self.client_issuer"},{"line_number":197,"context_line":"        self.config_fixture.config(group\u003d\u0027tokenless_auth\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_2be3fa06","line":194,"updated":"2016-01-08 15:44:27.000000000","message":"This needs a comment to say why it\u0027s needed.","commit_id":"12c26f956cb1734097a5d878bbf3e82ebba73bef"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"fd1b495d5dad17a3e35df06c2ce2530dfd248a95","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"\"\"A base wsgi application that returns a simple response.\"\"\""},{"line_number":42,"context_line":"        def app(environ, start_response):"},{"line_number":43,"context_line":"            # body needs to be encoded because you can\u0027t iterate"},{"line_number":44,"context_line":"            # byte objects in Python3"},{"line_number":45,"context_line":"            body \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":46,"context_line":"            resp_headers \u003d [(\u0027Content-Type\u0027, \u0027text/html; charset\u003dutf8\u0027),"},{"line_number":47,"context_line":"                            (\u0027Content-Length\u0027, str(len(body)))]"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_84a2134a","line":44,"updated":"2016-01-08 16:37:59.000000000","message":"This comment doesn\u0027t make any sense. the result of uuid.uuid4().hex.encode(\u0027utf-8\u0027) is bytes:\n\n \u003e\u003e\u003e uuid.uuid4().hex.encode(\u0027utf-8\u0027)\n b\u0027784010e6ca7a43db9d5b7fa1d125dc8f\u0027\n\nIs not be able to iterate a good thing?\n\nAlso, I can iterate over a byte string.","commit_id":"81239c09d538a59c87457cb549649966a3cea842"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"51aca05d296ca86b980dd55be98e7625481db6c9","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"\"\"A base wsgi application that returns a simple response.\"\"\""},{"line_number":42,"context_line":"        def app(environ, start_response):"},{"line_number":43,"context_line":"            # body needs to be encoded because you can\u0027t iterate"},{"line_number":44,"context_line":"            # byte objects in Python3"},{"line_number":45,"context_line":"            body \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":46,"context_line":"            resp_headers \u003d [(\u0027Content-Type\u0027, \u0027text/html; charset\u003dutf8\u0027),"},{"line_number":47,"context_line":"                            (\u0027Content-Length\u0027, str(len(body)))]"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa69d971_9f1b3d80","line":44,"in_reply_to":"fa69d971_84a2134a","updated":"2016-01-08 18:00:56.000000000","message":"yes you are right, i was reading their error wrong. \n\nIterator \u003clist_iterator object at 0x7fb1953482b0\u003e returned a non-\u003cclass \u0027bytes\u0027\u003e ...","commit_id":"81239c09d538a59c87457cb549649966a3cea842"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"5e13a97d57c0014240571a7024873840c4a2264e","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def _application(self):"},{"line_number":41,"context_line":"        \"\"\"A base wsgi application that returns a simple response.\"\"\""},{"line_number":42,"context_line":"        def app(environ, start_response):"},{"line_number":43,"context_line":"            # webtest requires the body of the response to be bytes"},{"line_number":44,"context_line":"            # rather than a str in Python3"},{"line_number":45,"context_line":"            body \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":46,"context_line":"            resp_headers \u003d [(\u0027Content-Type\u0027, \u0027text/html; charset\u003dutf8\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_c26c789e","line":43,"updated":"2016-01-08 18:08:07.000000000","message":"i think this is just a part of the WSGI spec and not a webtest thing.","commit_id":"7c06a1005cb08b145050444698d263894b9eca52"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"2f989805afd53a3f73e4dc049e5076a34dfac664","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def _application(self):"},{"line_number":41,"context_line":"        \"\"\"A base wsgi application that returns a simple response.\"\"\""},{"line_number":42,"context_line":"        def app(environ, start_response):"},{"line_number":43,"context_line":"            # webtest requires the body of the response to be bytes"},{"line_number":44,"context_line":"            # rather than a str in Python3"},{"line_number":45,"context_line":"            body \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":46,"context_line":"            resp_headers \u003d [(\u0027Content-Type\u0027, \u0027text/html; charset\u003dutf8\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_cbb49336","line":43,"in_reply_to":"fa69d971_6538363e","updated":"2016-01-08 22:45:21.000000000","message":"Haha thanks brant, it makes sense why you are linking that doc.","commit_id":"7c06a1005cb08b145050444698d263894b9eca52"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1d9174b0e330fb83e9bb2fa1bdbad2e9e1f0ca05","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def _application(self):"},{"line_number":41,"context_line":"        \"\"\"A base wsgi application that returns a simple response.\"\"\""},{"line_number":42,"context_line":"        def app(environ, start_response):"},{"line_number":43,"context_line":"            # webtest requires the body of the response to be bytes"},{"line_number":44,"context_line":"            # rather than a str in Python3"},{"line_number":45,"context_line":"            body \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":46,"context_line":"            resp_headers \u003d [(\u0027Content-Type\u0027, \u0027text/html; charset\u003dutf8\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_6538363e","line":43,"in_reply_to":"fa69d971_c26c789e","updated":"2016-01-08 18:36:44.000000000","message":"yes, it\u0027s the wsgi spec that requires binary_type for the body, reference reference https://www.python.org/dev/peps/pep-3333/#unicode-issues","commit_id":"7c06a1005cb08b145050444698d263894b9eca52"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"5e13a97d57c0014240571a7024873840c4a2264e","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def setUp(self):"},{"line_number":195,"context_line":"        super(AuthContextMiddlewareTest, self).setUp()"},{"line_number":196,"context_line":"        # client_issuer needs to be encoded because you can\u0027t hash"},{"line_number":197,"context_line":"        # unicode objects in Python3"},{"line_number":198,"context_line":"        self.client_issuer \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":199,"context_line":"        self.untrusted_client_issuer \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_82d3e037","line":196,"updated":"2016-01-08 18:08:07.000000000","message":"this should mention hashlib instead of just hashing because as written it sounds like you can\u0027t use text for a dictionary key","commit_id":"7c06a1005cb08b145050444698d263894b9eca52"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"2f989805afd53a3f73e4dc049e5076a34dfac664","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def setUp(self):"},{"line_number":195,"context_line":"        super(AuthContextMiddlewareTest, self).setUp()"},{"line_number":196,"context_line":"        # client_issuer needs to be encoded because you can\u0027t hash"},{"line_number":197,"context_line":"        # unicode objects in Python3"},{"line_number":198,"context_line":"        self.client_issuer \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":199,"context_line":"        self.untrusted_client_issuer \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_56cdaab5","line":196,"in_reply_to":"fa69d971_6586f6dc","updated":"2016-01-08 22:45:21.000000000","message":"haha it took me all day to find out that trused_issuer needs to be binary too.  It is saved into the config and is pulled out of the config in tokenless_auth.py _build_idp_id() where it is hashed.","commit_id":"7c06a1005cb08b145050444698d263894b9eca52"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1d9174b0e330fb83e9bb2fa1bdbad2e9e1f0ca05","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def setUp(self):"},{"line_number":195,"context_line":"        super(AuthContextMiddlewareTest, self).setUp()"},{"line_number":196,"context_line":"        # client_issuer needs to be encoded because you can\u0027t hash"},{"line_number":197,"context_line":"        # unicode objects in Python3"},{"line_number":198,"context_line":"        self.client_issuer \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":199,"context_line":"        self.untrusted_client_issuer \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa69d971_6586f6dc","line":196,"in_reply_to":"fa69d971_82d3e037","updated":"2016-01-08 18:36:44.000000000","message":"if this is only needed at line 206 then do the conversion at line 206. No need to make trusted_issuer and the config setting also binary when it should be text.","commit_id":"7c06a1005cb08b145050444698d263894b9eca52"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"10fd191d4d110cf78c612e11ca04bcc85e10d897","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"\"\"A base wsgi application that returns a simple response.\"\"\""},{"line_number":42,"context_line":"        def app(environ, start_response):"},{"line_number":43,"context_line":"            # WSGI requires the body of the response to be bytes"},{"line_number":44,"context_line":"            # rather than a str in Python3"},{"line_number":45,"context_line":"            body \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":46,"context_line":"            resp_headers \u003d [(\u0027Content-Type\u0027, \u0027text/html; charset\u003dutf8\u0027),"},{"line_number":47,"context_line":"                            (\u0027Content-Length\u0027, str(len(body)))]"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_b7d65def","line":44,"updated":"2016-01-08 22:53:29.000000000","message":"suggest change the text to say that the response needs to be six.binary_type. That\u0027s correct for both Python 2 \u0026 3.","commit_id":"a110831a88d63fccc808da17c0b559ec12d0605d"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"03f7799351e09586e229b03e7526c1b602afd950","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"\"\"A base wsgi application that returns a simple response.\"\"\""},{"line_number":42,"context_line":"        def app(environ, start_response):"},{"line_number":43,"context_line":"            # WSGI requires the body of the response to be bytes"},{"line_number":44,"context_line":"            # rather than a str in Python3"},{"line_number":45,"context_line":"            body \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":46,"context_line":"            resp_headers \u003d [(\u0027Content-Type\u0027, \u0027text/html; charset\u003dutf8\u0027),"},{"line_number":47,"context_line":"                            (\u0027Content-Length\u0027, str(len(body)))]"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_17440972","line":44,"in_reply_to":"fa69d971_b7d65def","updated":"2016-01-08 23:02:47.000000000","message":"Done","commit_id":"a110831a88d63fccc808da17c0b559ec12d0605d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"10fd191d4d110cf78c612e11ca04bcc85e10d897","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    def setUp(self):"},{"line_number":195,"context_line":"        super(AuthContextMiddlewareTest, self).setUp()"},{"line_number":196,"context_line":"        # client_issuer and trusted_issuer both are encoded because"},{"line_number":197,"context_line":"        # you can\u0027t hash unicode objects with hashlib."},{"line_number":198,"context_line":"        self.client_issuer \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":199,"context_line":"        self.untrusted_client_issuer \u003d uuid.uuid4().hex"},{"line_number":200,"context_line":"        self.trusted_issuer \u003d self.client_issuer"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_d7267115","line":197,"updated":"2016-01-08 22:53:29.000000000","message":"\" It is saved into the config and is pulled out of the config in tokenless_auth.py _build_idp_id()  where it is hashed.\" -- when keystone starts the config option isn\u0027t going to be set to a binary string, it\u0027ll be set to a text string. So the config option in the test here should be set to a text string and then converted to binary in _build_idp_id().","commit_id":"a110831a88d63fccc808da17c0b559ec12d0605d"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"03f7799351e09586e229b03e7526c1b602afd950","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    def setUp(self):"},{"line_number":195,"context_line":"        super(AuthContextMiddlewareTest, self).setUp()"},{"line_number":196,"context_line":"        # client_issuer and trusted_issuer both are encoded because"},{"line_number":197,"context_line":"        # you can\u0027t hash unicode objects with hashlib."},{"line_number":198,"context_line":"        self.client_issuer \u003d uuid.uuid4().hex.encode(\u0027utf-8\u0027)"},{"line_number":199,"context_line":"        self.untrusted_client_issuer \u003d uuid.uuid4().hex"},{"line_number":200,"context_line":"        self.trusted_issuer \u003d self.client_issuer"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa69d971_574a8184","line":197,"in_reply_to":"fa69d971_d7267115","updated":"2016-01-08 23:02:47.000000000","message":"Okay i will change it there.","commit_id":"a110831a88d63fccc808da17c0b559ec12d0605d"}],"tox.ini":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"b2a83689030893a1eff04d972daaf877469551f9","unresolved":false,"context_lines":[{"line_number":26,"context_line":"      keystone/tests/unit/backend/domain_config/core.py \\"},{"line_number":27,"context_line":"      keystone/tests/unit/backend/domain_config/test_sql.py \\"},{"line_number":28,"context_line":"      keystone/tests/unit/backend/role/test_sql.py \\"},{"line_number":29,"context_line":"      keystone/tests/unit/core.py \\"},{"line_number":30,"context_line":"      keystone/tests/unit/tests/test_core.py \\"},{"line_number":31,"context_line":"      keystone/tests/unit/tests/test_utils.py \\"},{"line_number":32,"context_line":"      keystone/tests/unit/catalog/ \\"}],"source_content_type":"text/x-properties","patch_set":1,"id":"1a7b0d38_4fb1bb8e","line":29,"range":{"start_line":29,"start_character":21,"end_line":29,"end_character":25},"updated":"2015-12-24 14:14:42.000000000","message":"Is there any need to add this file to this list? this list is for testcases on py34, i think core.py is not the module that hold testcases.\n\nand the change you made in core.py doesn\u0027t make any difference for adding this file into this list or not. I can run py34 against successfully without the change in core.py","commit_id":"27c617032171290c9872474cf1fb5b74a2ec5bb1"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"a22291eb89fba9dfaf9c30c1d10541071f8da71b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"      keystone/tests/unit/backend/domain_config/core.py \\"},{"line_number":27,"context_line":"      keystone/tests/unit/backend/domain_config/test_sql.py \\"},{"line_number":28,"context_line":"      keystone/tests/unit/backend/role/test_sql.py \\"},{"line_number":29,"context_line":"      keystone/tests/unit/core.py \\"},{"line_number":30,"context_line":"      keystone/tests/unit/tests/test_core.py \\"},{"line_number":31,"context_line":"      keystone/tests/unit/tests/test_utils.py \\"},{"line_number":32,"context_line":"      keystone/tests/unit/catalog/ \\"}],"source_content_type":"text/x-properties","patch_set":1,"id":"1a7b0d38_9eacb236","line":29,"range":{"start_line":29,"start_character":21,"end_line":29,"end_character":25},"in_reply_to":"1a7b0d38_4fb1bb8e","updated":"2015-12-24 15:13:21.000000000","message":"keystone/tests/unit/backend/core_sql.py also does not hold testcases but its in the list, them I have another keystone/tests/unit/backend/domain_config/core.py in the list so I have added it because it holds the BaseTestCase class.","commit_id":"27c617032171290c9872474cf1fb5b74a2ec5bb1"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"15f443b9fbb776ef9e40978bfd99b17086a8428d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"      keystone/tests/unit/backend/domain_config/core.py \\"},{"line_number":27,"context_line":"      keystone/tests/unit/backend/domain_config/test_sql.py \\"},{"line_number":28,"context_line":"      keystone/tests/unit/backend/role/test_sql.py \\"},{"line_number":29,"context_line":"      keystone/tests/unit/core.py \\"},{"line_number":30,"context_line":"      keystone/tests/unit/tests/test_core.py \\"},{"line_number":31,"context_line":"      keystone/tests/unit/tests/test_utils.py \\"},{"line_number":32,"context_line":"      keystone/tests/unit/catalog/ \\"}],"source_content_type":"text/x-properties","patch_set":1,"id":"fa69d971_257729a1","line":29,"in_reply_to":"1a7b0d38_9eacb236","updated":"2016-01-06 21:50:50.000000000","message":"This file does not need to be listed here because there are no test cases in it.\n\nSimilarly, just because the tests import from keystone.common.config doesn\u0027t mean keystone/common/config.py should appear here.","commit_id":"27c617032171290c9872474cf1fb5b74a2ec5bb1"},{"author":{"_account_id":10485,"name":"Ankit Agrawal","email":"ankitagrawal8188@gmail.com","username":"ankitagrawal"},"change_message_id":"28e0f9f6813147166f1bac160eec0fa0d96745a2","unresolved":false,"context_lines":[{"line_number":26,"context_line":"      keystone/tests/unit/backend/domain_config/core.py \\"},{"line_number":27,"context_line":"      keystone/tests/unit/backend/domain_config/test_sql.py \\"},{"line_number":28,"context_line":"      keystone/tests/unit/backend/role/test_sql.py \\"},{"line_number":29,"context_line":"      keystone/tests/unit/core.py \\"},{"line_number":30,"context_line":"      keystone/tests/unit/tests/test_core.py \\"},{"line_number":31,"context_line":"      keystone/tests/unit/tests/test_utils.py \\"},{"line_number":32,"context_line":"      keystone/tests/unit/catalog/ \\"}],"source_content_type":"text/x-properties","patch_set":1,"id":"fa69d971_d6a03744","line":29,"in_reply_to":"fa69d971_257729a1","updated":"2016-01-07 07:06:58.000000000","message":"Done","commit_id":"27c617032171290c9872474cf1fb5b74a2ec5bb1"}]}
