)]}'
{"keystoneauth1/session.py":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"f8426fc9c863543f0cf0a7e35a58797108058325","unresolved":false,"context_lines":[{"line_number":514,"context_line":""},{"line_number":515,"context_line":"            if self.app_name or self.app_version:"},{"line_number":516,"context_line":"                agent.append(\u0027%s/%s\u0027 % (self.app_name or \u0027unknown\u0027,"},{"line_number":517,"context_line":"                                        self.app_version or \u0027unknown\u0027))"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"            for additional in self.additional_user_agent:"},{"line_number":520,"context_line":"                agent.append(\u0027%s/%s\u0027 % additional)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ac06dbe_cb813bc5","line":517,"updated":"2016-08-23 01:14:18.000000000","message":"Looking at the RFC section in your comment as well as section 3.8 of http://www.ietf.org/rfc/rfc2616.txt I don\u0027t see the string \u0027unknown\u0027 as part of the convention, is that a standard? Would it be better to leave the \u0027/%s\u0027 off of the string if self.app_version is empty?","commit_id":"7ce212cbb6e7fdc5c5f685b296a06c114d4818aa"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"5a408b080b1361ca07e8c7f6f847ed2855c14a5a","unresolved":false,"context_lines":[{"line_number":514,"context_line":""},{"line_number":515,"context_line":"            if self.app_name or self.app_version:"},{"line_number":516,"context_line":"                agent.append(\u0027%s/%s\u0027 % (self.app_name or \u0027unknown\u0027,"},{"line_number":517,"context_line":"                                        self.app_version or \u0027unknown\u0027))"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"            for additional in self.additional_user_agent:"},{"line_number":520,"context_line":"                agent.append(\u0027%s/%s\u0027 % additional)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ac06dbe_70ea7475","line":517,"in_reply_to":"1ac06dbe_cb813bc5","updated":"2016-08-23 18:58:30.000000000","message":"No, i think i just stole it from somewhere else. \n\nThe best I can see for a definition of user-agent strings is https://tools.ietf.org/html/rfc7231#section-5.5.3 which seems to suggest dropping the version_info as you say.","commit_id":"7ce212cbb6e7fdc5c5f685b296a06c114d4818aa"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"6aac8d53f9caea624a25f99e57b2ed27c3c11e18","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            # hit the bottom of the frame stack"},{"line_number":135,"context_line":"            break"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    return False"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def _determine_user_agent():"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a89bdaa_08d006c9","line":137,"range":{"start_line":137,"start_character":11,"end_line":137,"end_character":16},"updated":"2016-09-09 00:11:35.000000000","message":"Instead of False why not use empty string? It is not a valid name so it is safe. The any if check will still fail. But this way the code is not flipping return types between a bool and a string.","commit_id":"da0eeb5faf39dede6adfa5667cfa17db423ad54c"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"3f36089d0854f5ff089243da81025fdcb8ca273f","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            # hit the bottom of the frame stack"},{"line_number":135,"context_line":"            break"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    return False"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def _determine_user_agent():"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a95cdbc_481a8e7e","line":137,"range":{"start_line":137,"start_character":11,"end_line":137,"end_character":16},"in_reply_to":"9a89bdaa_08d006c9","updated":"2016-10-06 23:04:59.000000000","message":"Done","commit_id":"da0eeb5faf39dede6adfa5667cfa17db423ad54c"}],"keystoneauth1/tests/unit/test_session.py":[{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"440547b2a3196d18a72e53db1f975f6cfa8ebba5","unresolved":false,"context_lines":[{"line_number":1051,"context_line":"        self.assertEqual(agent + \u0027 \u0027 + client_session.DEFAULT_USER_AGENT,"},{"line_number":1052,"context_line":"                         self.requests_mock.last_request.headers[\u0027User-Agent\u0027])"},{"line_number":1053,"context_line":""},{"line_number":1054,"context_line":"    def test_adapter_user_agent_adapter(self):"},{"line_number":1055,"context_line":"        sess \u003d client_session.Session()"},{"line_number":1056,"context_line":"        adap \u003d adapter.Adapter(client_name\u003d\u0027testclient\u0027,"},{"line_number":1057,"context_line":"                               client_version\u003d\u00274.5.6\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ac06dbe_3c61f3a9","line":1054,"updated":"2016-08-23 19:33:03.000000000","message":"None of the tests show that user_agent trumps app_name or client_name.","commit_id":"7ce212cbb6e7fdc5c5f685b296a06c114d4818aa"}],"releasenotes/notes/user-agent-generation-b069100508c06177.yaml":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a4c6fbb592db31e19ee34965dc88441013501072","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    Allow adding client and service name and version to the session and adapter"},{"line_number":4,"context_line":"    that will generate a userful user_agent string."},{"line_number":5,"context_line":"features:"},{"line_number":6,"context_line":"  - You can specify a service_name and service_version when creating a session."},{"line_number":7,"context_line":"    This information will be encoded into the user agent."},{"line_number":8,"context_line":"  - You can specify a client_name and client_version when creating an adapter."},{"line_number":9,"context_line":"    This will be handled by client libraries and incluced into the user agent."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1ac06dbe_a066de26","line":6,"range":{"start_line":6,"start_character":22,"end_line":6,"end_character":34},"updated":"2016-08-22 04:18:55.000000000","message":"use backticks (``) here and with service_name, or don\u0027t use an underscore at all. same with client name \u0026 version on line 8 and user_agent on line 12","commit_id":"dc6b267010a8323476f00cde39de117bb37ff513"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"6aac8d53f9caea624a25f99e57b2ed27c3c11e18","unresolved":false,"context_lines":[{"line_number":11,"context_line":"  - Libraries like shade that modify the way requests are made can add"},{"line_number":12,"context_line":"    themselves to additional_user_agent and have their version reflected in the"},{"line_number":13,"context_line":"    user agent string."},{"line_number":14,"context_line":"deprecations:"},{"line_number":15,"context_line":"  - We suggest you fill the name and version for the application and client"},{"line_number":16,"context_line":"    instead of specifying a custom ``user_agent``. This will then generate a"},{"line_number":17,"context_line":"    standard user agent string."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"9a89bdaa_2b86a413","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":12},"updated":"2016-09-09 00:11:35.000000000","message":"Should this be more forceful? The goal is to require some form of identifier.","commit_id":"da0eeb5faf39dede6adfa5667cfa17db423ad54c"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"3f36089d0854f5ff089243da81025fdcb8ca273f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"  - Libraries like shade that modify the way requests are made can add"},{"line_number":12,"context_line":"    themselves to additional_user_agent and have their version reflected in the"},{"line_number":13,"context_line":"    user agent string."},{"line_number":14,"context_line":"deprecations:"},{"line_number":15,"context_line":"  - We suggest you fill the name and version for the application and client"},{"line_number":16,"context_line":"    instead of specifying a custom ``user_agent``. This will then generate a"},{"line_number":17,"context_line":"    standard user agent string."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"1a95cdbc_63068d1e","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":12},"in_reply_to":"9a89bdaa_2b86a413","updated":"2016-10-06 23:04:59.000000000","message":"Eventually yes, but i don\u0027t think we can start issuing warnings on the first release an option is available.","commit_id":"da0eeb5faf39dede6adfa5667cfa17db423ad54c"}]}
