)]}'
{"keystoneclient/tests/v2_0/test_extensions.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9bf74f4ca0530b7e87c28872136ffe9a2eae145e","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        extension_list \u003d self.client.extensions.list()"},{"line_number":57,"context_line":"        [self.assertIsInstance(r, extensions.Extension)"},{"line_number":58,"context_line":"         for r in extension_list]"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_64e8f7e2","line":58,"updated":"2014-05-13 14:59:17.000000000","message":"you\u0027re already writing this as two lines, i\u0027d suggest writing it without using a list comprehension\n\nit\u0027d also be nice to make some specific assertions about `r` beyond the type","commit_id":"f294d5613f1b8c306c7e33a6accdc052d19a2f34"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b199f98cd47eca8b2aebe9cd46f5ebf61c7131de","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def setUp(self):"},{"line_number":21,"context_line":"        super(ExtensionTests, self).setUp()"},{"line_number":22,"context_line":"        self.TEST_EXTENSIONS \u003d {"},{"line_number":23,"context_line":"            \u0027extensions\u0027: ["},{"line_number":24,"context_line":"                {"},{"line_number":25,"context_line":"                    \u0027name\u0027: \u0027OpenStack Keystone User CRUD\u0027,"},{"line_number":26,"context_line":"                    \u0027namespace\u0027: \u0027http://docs.openstack.org/\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_3d62a8d8","line":23,"updated":"2014-05-22 15:43:08.000000000","message":"GET /v2.0/extensions the server actually returns\n\n {                                                                                 \n    \"extensions\": {                                                               \n        \"values\": [                                                               \n            {                                                                     \n                \"alias\": \"OS-KSCRUD\",\n                \"description\": \"OpenStack extensions to Keystone v2.0 API enabling User Operations.\",\n                \"links\": [\n                    {\n                        \"href\": \"https://github.com/openstack/identity-api\",\n                        \"rel\": \"describedby\",\n                        \"type\": \"text/html\"\n                    }\n                ],\n                \"name\": \"OpenStack Keystone User CRUD\",\n                \"namespace\": \"http://docs.openstack.org/identity/api/ext/OS-KSCRUD/v1.0\",\n                \"updated\": \"2013-07-07T12:00:0-00:00\"\n            }\n        ]\n    }\n}\n\nSo \u0027extensions\u0027 should be a dict with \u0027values\u0027 as the array.","commit_id":"66371e8e13e6732aba3b3336db59cb185eada597"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a3ed4f647568f8075c66bb3f1bb9ac92f5e2e2b5","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def test_list(self):"},{"line_number":56,"context_line":"        self.stub_url(httpretty.GET, [\u0027extensions\u0027], json\u003dself.TEST_EXTENSIONS)"},{"line_number":57,"context_line":"        for extension in self.client.extensions.list():"},{"line_number":58,"context_line":"            self.assertIsInstance(extension, extensions.Extension)"},{"line_number":59,"context_line":"            self.assertIsNotNone(extension.name)"},{"line_number":60,"context_line":"            self.assertIsNotNone(extension.name)"},{"line_number":61,"context_line":"            self.assertIsNotNone(extension.namespace)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5adbc538_12c19a2e","line":58,"updated":"2014-05-25 03:47:21.000000000","message":"i guess you could assert that length of the returned list is 2?","commit_id":"2ddd2aa2bd3f3a792fdf54ced55c12c4cdc4dac0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a03a0ee651dc8ca3177781665f622a12f2f9fc69","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        for extension in self.client.extensions.list():"},{"line_number":58,"context_line":"            self.assertIsInstance(extension, extensions.Extension)"},{"line_number":59,"context_line":"            self.assertIsNotNone(extension.name)"},{"line_number":60,"context_line":"            self.assertIsNotNone(extension.name)"},{"line_number":61,"context_line":"            self.assertIsNotNone(extension.namespace)"},{"line_number":62,"context_line":"            self.assertIsNotNone(extension.alias)"},{"line_number":63,"context_line":"            self.assertIsNotNone(extension.updated)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_b8d79b4e","line":60,"updated":"2014-05-22 22:29:05.000000000","message":"this was just checked, don\u0027t need to check again.","commit_id":"2ddd2aa2bd3f3a792fdf54ced55c12c4cdc4dac0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a03a0ee651dc8ca3177781665f622a12f2f9fc69","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            self.assertIsNotNone(extension.alias)"},{"line_number":63,"context_line":"            self.assertIsNotNone(extension.updated)"},{"line_number":64,"context_line":"            self.assertIsNotNone(extension.description)"},{"line_number":65,"context_line":"            self.assertIsNotNone(extension.links)"},{"line_number":66,"context_line":"            self.assertIsInstance(list(extension.links), list)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_1837afb1","line":65,"updated":"2014-05-22 22:29:05.000000000","message":"suggest put the attributes in alphabetical order.","commit_id":"2ddd2aa2bd3f3a792fdf54ced55c12c4cdc4dac0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a03a0ee651dc8ca3177781665f622a12f2f9fc69","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.assertIsNotNone(extension.updated)"},{"line_number":64,"context_line":"            self.assertIsNotNone(extension.description)"},{"line_number":65,"context_line":"            self.assertIsNotNone(extension.links)"},{"line_number":66,"context_line":"            self.assertIsInstance(list(extension.links), list)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_58ca17a2","line":66,"updated":"2014-05-22 22:29:05.000000000","message":"the value was just coerced to a list so this isn\u0027t asserting much.","commit_id":"2ddd2aa2bd3f3a792fdf54ced55c12c4cdc4dac0"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"ce3b4546ad0be4f1c370a32adf46044034eebab9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    def test_list(self):"},{"line_number":56,"context_line":"        self.stub_url(httpretty.GET, [\u0027extensions\u0027], json\u003dself.TEST_EXTENSIONS)"},{"line_number":57,"context_line":"        extensions_list \u003d self.client.extensions.list()"},{"line_number":58,"context_line":"        self.assertEqual(2, len(extensions_list))"},{"line_number":59,"context_line":"        for extension in extensions_list:"},{"line_number":60,"context_line":"            self.assertIsInstance(extension, extensions.Extension)"},{"line_number":61,"context_line":"            self.assertIsNotNone(extension.alias)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ae8d1ca_71c47340","line":58,"updated":"2014-05-28 04:28:00.000000000","message":"nit: there\u0027s an assertLength or something similar.","commit_id":"7f8867472f50ee0df8fd4b0526ea13acf599efdd"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"ce3b4546ad0be4f1c370a32adf46044034eebab9","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.assertIsNotNone(extension.links)"},{"line_number":64,"context_line":"            self.assertIsNotNone(extension.name)"},{"line_number":65,"context_line":"            self.assertIsNotNone(extension.namespace)"},{"line_number":66,"context_line":"            self.assertIsNotNone(extension.updated)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ae8d1ca_11b6cfd9","line":66,"updated":"2014-05-28 04:28:00.000000000","message":"nit: kind of cheating to simply use !\u003d None","commit_id":"7f8867472f50ee0df8fd4b0526ea13acf599efdd"}],"keystoneclient/v2_0/extensions.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9bf74f4ca0530b7e87c28872136ffe9a2eae145e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 Canonical Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_e4a247ad","line":1,"updated":"2014-05-13 14:59:17.000000000","message":"remove/update this","commit_id":"f294d5613f1b8c306c7e33a6accdc052d19a2f34"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a3ed4f647568f8075c66bb3f1bb9ac92f5e2e2b5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":4,"id":"5adbc538_f2c34e36","line":1,"updated":"2014-05-25 03:47:21.000000000","message":"all rights reserved to who?","commit_id":"2ddd2aa2bd3f3a792fdf54ced55c12c4cdc4dac0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a03a0ee651dc8ca3177781665f622a12f2f9fc69","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class Extension(base.Resource):"},{"line_number":19,"context_line":"    \"\"\"Represents a Keystone extension.\"\"\""},{"line_number":20,"context_line":"    def __repr__(self):"},{"line_number":21,"context_line":"        return \"\u003cExtension %s\u003e\" % self._info"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_f88a0363","line":19,"updated":"2014-05-22 22:29:05.000000000","message":"change \"Keystone\" to \"Identity API\".","commit_id":"2ddd2aa2bd3f3a792fdf54ced55c12c4cdc4dac0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a03a0ee651dc8ca3177781665f622a12f2f9fc69","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class ExtensionManager(base.ManagerWithFind):"},{"line_number":25,"context_line":"    \"\"\"Manager class for manipulating Keystone extensions.\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    resource_class \u003d Extension"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_d88f0774","line":25,"updated":"2014-05-22 22:29:05.000000000","message":"suggest change \"manipulating\" to \"listing\"\n\nAlso, change \"Keystone\" to \"Identity API\".","commit_id":"2ddd2aa2bd3f3a792fdf54ced55c12c4cdc4dac0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a03a0ee651dc8ca3177781665f622a12f2f9fc69","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    resource_class \u003d Extension"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def list(self):"},{"line_number":30,"context_line":"        \"\"\"List all available endpoints.\"\"\""},{"line_number":31,"context_line":"        return self._list(\u0027/extensions\u0027, \u0027extensions\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_18e96f1a","line":30,"updated":"2014-05-22 22:29:05.000000000","message":"this lists extensions, not endpoints.","commit_id":"2ddd2aa2bd3f3a792fdf54ced55c12c4cdc4dac0"}],"keystoneclient/v2_0/shell.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9bf74f4ca0530b7e87c28872136ffe9a2eae145e","unresolved":false,"context_lines":[{"line_number":538,"context_line":"                     wrap\u003dint(args.wrap))"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"def do_extension_list(kc, args):"},{"line_number":542,"context_line":"    \"\"\"List configured service extensions.\"\"\""},{"line_number":543,"context_line":"    extensions \u003d kc.extensions.list()"},{"line_number":544,"context_line":"    utils.print_list(extensions,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_04f3b373","line":541,"updated":"2014-05-13 14:59:17.000000000","message":"unfortunately this file doesn\u0027t document this (keystone --help does, though), but the CLI is pending deprecation in favor of python-openstackclient, so we\u0027d need a critical use case to introduce new features. i\u0027d suggest removing this addition unless you think you can make the case for adding it.\n\nfor future reference, proposed a docstr: https://review.openstack.org/#/c/93457/","commit_id":"f294d5613f1b8c306c7e33a6accdc052d19a2f34"}]}
