)]}'
{"README.rst":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"13fcac5d60da02f246d4b5eda3843c792ae919fa","unresolved":false,"context_lines":[{"line_number":100,"context_line":"  The service type of the application, used to identify microversion headers."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"versions_list"},{"line_number":103,"context_line":"  An order list of legitimate microversion (as strings) for the application."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"For example::"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_68fc98b4","line":103,"range":{"start_line":103,"start_character":5,"end_line":103,"end_character":10},"updated":"2018-03-15 14:13:42.000000000","message":"ordered\n\nQuestion: does it have to be ordered? Can we ensure ordering here? It\u0027s simple enough: \n\n  versions_list.sort(key\u003dlambda val:[int(x) for x in val.split(\".\")])","commit_id":"de87eb069fcb152b095e9264b4b0c90a1b79b73b"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3e9f88a32c456942cc8f25882b305ca7f4957e77","unresolved":false,"context_lines":[{"line_number":100,"context_line":"  The service type of the application, used to identify microversion headers."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"versions_list"},{"line_number":103,"context_line":"  An order list of legitimate microversion (as strings) for the application."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"For example::"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_c86b64ee","line":103,"range":{"start_line":103,"start_character":5,"end_line":103,"end_character":10},"in_reply_to":"df7087c5_68fc98b4","updated":"2018-03-15 14:24:41.000000000","message":"Because I assumed people will have it sorted already and why bother sorting it again in that case? It\u0027s back to that same housekeeping issue and encouraging a particular style of housekeeping.\n\nI can go either way.","commit_id":"de87eb069fcb152b095e9264b4b0c90a1b79b73b"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"13fcac5d60da02f246d4b5eda3843c792ae919fa","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def app():"},{"line_number":108,"context_line":"        app \u003d middleware.MicroversionMiddleware("},{"line_number":109,"context_line":"            MyWSGIApp(), \u0027cats\u0027, [\u00271.0\u0027, \u00271,1\u0027, \u00271.2\u0027])"},{"line_number":110,"context_line":"        return app"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_c8f12403","line":109,"range":{"start_line":109,"start_character":43,"end_line":109,"end_character":44},"updated":"2018-03-15 14:13:42.000000000","message":"s/,/.","commit_id":"de87eb069fcb152b095e9264b4b0c90a1b79b73b"}],"microversion_parse/middleware.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"13fcac5d60da02f246d4b5eda3843c792ae919fa","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            microversion \u003d microversion_parse.extract_version("},{"line_number":58,"context_line":"                req.headers, self.service_type, self.versions)"},{"line_number":59,"context_line":"        # TODO(cdent): These error response are not formatted according to"},{"line_number":60,"context_line":"        # api-wg guidelines."},{"line_number":61,"context_line":"        except ValueError as exc:"},{"line_number":62,"context_line":"            raise webob.exc.HTTPNotAcceptable("},{"line_number":63,"context_line":"                (\u0027Invalid microversion: %(error)s\u0027) % {\u0027error\u0027: exc})"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_08bf1cd1","line":60,"range":{"start_line":60,"start_character":10,"end_line":60,"end_character":16},"updated":"2018-03-15 14:13:42.000000000","message":"API-SIG :)","commit_id":"de87eb069fcb152b095e9264b4b0c90a1b79b73b"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3e9f88a32c456942cc8f25882b305ca7f4957e77","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            microversion \u003d microversion_parse.extract_version("},{"line_number":58,"context_line":"                req.headers, self.service_type, self.versions)"},{"line_number":59,"context_line":"        # TODO(cdent): These error response are not formatted according to"},{"line_number":60,"context_line":"        # api-wg guidelines."},{"line_number":61,"context_line":"        except ValueError as exc:"},{"line_number":62,"context_line":"            raise webob.exc.HTTPNotAcceptable("},{"line_number":63,"context_line":"                (\u0027Invalid microversion: %(error)s\u0027) % {\u0027error\u0027: exc})"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_88624c09","line":60,"range":{"start_line":60,"start_character":10,"end_line":60,"end_character":16},"in_reply_to":"df7087c5_08bf1cd1","updated":"2018-03-15 14:24:41.000000000","message":"I\u0027m a grape in the path. I still think of the guidelines as the product of the working group within the sig, and in any case a paste from old stuff, but yeah, will change.","commit_id":"de87eb069fcb152b095e9264b4b0c90a1b79b73b"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"4d063badf7415afb3c2a67d69a43cdaf4fc34578","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        :param application: The application hosting the service."},{"line_number":44,"context_line":"        :param service_type: The service type (entry in keystone catalog)"},{"line_number":45,"context_line":"                             of the application."},{"line_number":46,"context_line":"        :param versions: An ordered list of legitimate versions for the"},{"line_number":47,"context_line":"                         application."},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":"        self.application \u003d application"},{"line_number":50,"context_line":"        self.service_type \u003d service_type"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_63099293","line":47,"range":{"start_line":46,"start_character":25,"end_line":47,"end_character":37},"updated":"2018-03-21 14:15:55.000000000","message":"At some point, it may be nice to enhance this to accept a range. IOW, if a service has 100 microversions, it would be nicer to accept something like \u00272.[1-100]\u0027.","commit_id":"b5359fcd805258bd7e31fd6fe610190c1149c665"}],"microversion_parse/tests/gabbits/simple.yaml":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"4d063badf7415afb3c2a67d69a43cdaf4fc34578","unresolved":false,"context_lines":[{"line_number":12,"context_line":"  GET: /bad"},{"line_number":13,"context_line":"  status: 404"},{"line_number":14,"context_line":"  response_strings:"},{"line_number":15,"context_line":"      - not found"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"df7087c5_a3eecab1","line":15,"updated":"2018-03-21 14:15:55.000000000","message":"I wish that these were \"naughty\" and \"nice\".","commit_id":"b5359fcd805258bd7e31fd6fe610190c1149c665"}]}
