)]}'
{"placement/lib.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c1a2efe9d27f79ab3f77d031ce4184eff14d00ca","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        }"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        :param req: webob.Request object"},{"line_number":151,"context_line":"        :return: A list of RequestGroup instances."},{"line_number":152,"context_line":"        :raises `webob.exc.HTTPBadRequest` if any value is malformed, or if a"},{"line_number":153,"context_line":"                trait list is given without corresponding resources."},{"line_number":154,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_bac6ec67","line":151,"range":{"start_line":151,"start_character":19,"end_line":151,"end_character":23},"updated":"2018-09-13 23:11:10.000000000","message":"dict, keyed by suffix","commit_id":"b6bf7e01f42672e31feb97877b9f0b38e7d7c231"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c1a2efe9d27f79ab3f77d031ce4184eff14d00ca","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        want_version \u003d req.environ[microversion.MICROVERSION_ENVIRON]"},{"line_number":156,"context_line":"        # Control whether we handle forbidden traits."},{"line_number":157,"context_line":"        allow_forbidden \u003d want_version.matches((1, 22))"},{"line_number":158,"context_line":"        # Temporary dict of the form: { suffix: RequestGroup }"},{"line_number":159,"context_line":"        by_suffix \u003d {}"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        def get_request_group(suffix):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_dac16850","line":158,"range":{"start_line":158,"start_character":10,"end_line":158,"end_character":19},"updated":"2018-09-13 23:11:10.000000000","message":"not really","commit_id":"b6bf7e01f42672e31feb97877b9f0b38e7d7c231"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"cc4cac75907e9d9982f42b493bb8a6d228bfc1d8","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                  member_of\u003d["},{"line_number":124,"context_line":"                    [9323b2b1-82c9-4e91-bdff-e95e808ef954],"},{"line_number":125,"context_line":"                    [8592a199-7d73-4465-8df6-ab00a6243c82,"},{"line_number":126,"context_line":"                     ddbd9226-d6a6-475e-a85f-0609914dd058],"},{"line_number":127,"context_line":"                  ],"},{"line_number":128,"context_line":"              ),"},{"line_number":129,"context_line":"          \u00271\u0027: RequestGroup("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_3c199922","line":126,"range":{"start_line":126,"start_character":21,"end_line":126,"end_character":57},"updated":"2018-09-26 02:59:20.000000000","message":"Not related to this refactor; where is it come from?","commit_id":"878268b2293e8fda7fd11ae86f56108a78ed5b23"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"41b85b5d74aa4013574f6e1f0d55e83e88238ab5","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                  member_of\u003d["},{"line_number":124,"context_line":"                    [9323b2b1-82c9-4e91-bdff-e95e808ef954],"},{"line_number":125,"context_line":"                    [8592a199-7d73-4465-8df6-ab00a6243c82,"},{"line_number":126,"context_line":"                     ddbd9226-d6a6-475e-a85f-0609914dd058],"},{"line_number":127,"context_line":"                  ],"},{"line_number":128,"context_line":"              ),"},{"line_number":129,"context_line":"          \u00271\u0027: RequestGroup("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_970bdbd3","line":126,"range":{"start_line":126,"start_character":21,"end_line":126,"end_character":57},"in_reply_to":"3f79a3b5_3c199922","updated":"2018-09-26 13:54:16.000000000","message":"Oh, good eye. This came from the granular patch [1] which I\u0027m guessing was in flight at the same time as one of the multiple-member_of patches [2] and was only partly updated. We didn\u0027t notice because it was a docstring and we were several dozen patch sets in :)\n\nI put up a fix at [3].\n\n[1] https://review.openstack.org/#/c/517757/\n[2] https://review.openstack.org/#/c/547990/\n[3] https://review.openstack.org/#/c/605427/","commit_id":"878268b2293e8fda7fd11ae86f56108a78ed5b23"}],"placement/tests/unit/test_util.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"483623367bb46a48f288139e46aff58a81a4b9c8","unresolved":false,"context_lines":[{"line_number":439,"context_line":"    @staticmethod"},{"line_number":440,"context_line":"    def do_parse(qstring, version\u003d(1, 18)):"},{"line_number":441,"context_line":"        \"\"\"Converts a querystring to a MultiDict, mimicking request.GET, and"},{"line_number":442,"context_line":"        runs from_qs_request_groups on it."},{"line_number":443,"context_line":"        \"\"\""},{"line_number":444,"context_line":"        req \u003d webob.Request.blank(\u0027?\u0027 + qstring)"},{"line_number":445,"context_line":"        mv_parsed \u003d microversion_parse.Version(*version)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_3aa89c8a","line":442,"range":{"start_line":442,"start_character":13,"end_line":442,"end_character":35},"updated":"2018-09-13 23:13:35.000000000","message":"dict_from_request ?","commit_id":"b6bf7e01f42672e31feb97877b9f0b38e7d7c231"}]}
