)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"73be817eb564656cdc1fd677b6be5f344ffcc29c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support custom properties in schemas for v2 API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* Add the glance schema API (glance.schema:API)"},{"line_number":10,"context_line":"* Implements bp api-v2-image-schemas"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ibfa617cb5edf16627627debc30149669213d4b2d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAHX%2F%2F9Gw%3D","line":10,"updated":"2012-05-11 12:42:02.000000000","message":"The blueprint link seems to be broken, should it be \"bp api-v2-schemas\" instead?","commit_id":"995daa43c881c06cf5ae203d52f07b4346b0354f"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"5f3c51f8a884442761c0ff6dd089949fd8dbe6b7","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support custom properties in schemas for v2 API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* Add the glance schema API (glance.schema:API)"},{"line_number":10,"context_line":"* Implements bp api-v2-image-schemas"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ibfa617cb5edf16627627debc30149669213d4b2d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAHX%2F%2F9D4%3D","line":10,"in_reply_to":"AAAAHX%2F%2F9Gw%3D","updated":"2012-05-11 13:42:24.000000000","message":"Crap, you\u0027re right. I\u0027ll have to fix that in each subsequent branch...","commit_id":"995daa43c881c06cf5ae203d52f07b4346b0354f"}],"etc/schema-image.json":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"73be817eb564656cdc1fd677b6be5f344ffcc29c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    “type”: {"},{"line_number":3,"context_line":"      \"type\": \"string\","},{"line_number":4,"context_line":"      \"description\": \"The type code for the image\""},{"line_number":5,"context_line":"      \"required\": true,"}],"source_content_type":"application/json","patch_set":2,"id":"AAAAHX%2F%2F9Gs%3D","line":2,"updated":"2012-05-11 12:42:02.000000000","message":"The quotation mark here (“) looks like unicode U+201C instead of the standard python ASCII single or double quotes.","commit_id":"995daa43c881c06cf5ae203d52f07b4346b0354f"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"5f3c51f8a884442761c0ff6dd089949fd8dbe6b7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    “type”: {"},{"line_number":3,"context_line":"      \"type\": \"string\","},{"line_number":4,"context_line":"      \"description\": \"The type code for the image\""},{"line_number":5,"context_line":"      \"required\": true,"}],"source_content_type":"application/json","patch_set":2,"id":"AAAAHX%2F%2F9Eg%3D","line":2,"in_reply_to":"AAAAHX%2F%2F9Gs%3D","updated":"2012-05-11 13:42:24.000000000","message":"I had caught this in a later patch, but I can pull it in here.","commit_id":"995daa43c881c06cf5ae203d52f07b4346b0354f"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"73be817eb564656cdc1fd677b6be5f344ffcc29c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"      \"type\": \"string\","},{"line_number":4,"context_line":"      \"description\": \"The type code for the image\""},{"line_number":5,"context_line":"      \"required\": true,"},{"line_number":6,"context_line":"      \"enum\": [“kernel\", “ramdisk”, “filesystem”, “iso9660”, “disk”]"},{"line_number":7,"context_line":"    },"},{"line_number":8,"context_line":"    \"format\": {"},{"line_number":9,"context_line":"      \"type\": \"string\","}],"source_content_type":"application/json","patch_set":2,"id":"AAAAHX%2F%2F9Go%3D","line":6,"updated":"2012-05-11 12:42:02.000000000","message":"Similarly ...","commit_id":"995daa43c881c06cf5ae203d52f07b4346b0354f"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"73be817eb564656cdc1fd677b6be5f344ffcc29c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"      \"type\": \"string\","},{"line_number":10,"context_line":"      \"description\": \"The format code for the image\""},{"line_number":11,"context_line":"      \"required\": true,"},{"line_number":12,"context_line":"      \"enum\": [“raw\", \"vhd\", \"vmdk\", \"vdi\", \"qcow2\", “qed”]"},{"line_number":13,"context_line":"    },"},{"line_number":14,"context_line":"}"}],"source_content_type":"application/json","patch_set":2,"id":"AAAAHX%2F%2F9Gk%3D","line":12,"updated":"2012-05-11 12:42:02.000000000","message":"Similarly ...","commit_id":"995daa43c881c06cf5ae203d52f07b4346b0354f"}],"glance/schema.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"73be817eb564656cdc1fd677b6be5f344ffcc29c","unresolved":false,"context_lines":[{"line_number":22,"context_line":"_BASE_SCHEMA_PROPERTIES \u003d {"},{"line_number":23,"context_line":"    \u0027image\u0027: {"},{"line_number":24,"context_line":"        \u0027id\u0027: {"},{"line_number":25,"context_line":"            \u0027type\u0027: \u0027string\u0027,"},{"line_number":26,"context_line":"            \u0027description\u0027: \u0027An identifier for the image\u0027,"},{"line_number":27,"context_line":"            \u0027required\u0027: False,"},{"line_number":28,"context_line":"            \u0027maxLength\u0027: 36,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F9Gc%3D","line":25,"updated":"2012-05-11 12:42:02.000000000","message":"Do we need to constrain this further, i.e. its not just an arbitrary string, rather a UUID with with format something like:\n\n  [a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}","commit_id":"995daa43c881c06cf5ae203d52f07b4346b0354f"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"5f3c51f8a884442761c0ff6dd089949fd8dbe6b7","unresolved":false,"context_lines":[{"line_number":22,"context_line":"_BASE_SCHEMA_PROPERTIES \u003d {"},{"line_number":23,"context_line":"    \u0027image\u0027: {"},{"line_number":24,"context_line":"        \u0027id\u0027: {"},{"line_number":25,"context_line":"            \u0027type\u0027: \u0027string\u0027,"},{"line_number":26,"context_line":"            \u0027description\u0027: \u0027An identifier for the image\u0027,"},{"line_number":27,"context_line":"            \u0027required\u0027: False,"},{"line_number":28,"context_line":"            \u0027maxLength\u0027: 36,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F9Ec%3D","line":25,"in_reply_to":"AAAAHX%2F%2F9Gc%3D","updated":"2012-05-11 13:42:24.000000000","message":"Good idea. I think we can do this with a \u0027pattern\u0027 attribute. How about you incorporate that in a later patch?","commit_id":"995daa43c881c06cf5ae203d52f07b4346b0354f"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"73be817eb564656cdc1fd677b6be5f344ffcc29c","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        \u0027name\u0027: {"},{"line_number":31,"context_line":"            \u0027type\u0027: \u0027string\u0027,"},{"line_number":32,"context_line":"            \u0027description\u0027: \u0027Descriptive name for the image\u0027,"},{"line_number":33,"context_line":"            \u0027required\u0027: True,"},{"line_number":34,"context_line":"        },"},{"line_number":35,"context_line":"    },"},{"line_number":36,"context_line":"    \u0027access\u0027: {"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F9Gg%3D","line":33,"updated":"2012-05-11 12:42:02.000000000","message":"Missing a max len:\n\n  \u0027maxLength\u0027: 255,\n\n(see https://bugs.launchpad.net/glance/+bug/966240)","commit_id":"995daa43c881c06cf5ae203d52f07b4346b0354f"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"5f3c51f8a884442761c0ff6dd089949fd8dbe6b7","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        \u0027name\u0027: {"},{"line_number":31,"context_line":"            \u0027type\u0027: \u0027string\u0027,"},{"line_number":32,"context_line":"            \u0027description\u0027: \u0027Descriptive name for the image\u0027,"},{"line_number":33,"context_line":"            \u0027required\u0027: True,"},{"line_number":34,"context_line":"        },"},{"line_number":35,"context_line":"    },"},{"line_number":36,"context_line":"    \u0027access\u0027: {"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F9EY%3D","line":33,"in_reply_to":"AAAAHX%2F%2F9Gg%3D","updated":"2012-05-11 13:42:24.000000000","message":"Yep. Done.","commit_id":"995daa43c881c06cf5ae203d52f07b4346b0354f"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"73be817eb564656cdc1fd677b6be5f344ffcc29c","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    return json.loads(schema_data)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def load_custom_schema_properties(conf, api):"},{"line_number":82,"context_line":"    \"\"\"Extend base image and access schemas with custom properties.\"\"\""},{"line_number":83,"context_line":"    for schema_name in (\u0027image\u0027, \u0027access\u0027):"},{"line_number":84,"context_line":"        image_properties \u003d read_schema_properties_file(conf, schema_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F9GU%3D","line":81,"updated":"2012-05-11 12:42:02.000000000","message":"What triggers loading the custom schema props - i.e. where is this method called from?","commit_id":"995daa43c881c06cf5ae203d52f07b4346b0354f"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"5f3c51f8a884442761c0ff6dd089949fd8dbe6b7","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    return json.loads(schema_data)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"def load_custom_schema_properties(conf, api):"},{"line_number":82,"context_line":"    \"\"\"Extend base image and access schemas with custom properties.\"\"\""},{"line_number":83,"context_line":"    for schema_name in (\u0027image\u0027, \u0027access\u0027):"},{"line_number":84,"context_line":"        image_properties \u003d read_schema_properties_file(conf, schema_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F9EU%3D","line":81,"in_reply_to":"AAAAHX%2F%2F9GU%3D","updated":"2012-05-11 13:42:24.000000000","message":"It isn\u0027t used until later. I\u0027ll delete it for now. Same goes for the function above.","commit_id":"995daa43c881c06cf5ae203d52f07b4346b0354f"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"a9180751a0826d54462886bf8ffa382afdd48a21","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        # Ensure custom props aren\u0027t attempting to override base props"},{"line_number":68,"context_line":"        base_keys \u003d set(schema_properties.keys())"},{"line_number":69,"context_line":"        custom_keys \u003d set(custom_properties.keys())"},{"line_number":70,"context_line":"        conflicting_keys \u003d base_keys.intersection(custom_keys)"},{"line_number":71,"context_line":"        if len(conflicting_keys) \u003e 0:"},{"line_number":72,"context_line":"            props \u003d \u0027, \u0027.join(conflicting_keys)"},{"line_number":73,"context_line":"            reason \u003d _(\"custom properties (%(props)s) conflict \""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAHX%2F%2F8ds%3D","line":70,"updated":"2012-05-14 10:37:56.000000000","message":"Would it make sense here to ensure that these property settings are truly conflicting, as opposed to the original setting just being repeated?\n\nSomething like ...\n\n  - conflicting_keys \u003d base_keys.intersection(custom_keys)\n  + intersecting_keys \u003d base_keys.intersection(custom_keys)\n  + conflicting_keys \u003d [k for k in intersecting_keys if schema_properties[k] !\u003d custom_properties[k]]","commit_id":"b8218f19ff39af0307d82a5f65ca90057a6d5d39"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"3a706a5c48b2643c7cb0e45f9f90d2cc365546aa","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        # Ensure custom props aren\u0027t attempting to override base props"},{"line_number":68,"context_line":"        base_keys \u003d set(schema_properties.keys())"},{"line_number":69,"context_line":"        custom_keys \u003d set(custom_properties.keys())"},{"line_number":70,"context_line":"        conflicting_keys \u003d base_keys.intersection(custom_keys)"},{"line_number":71,"context_line":"        if len(conflicting_keys) \u003e 0:"},{"line_number":72,"context_line":"            props \u003d \u0027, \u0027.join(conflicting_keys)"},{"line_number":73,"context_line":"            reason \u003d _(\"custom properties (%(props)s) conflict \""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAHX%2F%2F8aE%3D","line":70,"in_reply_to":"AAAAHX%2F%2F8ds%3D","updated":"2012-05-14 14:32:42.000000000","message":"Done","commit_id":"b8218f19ff39af0307d82a5f65ca90057a6d5d39"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5e6cde0e84361765c8b7ab5f17188c3001d2bbab","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        base_keys \u003d set(schema_properties.keys())"},{"line_number":69,"context_line":"        custom_keys \u003d set(custom_properties.keys())"},{"line_number":70,"context_line":"        intersecting_keys \u003d base_keys.intersection(custom_keys)"},{"line_number":71,"context_line":"        conflicting_keys \u003d [k for k in intersecting_keys \\"},{"line_number":72,"context_line":"                            if schema_properties[k] !\u003d custom_properties[k]]"},{"line_number":73,"context_line":"        if len(conflicting_keys) \u003e 0:"},{"line_number":74,"context_line":"            props \u003d \u0027, \u0027.join(conflicting_keys)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAHX%2F%2F8ZI%3D","line":71,"updated":"2012-05-14 14:36:35.000000000","message":"Technically, this backslash isn\u0027t necessary, as you are inside teh list comprehension\u0027s bracketing.","commit_id":"b5d601f746ad78f1da9845272aa81d7bb20781ee"}],"glance/tests/functional/test_schema.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"73be817eb564656cdc1fd677b6be5f344ffcc29c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        output \u003d schema_api.get_schema(\u0027image\u0027)"},{"line_number":26,"context_line":"        self.assertEqual(\u0027image\u0027, output[\u0027name\u0027])"},{"line_number":27,"context_line":"        expected_keys \u003d [\u0027id\u0027, \u0027name\u0027]"},{"line_number":28,"context_line":"        self.assertEqual(expected_keys, output[\u0027properties\u0027].keys())"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def test_load_access_schema(self):"},{"line_number":31,"context_line":"        schema_api \u003d glance.schema.API()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F9GQ%3D","line":28,"updated":"2012-05-11 12:42:02.000000000","message":"Make sense to also assert on the expected values, as well as the keys? e.g.\n\n       expected_id \u003d dict(required\u003dFalse, type\u003d\u0027string\u0027, description\u003d\u0027An identifier for the image\u0027, maxLength\u003d36)\n       self.assertEqual(expected_id, output[\u0027properties\u0027][\u0027id\u0027]\n\n... etc.","commit_id":"995daa43c881c06cf5ae203d52f07b4346b0354f"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"5f3c51f8a884442761c0ff6dd089949fd8dbe6b7","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        output \u003d schema_api.get_schema(\u0027image\u0027)"},{"line_number":26,"context_line":"        self.assertEqual(\u0027image\u0027, output[\u0027name\u0027])"},{"line_number":27,"context_line":"        expected_keys \u003d [\u0027id\u0027, \u0027name\u0027]"},{"line_number":28,"context_line":"        self.assertEqual(expected_keys, output[\u0027properties\u0027].keys())"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def test_load_access_schema(self):"},{"line_number":31,"context_line":"        schema_api \u003d glance.schema.API()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAHX%2F%2F9EA%3D","line":28,"in_reply_to":"AAAAHX%2F%2F9GQ%3D","updated":"2012-05-11 13:42:24.000000000","message":"I wanted to leave the functional tests closer to smoke tests and push full value testing into the unit tests (which you will see I have already done).","commit_id":"995daa43c881c06cf5ae203d52f07b4346b0354f"}],"glance/tests/unit/test_schema.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9d183fffd252b8ca345907e4271f2a88938ccce0","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                    \u0027required\u0027: False,"},{"line_number":99,"context_line":"                },"},{"line_number":100,"context_line":"            },"},{"line_number":101,"context_line":"        }"},{"line_number":102,"context_line":"        self.assertEqual(output, expected)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAHX%2F%2F88M%3D","line":101,"updated":"2012-05-11 15:47:55.000000000","message":"I\u0027m not sure I agree with the overriding of base image properties. I think it would be more appropriate to raise an Exception saying that the schema being loaded conflicts with the base image properties...","commit_id":"900f49ca948221d1478418ec014f450993385c1f"}],"glance/tests/unit/v2/test_images_resource.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"75a40f416e5f9d9565bad4fa7e771a13d658f23b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def setUp(self):"},{"line_number":96,"context_line":"        schema_api \u003d glance.schema.API()"},{"line_number":97,"context_line":"        self.deserializer \u003d glance.api.v2.images.RequestDeserializer("},{"line_number":98,"context_line":"                {}, schema_api)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def test_create(self):"},{"line_number":101,"context_line":"        request \u003d test_utils.FakeRequest()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F%2BYI%3D","line":98,"updated":"2012-05-08 23:07:54.000000000","message":"PEP8 vertical alignment (should be 4 spaces).","commit_id":"6f0b8292a8699e51d95985f2ecb86eacab039abd"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"47e9faf0526e83b4586f83fc0b6cf3f89928e668","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def setUp(self):"},{"line_number":96,"context_line":"        schema_api \u003d glance.schema.API()"},{"line_number":97,"context_line":"        self.deserializer \u003d glance.api.v2.images.RequestDeserializer("},{"line_number":98,"context_line":"                {}, schema_api)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def test_create(self):"},{"line_number":101,"context_line":"        request \u003d test_utils.FakeRequest()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9lw%3D","line":98,"in_reply_to":"AAAAHX%2F%2F%2BXE%3D","updated":"2012-05-10 16:01:48.000000000","message":"Well I guess we just don\u0027t quite agree here. We don\u0027t have a specific requirement, so I would prefer to leave it how I find it to be more readable.","commit_id":"6f0b8292a8699e51d95985f2ecb86eacab039abd"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"d0588487e4756b200973f2a68b5aadd5f9570cf5","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def setUp(self):"},{"line_number":96,"context_line":"        schema_api \u003d glance.schema.API()"},{"line_number":97,"context_line":"        self.deserializer \u003d glance.api.v2.images.RequestDeserializer("},{"line_number":98,"context_line":"                {}, schema_api)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def test_create(self):"},{"line_number":101,"context_line":"        request \u003d test_utils.FakeRequest()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F%2BXE%3D","line":98,"in_reply_to":"AAAAHX%2F%2F%2BXo%3D","updated":"2012-05-09 00:14:32.000000000","message":"I\u0027ve always interpreted that quote as suggesting the use of further indentation only when it is necessary to distinguish between the continuation line and the following line, e.g.:\n\nFurther indentation required:\n\nif (foo and\n        bar):\n    pass\n\nFurther indentation not required:\n\nbaz \u003d (\n    foo and bar)\n\nThat way I get to use every bit of horizontal space available to me without suffering any loss in clarity from your interpretation.\n\nNote that the pep8 utility doesn\u0027t check vertical alignment.","commit_id":"6f0b8292a8699e51d95985f2ecb86eacab039abd"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"dfd1352603b7970a58ec7d1bb60c9d2a03338e2c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def setUp(self):"},{"line_number":96,"context_line":"        schema_api \u003d glance.schema.API()"},{"line_number":97,"context_line":"        self.deserializer \u003d glance.api.v2.images.RequestDeserializer("},{"line_number":98,"context_line":"                {}, schema_api)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def test_create(self):"},{"line_number":101,"context_line":"        request \u003d test_utils.FakeRequest()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F%2BXo%3D","line":98,"in_reply_to":"AAAAHX%2F%2F%2BYI%3D","updated":"2012-05-08 23:20:25.000000000","message":"Quoted from http://www.python.org/dev/peps/pep-0008/:\n\n\"...further indentation should be used to clearly distinguish itself as a continuation line.\"\n\nI would interpret that as using two levels (at a minimum) of indentation for line continuations. It\u0027s more obvious that its not an indented block of code following a conditional (or loop structure, etc) if you indent twice. Additionally, the pep8 utility doesn\u0027t fail on this line.","commit_id":"6f0b8292a8699e51d95985f2ecb86eacab039abd"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"d70aa43d30b419346ace1b697745e6122943c0e6","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def setUp(self):"},{"line_number":96,"context_line":"        schema_api \u003d glance.schema.API()"},{"line_number":97,"context_line":"        self.deserializer \u003d glance.api.v2.images.RequestDeserializer("},{"line_number":98,"context_line":"                {}, schema_api)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def test_create(self):"},{"line_number":101,"context_line":"        request \u003d test_utils.FakeRequest()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9gQ%3D","line":98,"in_reply_to":"AAAAHX%2F%2F9hM%3D","updated":"2012-05-10 18:34:00.000000000","message":"Yep :) I just wanted to make sure other reviewers weren\u0027t waiting on more changes from me. Thanks for your comments!","commit_id":"6f0b8292a8699e51d95985f2ecb86eacab039abd"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"b7a1673518a814aab70e4a971c104d6ff8932cfb","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    def setUp(self):"},{"line_number":96,"context_line":"        schema_api \u003d glance.schema.API()"},{"line_number":97,"context_line":"        self.deserializer \u003d glance.api.v2.images.RequestDeserializer("},{"line_number":98,"context_line":"                {}, schema_api)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def test_create(self):"},{"line_number":101,"context_line":"        request \u003d test_utils.FakeRequest()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAHX%2F%2F9hM%3D","line":98,"in_reply_to":"AAAAHX%2F%2F9lw%3D","updated":"2012-05-10 17:52:47.000000000","message":"Fair enough.  Note that I +1\u0027d even with the original comment, since how people interpret this kind of thing is all over the place.","commit_id":"6f0b8292a8699e51d95985f2ecb86eacab039abd"}]}
