)]}'
{"keystonemiddleware/opts.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"584b8c64f17e089c70f69f63517aa4861c959c47","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    config files."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    This function is also discoverable via the entry point"},{"line_number":41,"context_line":"    \u0027keystoneclient.middleware.auth_token\u0027 under the \u0027oslo.config.opts\u0027"},{"line_number":42,"context_line":"    namespace."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    The purpose of this is to allow tools like the Oslo sample config file"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_1259475a","line":41,"updated":"2014-07-02 14:51:48.000000000","message":"change to keystonemiddleware","commit_id":"f9b9be7e5ac03041ac05d040d539c19c1d5a008f"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"7971829e5ad6e42c6fa61f86c0ed762d8856ba0f","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    config files."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    This function is also discoverable via the entry point"},{"line_number":41,"context_line":"    \u0027keystoneclient.middleware.auth_token\u0027 under the \u0027oslo.config.opts\u0027"},{"line_number":42,"context_line":"    namespace."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    The purpose of this is to allow tools like the Oslo sample config file"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_6d7d48e7","line":41,"in_reply_to":"baada198_1259475a","updated":"2014-07-02 15:38:28.000000000","message":"Done","commit_id":"f9b9be7e5ac03041ac05d040d539c19c1d5a008f"}],"keystonemiddleware/tests/test_opts.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"584b8c64f17e089c70f69f63517aa4861c959c47","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class OptsTestCase(utils.TestCase):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def _test_list_auth_token_opts(self, result):"},{"line_number":24,"context_line":"        self.assertEqual(1, len(result))"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        groups \u003d [g for (g, _l) in result]"},{"line_number":27,"context_line":"        self.assertIn(\u0027keystone_authtoken\u0027, groups)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_8d0a9c1f","line":24,"updated":"2014-07-02 14:51:48.000000000","message":"use testtools.matchers.HasLength , this should give us a better error message if it fails.","commit_id":"f9b9be7e5ac03041ac05d040d539c19c1d5a008f"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"7971829e5ad6e42c6fa61f86c0ed762d8856ba0f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class OptsTestCase(utils.TestCase):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def _test_list_auth_token_opts(self, result):"},{"line_number":24,"context_line":"        self.assertEqual(1, len(result))"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        groups \u003d [g for (g, _l) in result]"},{"line_number":27,"context_line":"        self.assertIn(\u0027keystone_authtoken\u0027, groups)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_c3dd4372","line":24,"in_reply_to":"baada198_8d0a9c1f","updated":"2014-07-02 15:38:28.000000000","message":"Done","commit_id":"f9b9be7e5ac03041ac05d040d539c19c1d5a008f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"584b8c64f17e089c70f69f63517aa4861c959c47","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        self.assertEqual(1, len(result))"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        groups \u003d [g for (g, _l) in result]"},{"line_number":27,"context_line":"        self.assertIn(\u0027keystone_authtoken\u0027, groups)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"        expected_opt_names \u003d ["},{"line_number":30,"context_line":"            \u0027auth_admin_prefix\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_ad5be02c","line":27,"updated":"2014-07-02 14:51:48.000000000","message":"This assertion seems inadequate... aren\u0027t they all supposed to be \u0027keystone_authtoken\"?","commit_id":"f9b9be7e5ac03041ac05d040d539c19c1d5a008f"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"7971829e5ad6e42c6fa61f86c0ed762d8856ba0f","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        self.assertEqual(1, len(result))"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        groups \u003d [g for (g, _l) in result]"},{"line_number":27,"context_line":"        self.assertIn(\u0027keystone_authtoken\u0027, groups)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"        expected_opt_names \u003d ["},{"line_number":30,"context_line":"            \u0027auth_admin_prefix\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_c34b8329","line":27,"in_reply_to":"baada198_ad5be02c","updated":"2014-07-02 15:38:28.000000000","message":"Yes, https://github.com/openstack/keystonemiddleware/blob/master/keystonemiddleware/auth_token.py#L336","commit_id":"f9b9be7e5ac03041ac05d040d539c19c1d5a008f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"584b8c64f17e089c70f69f63517aa4861c959c47","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            \u0027hash_algorithms\u0027"},{"line_number":59,"context_line":"        ]"},{"line_number":60,"context_line":"        opt_names \u003d [o.name for (g, l) in result for o in l]"},{"line_number":61,"context_line":"        self.assertEqual(len(expected_opt_names), len(opt_names))"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        for opt in opt_names:"},{"line_number":64,"context_line":"            self.assertIn(opt, expected_opt_names)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_d20c2f45","line":61,"updated":"2014-07-02 14:51:48.000000000","message":"use testtools.matchers.HasLength , this should give us a better error message if it fails.","commit_id":"f9b9be7e5ac03041ac05d040d539c19c1d5a008f"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"7971829e5ad6e42c6fa61f86c0ed762d8856ba0f","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            \u0027hash_algorithms\u0027"},{"line_number":59,"context_line":"        ]"},{"line_number":60,"context_line":"        opt_names \u003d [o.name for (g, l) in result for o in l]"},{"line_number":61,"context_line":"        self.assertEqual(len(expected_opt_names), len(opt_names))"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        for opt in opt_names:"},{"line_number":64,"context_line":"            self.assertIn(opt, expected_opt_names)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_e346c720","line":61,"in_reply_to":"baada198_d20c2f45","updated":"2014-07-02 15:38:28.000000000","message":"Done","commit_id":"f9b9be7e5ac03041ac05d040d539c19c1d5a008f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"584b8c64f17e089c70f69f63517aa4861c959c47","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    def test_entry_point(self):"},{"line_number":70,"context_line":"        result \u003d None"},{"line_number":71,"context_line":"        for ep in pkg_resources.iter_entry_points(\u0027oslo.config.opts\u0027):"},{"line_number":72,"context_line":"            if ep.name \u003d\u003d \"keystonemiddleware.auth_token\":"},{"line_number":73,"context_line":"                list_fn \u003d ep.load()"},{"line_number":74,"context_line":"                result \u003d list_fn()"},{"line_number":75,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_cdaf34e2","line":72,"updated":"2014-07-02 14:51:48.000000000","message":"use \u0027 consistently for strings.","commit_id":"f9b9be7e5ac03041ac05d040d539c19c1d5a008f"},{"author":{"_account_id":6549,"name":"Zhi Yan Liu","email":"lzy.dev@gmail.com","username":"lzy-dev"},"change_message_id":"7971829e5ad6e42c6fa61f86c0ed762d8856ba0f","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    def test_entry_point(self):"},{"line_number":70,"context_line":"        result \u003d None"},{"line_number":71,"context_line":"        for ep in pkg_resources.iter_entry_points(\u0027oslo.config.opts\u0027):"},{"line_number":72,"context_line":"            if ep.name \u003d\u003d \"keystonemiddleware.auth_token\":"},{"line_number":73,"context_line":"                list_fn \u003d ep.load()"},{"line_number":74,"context_line":"                result \u003d list_fn()"},{"line_number":75,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_c8cac24e","line":72,"in_reply_to":"baada198_cdaf34e2","updated":"2014-07-02 15:38:28.000000000","message":"Done","commit_id":"f9b9be7e5ac03041ac05d040d539c19c1d5a008f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e2734abdda52841767d8952445e4d822e2d02b43","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        self.assertThat(result, matchers.HasLength(1))"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        groups \u003d [g for (g, _l) in result]"},{"line_number":28,"context_line":"        self.assertIn(\u0027keystone_authtoken\u0027, groups)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        expected_opt_names \u003d ["},{"line_number":31,"context_line":"            \u0027auth_admin_prefix\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_462bf72f","line":28,"updated":"2014-07-02 20:04:40.000000000","message":"this should assert that every group is \u0027keystone_authtoken\u0027\n\n        for group in (g for (g, _l) in result):\n            self.assertEqual(\u0027keystone_authtoken\u0027, group)","commit_id":"d63c49601e7f6bd2beae07042c887777461c0cfa"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a20523f9881d110b1b47c0868e035aebd8c4f4cf","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        self.assertThat(result, matchers.HasLength(1))"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"        groups \u003d [g for (g, _l) in result]"},{"line_number":28,"context_line":"        self.assertIn(\u0027keystone_authtoken\u0027, groups)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        expected_opt_names \u003d ["},{"line_number":31,"context_line":"            \u0027auth_admin_prefix\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_39f8e4e4","line":28,"updated":"2014-07-02 20:17:23.000000000","message":"this should assert that every group is \u0027keystone_authtoken\u0027\n\n for group in (g for (g, _l) in result):\n     self.assertEqual(\u0027keystone_authtoken\u0027, group)","commit_id":"adf9b042780c5c3807650027c40fee79595a94f5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"74d95c00cfe1d022b7146ad17e545726ea4fe226","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def test_entry_point(self):"},{"line_number":71,"context_line":"        result \u003d None"},{"line_number":72,"context_line":"        for ep in pkg_resources.iter_entry_points(\u0027oslo.config.opts\u0027):"},{"line_number":73,"context_line":"            if ep.name \u003d\u003d \u0027keystonemiddleware.auth_token\u0027:"},{"line_number":74,"context_line":"                list_fn \u003d ep.load()"},{"line_number":75,"context_line":"                result \u003d list_fn()"},{"line_number":76,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_37f8e4e4","line":73,"updated":"2014-07-03 02:23:41.000000000","message":"stevedore can do this better and we have a dep on it already.","commit_id":"62093bfc8512e76291c137161e05e492a4ab9e09"}]}
