)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"681d650df13c128978eb45d6d0b7a906c6e760da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3aaa91ec_62e22531","updated":"2016-06-28 20:10:23.000000000","message":"In this message, above the Change-Id please add:\n\n  Closes-Bug: 1596818","commit_id":"245c62192f48227a8d2fa955879c7ab51d09e657"}],"doc/source/command-objects/project.rst":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2328a5d52bd597dbb21ab23401f08e18198e4138","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":".. option:: --sort \u003ckey\u003e[:\u003cdirection\u003e]"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    Sort output by selected keys and directions(asc or desc) (default: asc),"},{"line_number":120,"context_line":"    multiple keys and directions can be specified separated by comma"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"project set"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3aaa91ec_82be31fd","line":119,"range":{"start_line":119,"start_character":47,"end_line":119,"end_character":48},"updated":"2016-06-28 20:12:48.000000000","message":"add a space after \"directions\"","commit_id":"245c62192f48227a8d2fa955879c7ab51d09e657"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b6d88a10c1fefbc10bfcc86885e500d37451c5bf","unresolved":false,"context_lines":[{"line_number":117,"context_line":".. option:: --sort \u003ckey\u003e[:\u003cdirection\u003e]"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    Sort output by selected keys and directions (asc or desc) (default: asc),"},{"line_number":120,"context_line":"    multiple keys and directions can be specified separated by comma"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"project set"},{"line_number":123,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dada55a8_99335513","line":120,"range":{"start_line":120,"start_character":50,"end_line":120,"end_character":68},"updated":"2016-07-25 11:03:00.000000000","message":"If so, please write it like this:\n\n--sort \u003ckey\u003e[:\u003cdirection\u003e,\u003ckey\u003e:\u003cdirection\u003e,...]\n\nPlease refer to other docs for example.","commit_id":"6bfa5bf8a43041d56ffff517b5e43ea7e6d3c364"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"61f9aad457d80a3afb947eeda868ac72313cec9d","unresolved":false,"context_lines":[{"line_number":117,"context_line":".. option:: --sort \u003ckey\u003e[:\u003cdirection\u003e]"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    Sort output by selected keys and directions (asc or desc) (default: asc),"},{"line_number":120,"context_line":"    multiple keys and directions can be specified separated by comma"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"project set"},{"line_number":123,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dada55a8_3b174f46","line":120,"range":{"start_line":120,"start_character":50,"end_line":120,"end_character":68},"in_reply_to":"dada55a8_99335513","updated":"2016-07-27 07:18:33.000000000","message":"according to the help message, the format looks that:\n\n    --sort \u003ckey\u003e[[:direction],\u003ckey\u003e[:direction],...]","commit_id":"6bfa5bf8a43041d56ffff517b5e43ea7e6d3c364"}],"openstackclient/identity/v2_0/project.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2328a5d52bd597dbb21ab23401f08e18198e4138","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        parser.add_argument("},{"line_number":140,"context_line":"            \u0027--sort\u0027,"},{"line_number":141,"context_line":"            metavar\u003d\"\u003ckey\u003e[:\u003cdirection\u003e]\","},{"line_number":142,"context_line":"            help\u003d_(\"Sort output by selected keys and directions(asc or desc) \""},{"line_number":143,"context_line":"                   \"(default: asc), multiple keys and directions can be \""},{"line_number":144,"context_line":"                   \"specified separated by comma\"),"},{"line_number":145,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_c23679b3","line":142,"range":{"start_line":142,"start_character":63,"end_line":142,"end_character":64},"updated":"2016-06-28 20:12:48.000000000","message":"same","commit_id":"245c62192f48227a8d2fa955879c7ab51d09e657"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2328a5d52bd597dbb21ab23401f08e18198e4138","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        if parsed_args.sort:"},{"line_number":155,"context_line":"            data \u003d utils.sort_items(data, parsed_args.sort)"},{"line_number":156,"context_line":"        else:"},{"line_number":157,"context_line":"            data \u003d utils.sort_items(data, \u0027name\u0027)"},{"line_number":158,"context_line":"        return (columns,"},{"line_number":159,"context_line":"                (utils.get_item_properties("},{"line_number":160,"context_line":"                    s, columns,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_020fe1e1","line":157,"range":{"start_line":157,"start_character":42,"end_line":157,"end_character":48},"updated":"2016-06-28 20:12:48.000000000","message":"this alone won\u0027t work, it should be \u0027name[:asc]\u0027\n\nalso, you can assign a default value to --sort, see line 136","commit_id":"245c62192f48227a8d2fa955879c7ab51d09e657"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"61f9aad457d80a3afb947eeda868ac72313cec9d","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        )"},{"line_number":139,"context_line":"        parser.add_argument("},{"line_number":140,"context_line":"            \u0027--sort\u0027,"},{"line_number":141,"context_line":"            default\u003d\u0027name:asc\u0027,"},{"line_number":142,"context_line":"            metavar\u003d\"\u003ckey\u003e[:\u003cdirection\u003e]\","},{"line_number":143,"context_line":"            help\u003d_(\"Sort output by selected keys and directions (asc or desc) \""},{"line_number":144,"context_line":"                   \"(default: asc), multiple keys and directions can be \""}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_9bbe3b63","line":141,"updated":"2016-07-27 07:18:33.000000000","message":"ditto","commit_id":"6bfa5bf8a43041d56ffff517b5e43ea7e6d3c364"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"636b7449e14b40e359b18afd03dd39fbdbddfc19","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                            metavar\u003d\u0027\u003ckey\u003e[:\u003cdirection\u003e]\u0027,"},{"line_number":141,"context_line":"                            help\u003d_(\u0027Sort output by selected keys and \u0027"},{"line_number":142,"context_line":"                                   \u0027directions (asc or desc) (default: asc),\u0027"},{"line_number":143,"context_line":"                                   \u0027multiple keys and directions can be\u0027"},{"line_number":144,"context_line":"                                   \u0027specified as --sort \u003ckey\u003e[:\u003cdirection\u003e]\u0027),)"},{"line_number":145,"context_line":"        return parser"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a89bdaa_9d9a49c4","line":144,"range":{"start_line":143,"start_character":35,"end_line":144,"end_character":78},"updated":"2016-09-11 04:09:21.000000000","message":"nit: Please change it to something like this:\n\nrepeat this option to specify multiple keys and directions.","commit_id":"944bc3db52d8c277d2b5bc30de27a58de0b84192"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2057b8810be89d35ffd4029372b5b0fe2bca6418","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        )"},{"line_number":139,"context_line":"        parser.add_argument(\u0027--sort\u0027, metavar\u003d\u0027\u003ckey\u003e[:\u003cdirection\u003e]\u0027,"},{"line_number":140,"context_line":"                            help\u003d_(\u0027Sort output by selected keys and \u0027"},{"line_number":141,"context_line":"                                   \u0027directions (asc or desc) (default: asc),\u0027"},{"line_number":142,"context_line":"                                   \u0027repeat this option to specify multiple\u0027"},{"line_number":143,"context_line":"                                   \u0027keys and directions.\u0027),)"},{"line_number":144,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a89bdaa_07122c57","line":141,"range":{"start_line":141,"start_character":75,"end_line":141,"end_character":77},"updated":"2016-09-12 19:37:40.000000000","message":"need a space here","commit_id":"9871eedb4074216595e4086160174b0190e408b5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2057b8810be89d35ffd4029372b5b0fe2bca6418","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        parser.add_argument(\u0027--sort\u0027, metavar\u003d\u0027\u003ckey\u003e[:\u003cdirection\u003e]\u0027,"},{"line_number":140,"context_line":"                            help\u003d_(\u0027Sort output by selected keys and \u0027"},{"line_number":141,"context_line":"                                   \u0027directions (asc or desc) (default: asc),\u0027"},{"line_number":142,"context_line":"                                   \u0027repeat this option to specify multiple\u0027"},{"line_number":143,"context_line":"                                   \u0027keys and directions.\u0027),)"},{"line_number":144,"context_line":"        return parser"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a89bdaa_271bb074","line":142,"range":{"start_line":142,"start_character":73,"end_line":142,"end_character":75},"updated":"2016-09-12 19:37:40.000000000","message":"need a space here","commit_id":"9871eedb4074216595e4086160174b0190e408b5"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"ba877324a4ce27c29baa41d282dc88e52c199dba","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                            help\u003d_(\u0027Sort output by selected keys and \u0027"},{"line_number":141,"context_line":"                                   \u0027directions (asc or desc) (default: asc), \u0027"},{"line_number":142,"context_line":"                                   \u0027repeat this option to specify multiple \u0027"},{"line_number":143,"context_line":"                                   \u0027keys and directions.\u0027),)"},{"line_number":144,"context_line":"        return parser"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_baf3ac09","line":143,"updated":"2016-09-14 14:54:34.000000000","message":"Please format this like the surrounding code.  Packed and short-wrapped lines like this are hard to read.","commit_id":"85d38963aac037def6022c7ee27a88af37224b3e"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"9bca18272cab7f9caa60f7d93502a2c8870e285f","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                            help\u003d_(\u0027Sort output by selected keys and \u0027"},{"line_number":141,"context_line":"                                   \u0027directions (asc or desc) (default: asc), \u0027"},{"line_number":142,"context_line":"                                   \u0027repeat this option to specify multiple \u0027"},{"line_number":143,"context_line":"                                   \u0027keys and directions.\u0027),)"},{"line_number":144,"context_line":"        return parser"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a30ddce_8f9bde71","line":143,"in_reply_to":"7a8ec9b2_baf3ac09","updated":"2017-03-08 16:45:50.000000000","message":"Done","commit_id":"85d38963aac037def6022c7ee27a88af37224b3e"}],"openstackclient/identity/v3/project.py":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"61f9aad457d80a3afb947eeda868ac72313cec9d","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        )"},{"line_number":183,"context_line":"        parser.add_argument("},{"line_number":184,"context_line":"            \u0027--sort\u0027,"},{"line_number":185,"context_line":"            default\u003d\u0027name:asc\u0027,"},{"line_number":186,"context_line":"            metavar\u003d\"\u003ckey\u003e[:\u003cdirection\u003e]\","},{"line_number":187,"context_line":"            help\u003d_(\"Sort output by selected keys and directions (asc or desc) \""},{"line_number":188,"context_line":"                   \"(default: asc), multiple keys and directions can be \""}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_9b60fba6","line":185,"updated":"2016-07-27 07:18:33.000000000","message":"The default value should be removed, sorting make output slow, so if user don\u0027t specify \"--sort\" option, the behavior should be disable. if a lot of projects exist in deployment, user should list project with \"--sort name\", but I don\u0027t think sorting should be a default behavior.\n\n    if parsed_args.sort:\n        data \u003d utils.sort_items(data, parsed_args.sort)","commit_id":"6bfa5bf8a43041d56ffff517b5e43ea7e6d3c364"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b6d88a10c1fefbc10bfcc86885e500d37451c5bf","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        parser.add_argument("},{"line_number":184,"context_line":"            \u0027--sort\u0027,"},{"line_number":185,"context_line":"            default\u003d\u0027name:asc\u0027,"},{"line_number":186,"context_line":"            metavar\u003d\"\u003ckey\u003e[:\u003cdirection\u003e]\","},{"line_number":187,"context_line":"            help\u003d_(\"Sort output by selected keys and directions (asc or desc) \""},{"line_number":188,"context_line":"                   \"(default: asc), multiple keys and directions can be \""},{"line_number":189,"context_line":"                   \"specified separated by comma\"),"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_94283c87","line":186,"range":{"start_line":186,"start_character":21,"end_line":186,"end_character":40},"updated":"2016-07-25 11:03:00.000000000","message":"Here too, \u003ckey\u003e[:\u003cdirection\u003e,\u003ckey\u003e:\u003cdirection\u003e,...].","commit_id":"6bfa5bf8a43041d56ffff517b5e43ea7e6d3c364"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"61f9aad457d80a3afb947eeda868ac72313cec9d","unresolved":false,"context_lines":[{"line_number":216,"context_line":"            kwargs[\u0027user\u0027] \u003d user_id"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        data \u003d identity_client.projects.list(**kwargs)"},{"line_number":219,"context_line":"        data \u003d utils.sort_items(data, parsed_args.sort)"},{"line_number":220,"context_line":"        return (columns,"},{"line_number":221,"context_line":"                (utils.get_item_properties("},{"line_number":222,"context_line":"                    s, columns,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_5b196321","line":219,"updated":"2016-07-27 07:18:33.000000000","message":"do sorting only when \"--sort\" is specified.","commit_id":"6bfa5bf8a43041d56ffff517b5e43ea7e6d3c364"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"636b7449e14b40e359b18afd03dd39fbdbddfc19","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                            metavar\u003d\u0027\u003ckey\u003e[:\u003cdirection\u003e]\u0027,"},{"line_number":185,"context_line":"                            help\u003d_(\u0027Sort output by selected keys and \u0027"},{"line_number":186,"context_line":"                                   \u0027directions (asc or desc) (default: asc),\u0027"},{"line_number":187,"context_line":"                                   \u0027multiple keys and directions can be\u0027"},{"line_number":188,"context_line":"                                   \u0027specified as --sort \u003ckey\u003e[:\u003cdirection\u003e]\u0027),)"},{"line_number":189,"context_line":"        return parser"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a89bdaa_1daf19e4","line":188,"range":{"start_line":187,"start_character":35,"end_line":188,"end_character":77},"updated":"2016-09-11 04:09:21.000000000","message":"dotto","commit_id":"944bc3db52d8c277d2b5bc30de27a58de0b84192"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2057b8810be89d35ffd4029372b5b0fe2bca6418","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        )"},{"line_number":183,"context_line":"        parser.add_argument(\u0027--sort\u0027, metavar\u003d\u0027\u003ckey\u003e[:\u003cdirection\u003e]\u0027,"},{"line_number":184,"context_line":"                            help\u003d_(\u0027Sort output by selected keys and \u0027"},{"line_number":185,"context_line":"                                   \u0027directions (asc or desc) (default: asc),\u0027"},{"line_number":186,"context_line":"                                   \u0027repeat this option to specify multiple\u0027"},{"line_number":187,"context_line":"                                   \u0027keys and directions.\u0027),)"},{"line_number":188,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a89bdaa_a71d0064","line":185,"range":{"start_line":185,"start_character":75,"end_line":185,"end_character":77},"updated":"2016-09-12 19:37:40.000000000","message":"need a space here","commit_id":"9871eedb4074216595e4086160174b0190e408b5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2057b8810be89d35ffd4029372b5b0fe2bca6418","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        parser.add_argument(\u0027--sort\u0027, metavar\u003d\u0027\u003ckey\u003e[:\u003cdirection\u003e]\u0027,"},{"line_number":184,"context_line":"                            help\u003d_(\u0027Sort output by selected keys and \u0027"},{"line_number":185,"context_line":"                                   \u0027directions (asc or desc) (default: asc),\u0027"},{"line_number":186,"context_line":"                                   \u0027repeat this option to specify multiple\u0027"},{"line_number":187,"context_line":"                                   \u0027keys and directions.\u0027),)"},{"line_number":188,"context_line":"        return parser"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a89bdaa_c72204a3","line":186,"range":{"start_line":186,"start_character":73,"end_line":186,"end_character":75},"updated":"2016-09-12 19:37:40.000000000","message":"need a space here","commit_id":"9871eedb4074216595e4086160174b0190e408b5"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"ba877324a4ce27c29baa41d282dc88e52c199dba","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                            help\u003d_(\u0027Sort output by selected keys and \u0027"},{"line_number":185,"context_line":"                                   \u0027directions (asc or desc) (default: asc), \u0027"},{"line_number":186,"context_line":"                                   \u0027repeat this option to specify multiple \u0027"},{"line_number":187,"context_line":"                                   \u0027keys and directions.\u0027),)"},{"line_number":188,"context_line":"        return parser"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a8ec9b2_7ad04454","line":187,"updated":"2016-09-14 14:54:34.000000000","message":"Please format this like the surrounding code.  Packed and short-wrapped lines like this are hard to read.","commit_id":"85d38963aac037def6022c7ee27a88af37224b3e"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"9bca18272cab7f9caa60f7d93502a2c8870e285f","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                            help\u003d_(\u0027Sort output by selected keys and \u0027"},{"line_number":185,"context_line":"                                   \u0027directions (asc or desc) (default: asc), \u0027"},{"line_number":186,"context_line":"                                   \u0027repeat this option to specify multiple \u0027"},{"line_number":187,"context_line":"                                   \u0027keys and directions.\u0027),)"},{"line_number":188,"context_line":"        return parser"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a30ddce_8b03d10c","line":187,"in_reply_to":"7a8ec9b2_7ad04454","updated":"2017-03-08 16:45:50.000000000","message":"Done","commit_id":"85d38963aac037def6022c7ee27a88af37224b3e"}],"openstackclient/tests/identity/v3/test_project.py":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"61f9aad457d80a3afb947eeda868ac72313cec9d","unresolved":false,"context_lines":[{"line_number":513,"context_line":""},{"line_number":514,"context_line":"    @mock.patch(\u0027osc_lib.utils.sort_items\u0027)"},{"line_number":515,"context_line":"    def test_project_list_sort_option(self, si_mock):"},{"line_number":516,"context_line":"        si_mock.return_value \u003d [copy.deepcopy(self._project)]"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        arglist \u003d [\u0027--sort\u0027, \u0027name:asc\u0027]"},{"line_number":519,"context_line":"        verifylist \u003d [(\u0027sort\u0027, \u0027name:asc\u0027)]"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_3645a642","line":516,"range":{"start_line":516,"start_character":46,"end_line":516,"end_character":60},"updated":"2016-07-27 07:18:33.000000000","message":"self._project? I only see self.project in the class, and if you create several fake projects to check the sort of result, I think that make sense.","commit_id":"6bfa5bf8a43041d56ffff517b5e43ea7e6d3c364"}]}
