)]}'
{"nova/api/validation/validators.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"01fc94a9032de66b0979ed9e3ef5acefcae71b56","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                                require_authority\u003dTrue)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def noop_func(validator, aP, instance, schema):"},{"line_number":78,"context_line":"    if not validator.is_type(instance, \"object\"):"},{"line_number":79,"context_line":"        return"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_b8111254","line":77,"updated":"2015-08-21 09:02:08.000000000","message":"maybe call this, _soft_validate_additional_properties?","commit_id":"934bf720f2262890e69ce552a9c519baf7f3e20a"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"f51b3f02e9172a303d185d68e86809abaaf117ce","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        return"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    properties \u003d schema.get(\"properties\", {})"},{"line_number":82,"context_line":"    patterns \u003d \"|\".join(schema.get(\"patternProperties\", {}))"},{"line_number":83,"context_line":"    extra_properties \u003d []"},{"line_number":84,"context_line":"    for property in instance:"},{"line_number":85,"context_line":"        if property not in properties:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_9528979b","line":82,"updated":"2015-08-21 08:57:28.000000000","message":"Why do we need generation patterns here? Instead of it we can do like :\n\npatterns \u003d schema.get(\"patternProperties\", {})\n....\nif property in patters:\n    ....","commit_id":"934bf720f2262890e69ce552a9c519baf7f3e20a"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"b13aa591641f64c83a7ae8f2c749ebfc3aee5d45","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        return"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    properties \u003d schema.get(\"properties\", {})"},{"line_number":82,"context_line":"    patterns \u003d \"|\".join(schema.get(\"patternProperties\", {}))"},{"line_number":83,"context_line":"    extra_properties \u003d []"},{"line_number":84,"context_line":"    for property in instance:"},{"line_number":85,"context_line":"        if property not in properties:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_3fb88129","line":82,"in_reply_to":"fa1b9901_5861d6d1","updated":"2015-08-21 11:28:24.000000000","message":"We need joint patterns only for ValidationError message. So my point is: we shouldn\u0027t compose this pattern and then match it using re.","commit_id":"934bf720f2262890e69ce552a9c519baf7f3e20a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"01fc94a9032de66b0979ed9e3ef5acefcae71b56","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        return"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    properties \u003d schema.get(\"properties\", {})"},{"line_number":82,"context_line":"    patterns \u003d \"|\".join(schema.get(\"patternProperties\", {}))"},{"line_number":83,"context_line":"    extra_properties \u003d []"},{"line_number":84,"context_line":"    for property in instance:"},{"line_number":85,"context_line":"        if property not in properties:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_5861d6d1","line":82,"in_reply_to":"fa1b9901_9528979b","updated":"2015-08-21 09:02:08.000000000","message":"Not sure I understand your comment, do the join later, and only when required? Thats probably a good idea. Not sure about the other bits?","commit_id":"934bf720f2262890e69ce552a9c519baf7f3e20a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"01fc94a9032de66b0979ed9e3ef5acefcae71b56","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                    continue"},{"line_number":89,"context_line":"                else:"},{"line_number":90,"context_line":"                    raise exception.ValidationError("},{"line_number":91,"context_line":"                            \"%r does not match %r\" % (instance, patterns))"},{"line_number":92,"context_line":"            extra_properties.append(property)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    for p in extra_properties:"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_7552a336","line":91,"updated":"2015-08-21 09:02:08.000000000","message":"This is totally correct, but we should mention this in the commit message more, I think?","commit_id":"934bf720f2262890e69ce552a9c519baf7f3e20a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"01fc94a9032de66b0979ed9e3ef5acefcae71b56","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            extra_properties.append(property)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    for p in extra_properties:"},{"line_number":95,"context_line":"        del instance[p]"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class _SchemaValidator(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_f53c73e2","line":95,"updated":"2015-08-21 09:02:08.000000000","message":"not totally sure if we need/want this bit, we might get away with just the above bit?","commit_id":"934bf720f2262890e69ce552a9c519baf7f3e20a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f8344305769f55f0788cdf13bd1480a99b9f665e","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        if len(extra_properties) \u003d\u003d 1:"},{"line_number":100,"context_line":"            verb \u003d \"was\""},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            verb \u003d \"were\""},{"line_number":103,"context_line":"        yield jsonschema_exc.ValidationError("},{"line_number":104,"context_line":"            error % (\", \".join(repr(extra) for extra in extra_properties),"},{"line_number":105,"context_line":"                     verb))"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_a0638c40","line":102,"updated":"2015-08-25 09:59:43.000000000","message":"not sure we need this here, just use the plural case for all cases, this seems like too much complexity to me.","commit_id":"0c537a92192b1f1522351e0339e79d40a4c8fc6b"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f54486cfd2cc8e77ae793bc4a71ae3774d757210","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        if len(extra_properties) \u003d\u003d 1:"},{"line_number":100,"context_line":"            verb \u003d \"was\""},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            verb \u003d \"were\""},{"line_number":103,"context_line":"        yield jsonschema_exc.ValidationError("},{"line_number":104,"context_line":"            error % (\", \".join(repr(extra) for extra in extra_properties),"},{"line_number":105,"context_line":"                     verb))"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_a8557550","line":102,"in_reply_to":"fa1b9901_a0638c40","updated":"2015-08-26 11:13:20.000000000","message":"Actually I want to match this as jsonschema library behavior. I hope user saw same response with v2.1 and  v2.1 compat mode","commit_id":"0c537a92192b1f1522351e0339e79d40a4c8fc6b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c772b202cdfbfce5b6de3db2d9f27cb707dc64f9","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        if len(extra_properties) \u003d\u003d 1:"},{"line_number":100,"context_line":"            verb \u003d \"was\""},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            verb \u003d \"were\""},{"line_number":103,"context_line":"        yield jsonschema_exc.ValidationError("},{"line_number":104,"context_line":"            error % (\", \".join(repr(extra) for extra in extra_properties),"},{"line_number":105,"context_line":"                     verb))"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_23eae60f","line":102,"in_reply_to":"fa1b9901_a8557550","updated":"2015-08-26 11:21:41.000000000","message":"oh, OK, thats a good reason.","commit_id":"0c537a92192b1f1522351e0339e79d40a4c8fc6b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"49603749655d09b0128ac1f86e7445e294614b0a","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            verb \u003d \"was\""},{"line_number":105,"context_line":"        else:"},{"line_number":106,"context_line":"            verb \u003d \"were\""},{"line_number":107,"context_line":"        yield jsonschema_exc.ValidationError("},{"line_number":108,"context_line":"            error % (\", \".join(repr(extra) for extra in extra_properties),"},{"line_number":109,"context_line":"                     verb))"},{"line_number":110,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1b9901_c37a0a24","line":107,"updated":"2015-08-26 11:27:29.000000000","message":"micro nit, its tempting to add a comment saying this is to match what the regular validator would return for this error.","commit_id":"5d35d104e98e2aaf2517cce1b24a294b1340ee51"}],"nova/tests/functional/api/client.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f8344305769f55f0788cdf13bd1480a99b9f665e","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        headers[\u0027X-Auth-Token\u0027] \u003d auth_result[\u0027x-auth-token\u0027]"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        response \u003d self.request(full_uri, **kwargs)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        http_status \u003d response.status_code"},{"line_number":176,"context_line":"        LOG.debug(\"%(relative_uri)s \u003d\u003e code %(http_status)s\","},{"line_number":177,"context_line":"                  {\u0027relative_uri\u0027: relative_uri, \u0027http_status\u0027: http_status})"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_e04984b8","side":"PARENT","line":174,"updated":"2015-08-25 09:59:43.000000000","message":"micro nit: we should really exclude this unrelated change.","commit_id":"a2d5492e8a15cdc13ada61b03f6293c709160505"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f54486cfd2cc8e77ae793bc4a71ae3774d757210","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        headers[\u0027X-Auth-Token\u0027] \u003d auth_result[\u0027x-auth-token\u0027]"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        response \u003d self.request(full_uri, **kwargs)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        http_status \u003d response.status_code"},{"line_number":176,"context_line":"        LOG.debug(\"%(relative_uri)s \u003d\u003e code %(http_status)s\","},{"line_number":177,"context_line":"                  {\u0027relative_uri\u0027: relative_uri, \u0027http_status\u0027: http_status})"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_48cdb92f","side":"PARENT","line":174,"in_reply_to":"fa1b9901_e04984b8","updated":"2015-08-26 11:13:20.000000000","message":"yea, will remove it","commit_id":"a2d5492e8a15cdc13ada61b03f6293c709160505"}],"nova/tests/functional/test_legacy_v2_compatible_wrapper.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f8344305769f55f0788cdf13bd1480a99b9f665e","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                                 \u0027x\u0027 * 300: \u0027y\u0027,"},{"line_number":72,"context_line":"                                 \u0027h\u0027 * 300: \u0027i\u0027})"},{"line_number":73,"context_line":"        self.assertEqual(exc.response.status_code, 400)"},{"line_number":74,"context_line":"        self.assertIn(\u0027were\u0027, exc.response.content)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_a04dcc9a","line":74,"updated":"2015-08-25 09:59:43.000000000","message":"we should really test for the case where we get a success, but some items are either stripped or let through, just to prove which the patch is doing.","commit_id":"0c537a92192b1f1522351e0339e79d40a4c8fc6b"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f54486cfd2cc8e77ae793bc4a71ae3774d757210","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                                 \u0027x\u0027 * 300: \u0027y\u0027,"},{"line_number":72,"context_line":"                                 \u0027h\u0027 * 300: \u0027i\u0027})"},{"line_number":73,"context_line":"        self.assertEqual(exc.response.status_code, 400)"},{"line_number":74,"context_line":"        self.assertIn(\u0027were\u0027, exc.response.content)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_28ef2588","line":74,"in_reply_to":"fa1b9901_a04dcc9a","updated":"2015-08-26 11:13:20.000000000","message":"yea, will doing","commit_id":"0c537a92192b1f1522351e0339e79d40a4c8fc6b"}]}
