)]}'
{"doc/source/api.rst":[{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"55f3ab6c57381965dc405a6040715d6f6f691f21","unresolved":false,"context_lines":[{"line_number":44,"context_line":"to the Session::"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    \u003e\u003e\u003e sess \u003d session.Session("},{"line_number":47,"context_line":"    ...     auth\u003dauth, app_name\u0027nodepool\u0027, app_version\u00271.2.3\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"If you are making a library that consumes novaclient but is not an end-user"},{"line_number":50,"context_line":"application, you can append a (name, version) tuple to the session\u0027s"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7ffa3b31_4bea5cac","line":47,"range":{"start_line":47,"start_character":23,"end_line":47,"end_character":61},"updated":"2017-04-18 13:31:04.000000000","message":"app_name\u003d\u0027nodepool\u0027, app_version\u003d\u00271.2.3\u0027","commit_id":"92665dbcd823a28ae14a5ee5ba911513697d17be"}],"novaclient/client.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"9eefbdd974ff4812bb15c56049095ea0cb863fd8","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def request(self, url, method, **kwargs):"},{"line_number":60,"context_line":"        kwargs.setdefault(\u0027headers\u0027, kwargs.get(\u0027headers\u0027, {}))"},{"line_number":61,"context_line":"        kwargs.seddefault(\u0027client_name\u0027, \u0027python-novaclient\u0027)"},{"line_number":62,"context_line":"        kwargs.seddefault(\u0027client_version\u0027, novaclient.__version__)"},{"line_number":63,"context_line":"        api_versions.update_headers(kwargs[\"headers\"], self.api_version)"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ff52f3f_49abbed5","line":61,"range":{"start_line":61,"start_character":15,"end_line":61,"end_character":25},"updated":"2017-04-13 15:48:28.000000000","message":"\"seddefault\"?  I suspect you mean \"setdefault\" :)","commit_id":"ecd4290f35dfd515dd20eecbb3e2cb6dbc934c76"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"c09fc58ffd7223188e2f83bd1367358ef9ea6093","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def request(self, url, method, **kwargs):"},{"line_number":60,"context_line":"        kwargs.setdefault(\u0027headers\u0027, kwargs.get(\u0027headers\u0027, {}))"},{"line_number":61,"context_line":"        kwargs.seddefault(\u0027client_name\u0027, \u0027python-novaclient\u0027)"},{"line_number":62,"context_line":"        kwargs.seddefault(\u0027client_version\u0027, novaclient.__version__)"},{"line_number":63,"context_line":"        api_versions.update_headers(kwargs[\"headers\"], self.api_version)"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7ffa3b31_f94fdbba","line":61,"in_reply_to":"9ff52f3f_09e37635","updated":"2017-04-17 20:59:50.000000000","message":"reading is hard","commit_id":"ecd4290f35dfd515dd20eecbb3e2cb6dbc934c76"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"c09fc58ffd7223188e2f83bd1367358ef9ea6093","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def request(self, url, method, **kwargs):"},{"line_number":60,"context_line":"        kwargs.setdefault(\u0027headers\u0027, kwargs.get(\u0027headers\u0027, {}))"},{"line_number":61,"context_line":"        kwargs.seddefault(\u0027client_name\u0027, \u0027python-novaclient\u0027)"},{"line_number":62,"context_line":"        kwargs.seddefault(\u0027client_version\u0027, novaclient.__version__)"},{"line_number":63,"context_line":"        api_versions.update_headers(kwargs[\"headers\"], self.api_version)"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7ffa3b31_3956635e","line":61,"range":{"start_line":61,"start_character":15,"end_line":61,"end_character":25},"in_reply_to":"9ff52f3f_49abbed5","updated":"2017-04-17 20:59:50.000000000","message":"Done","commit_id":"ecd4290f35dfd515dd20eecbb3e2cb6dbc934c76"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"05bc14bf7f50767b72b4884c4bce8b17607bd490","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def request(self, url, method, **kwargs):"},{"line_number":60,"context_line":"        kwargs.setdefault(\u0027headers\u0027, kwargs.get(\u0027headers\u0027, {}))"},{"line_number":61,"context_line":"        kwargs.seddefault(\u0027client_name\u0027, \u0027python-novaclient\u0027)"},{"line_number":62,"context_line":"        kwargs.seddefault(\u0027client_version\u0027, novaclient.__version__)"},{"line_number":63,"context_line":"        api_versions.update_headers(kwargs[\"headers\"], self.api_version)"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ff52f3f_09e37635","line":61,"in_reply_to":"9ff52f3f_49abbed5","updated":"2017-04-13 15:49:48.000000000","message":"oh noes, not only cannot I not type, I can\u0027t read :(","commit_id":"ecd4290f35dfd515dd20eecbb3e2cb6dbc934c76"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"e009202b50fe148554761af56bf641142b6620e0","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.times \u003d []"},{"line_number":54,"context_line":"        self.timings \u003d kwargs.pop(\u0027timings\u0027, False)"},{"line_number":55,"context_line":"        self.api_version \u003d kwargs.pop(\u0027api_version\u0027, None)"},{"line_number":56,"context_line":"        self.api_version \u003d self.api_version or api_versions.APIVersion()"},{"line_number":57,"context_line":"        super(SessionClient, self).__init__(*args, **kwargs)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def request(self, url, method, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ffa3b31_13f6d0fa","line":56,"range":{"start_line":56,"start_character":27,"end_line":56,"end_character":31},"updated":"2017-04-18 12:13:26.000000000","message":"Preferred ways to do this are:\n\n1. Set it on the class like [1] \n2. Pass it via super.__init__ \n\nthe adapter will handle passing it into the right places on request [2]. \n\nAlso don\u0027t use setdefault here. Force it to\n\n    kwargs[\u0027client_name\u0027] \u003d \u0027python-novaclient\u0027 \n    kwargs[\u0027client_version\u0027] \u003d novaclient.__version__\n\n(or in __init__(client_name\u003d) to raise an error if it was provided by the user)\n\nThere\u0027s no reason a user should be telling novaclient what version it is or overriding client_name.\n\n[1] https://github.com/openstack/keystoneauth/blob/master/keystoneauth1/adapter.py#L65\n[2] https://github.com/openstack/keystoneauth/blob/master/keystoneauth1/adapter.py#L136-L139","commit_id":"b2c6c7622f8449cd386c46862171da4022952069"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"0588222ef9e1e56e424ba7be870bf09b85be663b","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.times \u003d []"},{"line_number":54,"context_line":"        self.timings \u003d kwargs.pop(\u0027timings\u0027, False)"},{"line_number":55,"context_line":"        self.api_version \u003d kwargs.pop(\u0027api_version\u0027, None)"},{"line_number":56,"context_line":"        self.api_version \u003d self.api_version or api_versions.APIVersion()"},{"line_number":57,"context_line":"        super(SessionClient, self).__init__(*args, **kwargs)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def request(self, url, method, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ffa3b31_f3f804c5","line":56,"in_reply_to":"7ffa3b31_13f6d0fa","updated":"2017-04-18 12:16:41.000000000","message":"What if someone is building their own client, using python-novaclient as the base? In that case, don\u0027t we want to allow them to set the user agent?","commit_id":"b2c6c7622f8449cd386c46862171da4022952069"}]}
