)]}'
{"novaclient/tests/unit/test_client.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"8712b5b8292690d166af0ddcd5dbd5071f846718","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                                 user\u003d\u0027user\u0027,"},{"line_number":55,"context_line":"                                 password\u003d\u0027password\u0027,"},{"line_number":56,"context_line":"                                 tenant_name\u003d\u0027project\u0027,"},{"line_number":57,"context_line":"                                 auth_url\u003d\u0027http://www.blah.com\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_client_with_timeout(self):"},{"line_number":60,"context_line":"        instance \u003d novaclient.client.HTTPClient(user\u003d\u0027user\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_875a444f","line":57,"updated":"2015-10-29 15:57:36.000000000","message":"These tests have no asserts.  While I understand you\u0027re trying to ensure that the instantiation doesn\u0027t raise any exceptions, I\u0027d like to see assertions that the values were assigned properly.\n\nAdditionally, test_client_positional() is a duplicate of test_client_kwargs(); from the name of the function, I infer that you\u0027re actually trying to ensure that if these arguments are passed as positional parameters, things work as intended.  You need to remove the \"xxxx\u003d\" part of the parameters to convert this into positional syntax.","commit_id":"88556c03e84476c6220b1eb9186ae9c4dc051a12"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"63593ea338a00ef228728da5a007765f4cc8fce6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                                 user\u003d\u0027user\u0027,"},{"line_number":55,"context_line":"                                 password\u003d\u0027password\u0027,"},{"line_number":56,"context_line":"                                 tenant_name\u003d\u0027project\u0027,"},{"line_number":57,"context_line":"                                 auth_url\u003d\u0027http://www.blah.com\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_client_with_timeout(self):"},{"line_number":60,"context_line":"        instance \u003d novaclient.client.HTTPClient(user\u003d\u0027user\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_36c03fe0","line":57,"in_reply_to":"1a26ad4f_02086290","updated":"2015-10-29 16:40:09.000000000","message":"Not just a bad choice of words—test_client_kwargs() is precisely identical to test_client_positional().","commit_id":"88556c03e84476c6220b1eb9186ae9c4dc051a12"},{"author":{"_account_id":10697,"name":"Thiago Paiva Brito","email":"thiagop@lsd.ufcg.edu.br","username":"thiagop","inactive":true},"change_message_id":"0d256da2473f05e7e9ecfc8d0ee90ebafbf0509b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                                 user\u003d\u0027user\u0027,"},{"line_number":55,"context_line":"                                 password\u003d\u0027password\u0027,"},{"line_number":56,"context_line":"                                 tenant_name\u003d\u0027project\u0027,"},{"line_number":57,"context_line":"                                 auth_url\u003d\u0027http://www.blah.com\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_client_with_timeout(self):"},{"line_number":60,"context_line":"        instance \u003d novaclient.client.HTTPClient(user\u003d\u0027user\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_02086290","line":57,"in_reply_to":"1a26ad4f_875a444f","updated":"2015-10-29 16:07:46.000000000","message":"You\u0027re right about \u0027positional\u0027. Bad choice of words. This is indeed \"named parameters\".","commit_id":"88556c03e84476c6220b1eb9186ae9c4dc051a12"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"75b67841c1baca21fd0d5cc461d7c9371dcd4dbe","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            \u0027project_id\u0027: \u0027aaa-bbb-ccc\u0027,"},{"line_number":48,"context_line":"            \u0027auth_url\u0027: \u0027http://www.blah.com\u0027"},{"line_number":49,"context_line":"        }"},{"line_number":50,"context_line":"        client \u003d novaclient.client.Client(2, **kwargs)"},{"line_number":51,"context_line":"        self.assertEqual(client.client.user, \"user\")"},{"line_number":52,"context_line":"        self.assertEqual(client.client.password, \"password\")"},{"line_number":53,"context_line":"        self.assertEqual(client.client.projectid, \"aaa-bbb-ccc\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_cff5dccb","line":50,"updated":"2016-02-02 16:31:30.000000000","message":"So, why not:\n\n    client \u003d novaclient.client.Client(2, username\u003d\u0027user\u0027,\n                                      password\u003d\u0027password\u0027,\n                                      project_id\u003d\u0027aaa-bbb-ccc\u0027,\n                                      auth_url\u003d\u0027http://www.blah.com\u0027)\n\n(femtonit)","commit_id":"2a2c84d77404b1769a71ae9e9b5b08a65277e08f"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e0f818b17e9ddd87f619fb8c282f10f153a41fc5","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class ClientTest(utils.TestCase):"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_client_kwargs(self):"},{"line_number":45,"context_line":"        kwargs \u003d {"},{"line_number":46,"context_line":"            \u0027username\u0027: \u0027user\u0027,"},{"line_number":47,"context_line":"            \u0027password\u0027: \u0027password\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_ec3a7633","line":44,"updated":"2016-08-25 18:41:27.000000000","message":"How does this test differ from, oh, test_client_with_timeout() below it?  (Aside, obviously, from the \"timeout\" parameter and the verification of that functionality.)  What I would be expecting from this change is a test that passing both password and api_key won\u0027t result in a TypeError.","commit_id":"2fda9afc80a1753962c79261a5890423c9925751"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"91931752c4bb592e06b22aa41cca90eea7344455","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class ClientTest(utils.TestCase):"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def test_client_kwargs(self):"},{"line_number":45,"context_line":"        kwargs \u003d {"},{"line_number":46,"context_line":"            \u0027username\u0027: \u0027user\u0027,"},{"line_number":47,"context_line":"            \u0027password\u0027: \u0027password\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa7ab95a_cd49bcd2","line":44,"in_reply_to":"1ac06dbe_ec3a7633","updated":"2016-08-26 08:42:37.000000000","message":"Fully agree, fixed and checked it.","commit_id":"2fda9afc80a1753962c79261a5890423c9925751"}],"novaclient/v2/client.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"75b67841c1baca21fd0d5cc461d7c9371dcd4dbe","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        # tenant name) and tenant_id is a UUID (what the Nova API"},{"line_number":121,"context_line":"        # often refers to as a project_id or tenant_id)."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        password \u003d api_key or kwargs.pop(\u0027password\u0027, None)"},{"line_number":124,"context_line":"        self.projectid \u003d project_id"},{"line_number":125,"context_line":"        self.tenant_id \u003d tenant_id"},{"line_number":126,"context_line":"        self.user_id \u003d user_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_4fa56cb3","line":123,"updated":"2016-02-02 16:31:30.000000000","message":"I have to point out that, if both the api_key and the password parameters are passed, the password parameter will not be popped from the keyword arguments.  Is that intended behavior?","commit_id":"2a2c84d77404b1769a71ae9e9b5b08a65277e08f"},{"author":{"_account_id":10697,"name":"Thiago Paiva Brito","email":"thiagop@lsd.ufcg.edu.br","username":"thiagop","inactive":true},"change_message_id":"46a7ee92a50c75b25c742efb70c70d45316b8cbb","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        # tenant name) and tenant_id is a UUID (what the Nova API"},{"line_number":121,"context_line":"        # often refers to as a project_id or tenant_id)."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        password \u003d api_key or kwargs.pop(\u0027password\u0027, None)"},{"line_number":124,"context_line":"        self.projectid \u003d project_id"},{"line_number":125,"context_line":"        self.tenant_id \u003d tenant_id"},{"line_number":126,"context_line":"        self.user_id \u003d user_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_453b0b9d","line":123,"in_reply_to":"7a5de9d1_4fa56cb3","updated":"2016-02-02 17:04:27.000000000","message":"You\u0027re right. Fixing now.","commit_id":"2a2c84d77404b1769a71ae9e9b5b08a65277e08f"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"f88dec2b75a5917045e16d9398db22e9ed2d1a9f","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        # tenant name) and tenant_id is a UUID (what the Nova API"},{"line_number":121,"context_line":"        # often refers to as a project_id or tenant_id)."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        password \u003d kwargs.pop(\u0027password\u0027, None)"},{"line_number":124,"context_line":"        self.projectid \u003d project_id"},{"line_number":125,"context_line":"        self.tenant_id \u003d tenant_id"},{"line_number":126,"context_line":"        self.user_id \u003d user_id"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_708e0429","line":123,"updated":"2016-02-02 18:36:09.000000000","message":"So, this will work, but the more I think about it, the more I think this should be done slightly differently.  What I suggest is:\n\n1. Add \u0027password\u0027 as an explicit keyword argument (with default None) to the __init__() method (just before \u0027**kwargs\u0027 for compatibility).\n2. Add documentation for \u0027password\u0027 in the docstring, and mark the \u0027api_key\u0027 parameter as deprecated.\n3. At this line, use the following code:\n\n    if api_key:\n        import warnings\n\n        warnings.warn(\u0027The \"api_key\" parameter is deprecated; \u0027\n                      \u0027use the \"password\" parameter instead.\u0027,\n                      DeprecationWarning)\n        password \u003d api_key\n\n(A nice thing might be to move the \"import warnings\" to the top of the module, eliminating it from line 106 as well as avoiding the need to import it here.)","commit_id":"88d5c4a6a029ec756b57b26f17172dbdd1bc2f95"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dfa42b7bc37dff7737dcf6aa34433362c63b5b82","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        # tenant name) and tenant_id is a UUID (what the Nova API"},{"line_number":122,"context_line":"        # often refers to as a project_id or tenant_id)."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        password \u003d kwargs.pop(\u0027password\u0027, None)"},{"line_number":125,"context_line":"        self.projectid \u003d project_id"},{"line_number":126,"context_line":"        self.tenant_id \u003d tenant_id"},{"line_number":127,"context_line":"        self.user_id \u003d user_id"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_06810efb","line":124,"range":{"start_line":124,"start_character":42,"end_line":124,"end_character":46},"updated":"2016-03-10 21:48:03.000000000","message":"Why not just default to api_key?","commit_id":"fd8045d5dfbf10284b894644c3c9f10b270225d5"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"098c8e7bcc21ebd2b23f2e5d4bf48ca56a35de27","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        # tenant name) and tenant_id is a UUID (what the Nova API"},{"line_number":122,"context_line":"        # often refers to as a project_id or tenant_id)."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        password \u003d kwargs.pop(\u0027password\u0027, None)"},{"line_number":125,"context_line":"        self.projectid \u003d project_id"},{"line_number":126,"context_line":"        self.tenant_id \u003d tenant_id"},{"line_number":127,"context_line":"        self.user_id \u003d user_id"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_9837c5af","line":124,"range":{"start_line":124,"start_character":42,"end_line":124,"end_character":46},"in_reply_to":"5aef4532_06810efb","updated":"2016-08-25 15:37:42.000000000","message":"Done","commit_id":"fd8045d5dfbf10284b894644c3c9f10b270225d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dfa42b7bc37dff7737dcf6aa34433362c63b5b82","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        self.client \u003d client._construct_http_client("},{"line_number":182,"context_line":"            username\u003dusername,"},{"line_number":183,"context_line":"            password\u003dapi_key or password,"},{"line_number":184,"context_line":"            user_id\u003duser_id,"},{"line_number":185,"context_line":"            project_id\u003dproject_id,"},{"line_number":186,"context_line":"            tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_86751e33","line":183,"updated":"2016-03-10 21:48:03.000000000","message":"If you default to api_key above, then you don\u0027t need this.","commit_id":"fd8045d5dfbf10284b894644c3c9f10b270225d5"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"098c8e7bcc21ebd2b23f2e5d4bf48ca56a35de27","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        self.client \u003d client._construct_http_client("},{"line_number":182,"context_line":"            username\u003dusername,"},{"line_number":183,"context_line":"            password\u003dapi_key or password,"},{"line_number":184,"context_line":"            user_id\u003duser_id,"},{"line_number":185,"context_line":"            project_id\u003dproject_id,"},{"line_number":186,"context_line":"            tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ac06dbe_d8413d0d","line":183,"in_reply_to":"5aef4532_86751e33","updated":"2016-08-25 15:37:42.000000000","message":"Done","commit_id":"fd8045d5dfbf10284b894644c3c9f10b270225d5"}]}
