)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"aef080a106a467df9089b66ccd1da9223db19324","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Avishay Balderman \u003cavishayb@radware.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2012-12-04 12:36:15 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Bug #1084231 - Implementing string representation for model classes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I1ea5d741d2fd2da13712e0d51d2c73dfba4991cf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAMX%2F%2F%2BS0%3D","line":7,"updated":"2012-12-04 12:25:02.000000000","message":"1st line should state what you do with the commit\n2nd line should refer to bug/blueprint\n3rd line onwards details on commit (always welcome)","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Avishay Balderman \u003cavishayb@radware.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2012-12-04 12:36:15 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Bug #1084231 - Implementing string representation for model classes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I1ea5d741d2fd2da13712e0d51d2c73dfba4991cf"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAMX%2F%2F9LA%3D","line":7,"in_reply_to":"AAAAMX%2F%2F%2BS0%3D","updated":"2012-12-05 02:53:50.000000000","message":"Sample:\n\n Implements string representation for model classes\n\n \u003cexplain the changes you\u0027ve made\u003e\n\n Fixes bug #1084231","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Avishay Balderman \u003cavishayb@radware.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2012-12-05 16:05:33 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Bug #1084231 - Implementing string representation for model classes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We want to have meaningfull representation. This is useful when we debug"},{"line_number":10,"context_line":"and want to see the actual attributes of the object. The current __repr__"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAMX%2F%2F7%2FA%3D","line":7,"updated":"2012-12-06 01:26:36.000000000","message":"Please put \"Bug #1084231\" as \"Fixes bug #1084231\" in a different line.","commit_id":"ba19fbccdb9588c3e5cf1d59a31539bf9970c4d0"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     d0a284de (make the DHCP agent use a unique queue name)"},{"line_number":2,"context_line":"Author:     avishayb \u003cavishayb@avishayb-VirtualBox.(none)\u003e"},{"line_number":3,"context_line":"AuthorDate: 2012-11-30 00:48:05 +0200"},{"line_number":4,"context_line":"Commit:     Avishay Balderman \u003cavishayb@radware.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2012-12-06 18:43:39 +0200"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAMX%2F%2F7D0%3D","line":2,"updated":"2012-12-06 20:40:02.000000000","message":"you should use avishayb@radware.com here","commit_id":"7ac3a6639cb1a76fcb4f917a918c71e00366915a"}],"quantum/db/model_base.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"aef080a106a467df9089b66ccd1da9223db19324","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class QuantumBase(object):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    \"\"\"Base class for Quantum Models.\"\"\""},{"line_number":23,"context_line":"    def __setitem__(self, key, value):"},{"line_number":24,"context_line":"        setattr(self, key, value)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F%2BTQ%3D","line":21,"updated":"2012-12-04 12:25:02.000000000","message":"I don\u0027t think we need this blank line","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class QuantumBase(object):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    \"\"\"Base class for Quantum Models.\"\"\""},{"line_number":23,"context_line":"    def __setitem__(self, key, value):"},{"line_number":24,"context_line":"        setattr(self, key, value)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F9r4%3D","line":21,"in_reply_to":"AAAAMX%2F%2F%2BL4%3D","updated":"2012-12-04 17:53:36.000000000","message":"There should be a blank line after the class description comment  not before it.","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"855893f09b9027b6bbcfc1fd8b4104969ca874c9","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class QuantumBase(object):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    \"\"\"Base class for Quantum Models.\"\"\""},{"line_number":23,"context_line":"    def __setitem__(self, key, value):"},{"line_number":24,"context_line":"        setattr(self, key, value)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F%2BL4%3D","line":21,"in_reply_to":"AAAAMX%2F%2F%2BTQ%3D","updated":"2012-12-04 15:37:16.000000000","message":"As far as I remember the line was added to make pep8 happy","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"aef080a106a467df9089b66ccd1da9223db19324","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def __repr__(self):"},{"line_number":55,"context_line":"        \"\"\"sqlalchemy based automatic __repr__ method\"\"\""},{"line_number":56,"context_line":"        pairs \u003d {}"},{"line_number":57,"context_line":"        for col in self.__table__._columns._all_cols:"},{"line_number":58,"context_line":"            pairs[col.name] \u003d self.__dict__.get(col.name)"},{"line_number":59,"context_line":"        items \u003d (\"%s \u003d %r\" % (k, v) for k, v in pairs.items())"},{"line_number":60,"context_line":"        return \"\u003c%s: {%s}\u003e\" % (self.__class__.__name__, \u0027, \u0027.join(items))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F%2BTA%3D","line":57,"updated":"2012-12-04 12:25:02.000000000","message":"I usally iterate over __table__.columns\nWhy __table__._columns_._all_cols_ ?","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def __repr__(self):"},{"line_number":55,"context_line":"        \"\"\"sqlalchemy based automatic __repr__ method\"\"\""},{"line_number":56,"context_line":"        pairs \u003d {}"},{"line_number":57,"context_line":"        for col in self.__table__._columns._all_cols:"},{"line_number":58,"context_line":"            pairs[col.name] \u003d self.__dict__.get(col.name)"},{"line_number":59,"context_line":"        items \u003d (\"%s \u003d %r\" % (k, v) for k, v in pairs.items())"},{"line_number":60,"context_line":"        return \"\u003c%s: {%s}\u003e\" % (self.__class__.__name__, \u0027, \u0027.join(items))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F9ys%3D","line":57,"updated":"2012-12-04 17:53:36.000000000","message":"You actually have access to the items you need (print returns the string values and hides that the objects have a name attribute).\n\nReplace 57-59 with this:\n\nitems \u003d [\u0027%s\u003d%s\u0027 % (c.name, getattr(self, c.name)) for c in self.__table__.columns]","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"855893f09b9027b6bbcfc1fd8b4104969ca874c9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def __repr__(self):"},{"line_number":55,"context_line":"        \"\"\"sqlalchemy based automatic __repr__ method\"\"\""},{"line_number":56,"context_line":"        pairs \u003d {}"},{"line_number":57,"context_line":"        for col in self.__table__._columns._all_cols:"},{"line_number":58,"context_line":"            pairs[col.name] \u003d self.__dict__.get(col.name)"},{"line_number":59,"context_line":"        items \u003d (\"%s \u003d %r\" % (k, v) for k, v in pairs.items())"},{"line_number":60,"context_line":"        return \"\u003c%s: {%s}\u003e\" % (self.__class__.__name__, \u0027, \u0027.join(items))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F%2BJo%3D","line":57,"in_reply_to":"AAAAMX%2F%2F%2BTA%3D","updated":"2012-12-04 15:37:16.000000000","message":"I played with the 2 options.\nWith your suggestion I will have tp parse the column name because it is given  like \u0027networks.status\u0027.\nWith mu approach I have \u0027col.name\u0027 that gives me the name I need in order to make a lookup in __dict__\n\n\nSee the difference below\n-------------------------------------------------------\n\u003e\u003e\u003e import models_v2\n\u003e\u003e\u003e n \u003d models_v2.Network()\n\u003e\u003e\u003e print n.__table__.columns\n[\u0027networks.tenant_id\u0027, \u0027networks.id\u0027, \u0027networks.name\u0027, \u0027networks.status\u0027, \u0027networks.admin_state_up\u0027, \u0027networks.shared\u0027]\n\n\u003e\u003e\u003e print n.__table__._columns._all_cols\nset([Column(\u0027shared\u0027, Boolean(), table\u003d\u003cnetworks\u003e), Column(\u0027id\u0027, String(length\u003d36), table\u003d\u003cnetworks\u003e, primary_key\u003dTrue, nullable\u003dFalse, default\u003dColumnDefault(\u003cfunction \u003clambda\u003e at 0x251eb90\u003e)), Column(\u0027status\u0027, String(length\u003d16), table\u003d\u003cnetworks\u003e), Column(\u0027tenant_id\u0027, String(length\u003d255), table\u003d\u003cnetworks\u003e), Column(\u0027name\u0027, String(length\u003d255), table\u003d\u003cnetworks\u003e), Column(\u0027admin_state_up\u0027, Boolean(), table\u003d\u003cnetworks\u003e)])","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"aef080a106a467df9089b66ccd1da9223db19324","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        \"\"\"sqlalchemy based automatic __repr__ method\"\"\""},{"line_number":56,"context_line":"        pairs \u003d {}"},{"line_number":57,"context_line":"        for col in self.__table__._columns._all_cols:"},{"line_number":58,"context_line":"            pairs[col.name] \u003d self.__dict__.get(col.name)"},{"line_number":59,"context_line":"        items \u003d (\"%s \u003d %r\" % (k, v) for k, v in pairs.items())"},{"line_number":60,"context_line":"        return \"\u003c%s: {%s}\u003e\" % (self.__class__.__name__, \u0027, \u0027.join(items))"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F%2BS4%3D","line":58,"updated":"2012-12-04 12:25:02.000000000","message":"In my code, I usually do this for creating a dict out of a data model row. Let me know if you like the syntax\n\n    def as_dict(self):\n        \"\"\" Convert a row into a dict \"\"\"\n        return {c.name: getattr(self, c.name) for c in self.__table__.columns}","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"855893f09b9027b6bbcfc1fd8b4104969ca874c9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        \"\"\"sqlalchemy based automatic __repr__ method\"\"\""},{"line_number":56,"context_line":"        pairs \u003d {}"},{"line_number":57,"context_line":"        for col in self.__table__._columns._all_cols:"},{"line_number":58,"context_line":"            pairs[col.name] \u003d self.__dict__.get(col.name)"},{"line_number":59,"context_line":"        items \u003d (\"%s \u003d %r\" % (k, v) for k, v in pairs.items())"},{"line_number":60,"context_line":"        return \"\u003c%s: {%s}\u003e\" % (self.__class__.__name__, \u0027, \u0027.join(items))"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F%2BJk%3D","line":58,"in_reply_to":"AAAAMX%2F%2F%2BS4%3D","updated":"2012-12-04 15:37:16.000000000","message":"I do not think I understand. Can you please explain?\n(Dont forget that I am having few weeks of python background but many years of C++ / Java) :-)","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":57,"context_line":"        for col in self.__table__._columns._all_cols:"},{"line_number":58,"context_line":"            pairs[col.name] \u003d self.__dict__.get(col.name)"},{"line_number":59,"context_line":"        items \u003d (\"%s \u003d %r\" % (k, v) for k, v in pairs.items())"},{"line_number":60,"context_line":"        return \"\u003c%s: {%s}\u003e\" % (self.__class__.__name__, \u0027, \u0027.join(items))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class QuantumBaseV2(QuantumBase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F90s%3D","line":60,"updated":"2012-12-04 17:53:36.000000000","message":"This change hides the python object id (different from the model\u0027s id attribute).  The object id is very useful for situations when you\u0027ve got the same the model instance that was created in two different transaction contexts (the property values will be the exact same, but they\u0027ll be different instances).","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def __repr__(self):"},{"line_number":55,"context_line":"        \"\"\"sqlalchemy based automatic __repr__ method\"\"\""},{"line_number":56,"context_line":"        items \u003d [\u0027%s\u003d%s\u0027 % (col.name, getattr(self, col.name))"},{"line_number":57,"context_line":"                 for col in self.__table__.columns]"},{"line_number":58,"context_line":"        return \"\u003c%s:[object at %x] {%s}\u003e\" % (self.__class__, id(self),"},{"line_number":59,"context_line":"                                             \u0027, \u0027.join(items))"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMX%2F%2F8Dk%3D","line":56,"updated":"2012-12-05 23:48:48.000000000","message":"slight tweak\n\nitems \u003d [\u0027%s\u003d%r\u0027 % (col.name, getattr(self, col.name))","commit_id":"ba19fbccdb9588c3e5cf1d59a31539bf9970c4d0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":55,"context_line":"        \"\"\"sqlalchemy based automatic __repr__ method\"\"\""},{"line_number":56,"context_line":"        items \u003d [\u0027%s\u003d%s\u0027 % (col.name, getattr(self, col.name))"},{"line_number":57,"context_line":"                 for col in self.__table__.columns]"},{"line_number":58,"context_line":"        return \"\u003c%s:[object at %x] {%s}\u003e\" % (self.__class__, id(self),"},{"line_number":59,"context_line":"                                             \u0027, \u0027.join(items))"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMX%2F%2F8DQ%3D","line":58,"updated":"2012-12-05 23:48:48.000000000","message":"Still think we need to tweak the output because if we use str or the class it is wrapped in extrea \u003c\u003e.  Try this:\n\n     return \"\u003c%s.%s:[object at %x] %s\u003e\" % (self.__class__.__module__, self.__class__.name, id(self), \u0027, \u0027.join(items))","commit_id":"ba19fbccdb9588c3e5cf1d59a31539bf9970c4d0"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def __repr__(self):"},{"line_number":55,"context_line":"        \"\"\"sqlalchemy based automatic __repr__ method\"\"\""},{"line_number":56,"context_line":"        items \u003d [\u0027%s\u003d%s\u0027 % (col.name, getattr(self, col.name))"},{"line_number":57,"context_line":"                 for col in self.__table__.columns]"},{"line_number":58,"context_line":"        return \"\u003c%s.%s:[object at %x] %s\u003e\" % (self.__class__.__module__,"},{"line_number":59,"context_line":"                                              self.__class__.__name__,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAMX%2F%2F7Bk%3D","line":56,"updated":"2012-12-06 21:07:54.000000000","message":"One item from Patchset #4\n\nitems \u003d [\u0027%s\u003d%r\u0027 % (col.name, getattr(self, col.name))","commit_id":"7ac3a6639cb1a76fcb4f917a918c71e00366915a"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"855893f09b9027b6bbcfc1fd8b4104969ca874c9","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def __repr__(self):"},{"line_number":55,"context_line":"        \"\"\"sqlalchemy based automatic __repr__ method\"\"\""},{"line_number":56,"context_line":"        items \u003d [\u0027%s\u003d%s\u0027 % (col.name, getattr(self, col.name))"},{"line_number":57,"context_line":"                 for col in self.__table__.columns]"},{"line_number":58,"context_line":"        return \"\u003c%s.%s:[object at %x] %s\u003e\" % (self.__class__.__module__,"},{"line_number":59,"context_line":"                                              self.__class__.__name__,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAMX%2F%2F6hc%3D","line":56,"in_reply_to":"AAAAMX%2F%2F7Bk%3D","updated":"2012-12-07 12:37:44.000000000","message":"Done","commit_id":"7ac3a6639cb1a76fcb4f917a918c71e00366915a"}],"quantum/tests/unit/test_db_plugin.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"aef080a106a467df9089b66ccd1da9223db19324","unresolved":false,"context_lines":[{"line_number":2790,"context_line":"        self.assertEquals(res.status_int, 204)"},{"line_number":2791,"context_line":""},{"line_number":2792,"context_line":""},{"line_number":2793,"context_line":"class Misc(unittest2.TestCase):"},{"line_number":2794,"context_line":"    \"\"\" Misc. DB tests \"\"\""},{"line_number":2795,"context_line":"    def test_repr(self):"},{"line_number":2796,"context_line":"        \"\"\" testing the string representation of \"model\" classes \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F%2BTc%3D","line":2793,"updated":"2012-12-04 12:25:02.000000000","message":"Would DbModelTestCase sound better?","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"855893f09b9027b6bbcfc1fd8b4104969ca874c9","unresolved":false,"context_lines":[{"line_number":2790,"context_line":"        self.assertEquals(res.status_int, 204)"},{"line_number":2791,"context_line":""},{"line_number":2792,"context_line":""},{"line_number":2793,"context_line":"class Misc(unittest2.TestCase):"},{"line_number":2794,"context_line":"    \"\"\" Misc. DB tests \"\"\""},{"line_number":2795,"context_line":"    def test_repr(self):"},{"line_number":2796,"context_line":"        \"\"\" testing the string representation of \"model\" classes \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F%2BLI%3D","line":2793,"in_reply_to":"AAAAMX%2F%2F%2BTc%3D","updated":"2012-12-04 15:37:16.000000000","message":"OK - I agree. \u0027DbModelTestCase\u0027 sounds like a better name.","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"aef080a106a467df9089b66ccd1da9223db19324","unresolved":false,"context_lines":[{"line_number":2793,"context_line":"class Misc(unittest2.TestCase):"},{"line_number":2794,"context_line":"    \"\"\" Misc. DB tests \"\"\""},{"line_number":2795,"context_line":"    def test_repr(self):"},{"line_number":2796,"context_line":"        \"\"\" testing the string representation of \"model\" classes \"\"\""},{"line_number":2797,"context_line":"        network \u003d models_v2.Network(name\u003d\"net_net\", status\u003d\"OK\","},{"line_number":2798,"context_line":"                                    admin_state_up\u003dTrue)"},{"line_number":2799,"context_line":"        actual_repr_output \u003d repr(network)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F%2BTY%3D","line":2796,"updated":"2012-12-04 12:25:02.000000000","message":"consider enclosing \u003cmodel\u003e in single quotes","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":2793,"context_line":"class Misc(unittest2.TestCase):"},{"line_number":2794,"context_line":"    \"\"\" Misc. DB tests \"\"\""},{"line_number":2795,"context_line":"    def test_repr(self):"},{"line_number":2796,"context_line":"        \"\"\" testing the string representation of \"model\" classes \"\"\""},{"line_number":2797,"context_line":"        network \u003d models_v2.Network(name\u003d\"net_net\", status\u003d\"OK\","},{"line_number":2798,"context_line":"                                    admin_state_up\u003dTrue)"},{"line_number":2799,"context_line":"        actual_repr_output \u003d repr(network)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F9rU%3D","line":2796,"in_reply_to":"AAAAMX%2F%2F%2BKc%3D","updated":"2012-12-04 17:53:36.000000000","message":"I think Salvatore is talking about the \"model\" in the method description.  I don\u0027t think the word needs to be in quotes anyway.","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"855893f09b9027b6bbcfc1fd8b4104969ca874c9","unresolved":false,"context_lines":[{"line_number":2793,"context_line":"class Misc(unittest2.TestCase):"},{"line_number":2794,"context_line":"    \"\"\" Misc. DB tests \"\"\""},{"line_number":2795,"context_line":"    def test_repr(self):"},{"line_number":2796,"context_line":"        \"\"\" testing the string representation of \"model\" classes \"\"\""},{"line_number":2797,"context_line":"        network \u003d models_v2.Network(name\u003d\"net_net\", status\u003d\"OK\","},{"line_number":2798,"context_line":"                                    admin_state_up\u003dTrue)"},{"line_number":2799,"context_line":"        actual_repr_output \u003d repr(network)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F%2BKc%3D","line":2796,"in_reply_to":"AAAAMX%2F%2F%2BTY%3D","updated":"2012-12-04 15:37:16.000000000","message":"Let me make sure I understand.\nreplace\n    \u003cNetwork ....\u003e\nwith\n    \u0027\u003cNetwork ....\u003e\u0027\nin the output of __repr__?\nWhy adding single quotes is good?","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"unresolved":false,"context_lines":[{"line_number":2793,"context_line":"class Misc(unittest2.TestCase):"},{"line_number":2794,"context_line":"    \"\"\" Misc. DB tests \"\"\""},{"line_number":2795,"context_line":"    def test_repr(self):"},{"line_number":2796,"context_line":"        \"\"\" testing the string representation of \"model\" classes \"\"\""},{"line_number":2797,"context_line":"        network \u003d models_v2.Network(name\u003d\"net_net\", status\u003d\"OK\","},{"line_number":2798,"context_line":"                                    admin_state_up\u003dTrue)"},{"line_number":2799,"context_line":"        actual_repr_output \u003d repr(network)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F9K8%3D","line":2796,"in_reply_to":"AAAAMX%2F%2F9rU%3D","updated":"2012-12-05 02:53:50.000000000","message":"Salvatore suggests:\n\n \"\"\" testing the string representation of \u0027model\u0027 classes \"\"\"\n\nMark likes:\n\n \"\"\" testing the string representation of model classes \"\"\"","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"aef080a106a467df9089b66ccd1da9223db19324","unresolved":false,"context_lines":[{"line_number":2797,"context_line":"        network \u003d models_v2.Network(name\u003d\"net_net\", status\u003d\"OK\","},{"line_number":2798,"context_line":"                                    admin_state_up\u003dTrue)"},{"line_number":2799,"context_line":"        actual_repr_output \u003d repr(network)"},{"line_number":2800,"context_line":"        expected_repr_output \u003d \"\u003cNetwork: {status \u003d \u0027OK\u0027, \"\\"},{"line_number":2801,"context_line":"                               \"name \u003d \u0027net_net\u0027, admin_state_up \u003d True, \"\\"},{"line_number":2802,"context_line":"                               \"tenant_id \u003d None, shared \u003d None, id \u003d None}\u003e\""},{"line_number":2803,"context_line":"        self.assertEquals(actual_repr_output, expected_repr_output)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F%2BTU%3D","line":2800,"updated":"2012-12-04 12:25:02.000000000","message":"HACKING rules for this project forbid using backslashes for separating lines.\nConsider enclosing the string in parenthesis","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":2797,"context_line":"        network \u003d models_v2.Network(name\u003d\"net_net\", status\u003d\"OK\","},{"line_number":2798,"context_line":"                                    admin_state_up\u003dTrue)"},{"line_number":2799,"context_line":"        actual_repr_output \u003d repr(network)"},{"line_number":2800,"context_line":"        expected_repr_output \u003d \"\u003cNetwork: {status \u003d \u0027OK\u0027, \"\\"},{"line_number":2801,"context_line":"                               \"name \u003d \u0027net_net\u0027, admin_state_up \u003d True, \"\\"},{"line_number":2802,"context_line":"                               \"tenant_id \u003d None, shared \u003d None, id \u003d None}\u003e\""},{"line_number":2803,"context_line":"        self.assertEquals(actual_repr_output, expected_repr_output)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F9rc%3D","line":2800,"in_reply_to":"AAAAMX%2F%2F%2BLU%3D","updated":"2012-12-04 17:53:36.000000000","message":"Wrap the string in a parenthesis.  Python will concatenate the strings for you.\n\u003e\u003e\u003e foo \u003d (\u0027my really long\u0027\n...        \u0027 string\u0027)\n\u003e\u003e\u003e foo\n\u0027my really long string\u0027","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"855893f09b9027b6bbcfc1fd8b4104969ca874c9","unresolved":false,"context_lines":[{"line_number":2797,"context_line":"        network \u003d models_v2.Network(name\u003d\"net_net\", status\u003d\"OK\","},{"line_number":2798,"context_line":"                                    admin_state_up\u003dTrue)"},{"line_number":2799,"context_line":"        actual_repr_output \u003d repr(network)"},{"line_number":2800,"context_line":"        expected_repr_output \u003d \"\u003cNetwork: {status \u003d \u0027OK\u0027, \"\\"},{"line_number":2801,"context_line":"                               \"name \u003d \u0027net_net\u0027, admin_state_up \u003d True, \"\\"},{"line_number":2802,"context_line":"                               \"tenant_id \u003d None, shared \u003d None, id \u003d None}\u003e\""},{"line_number":2803,"context_line":"        self.assertEquals(actual_repr_output, expected_repr_output)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F%2BLU%3D","line":2800,"in_reply_to":"AAAAMX%2F%2F%2BTU%3D","updated":"2012-12-04 15:37:16.000000000","message":"So how can I make pep8 happy with the length of this string?","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"unresolved":false,"context_lines":[{"line_number":2797,"context_line":"        network \u003d models_v2.Network(name\u003d\"net_net\", status\u003d\"OK\","},{"line_number":2798,"context_line":"                                    admin_state_up\u003dTrue)"},{"line_number":2799,"context_line":"        actual_repr_output \u003d repr(network)"},{"line_number":2800,"context_line":"        expected_repr_output \u003d \"\u003cNetwork: {status \u003d \u0027OK\u0027, \"\\"},{"line_number":2801,"context_line":"                               \"name \u003d \u0027net_net\u0027, admin_state_up \u003d True, \"\\"},{"line_number":2802,"context_line":"                               \"tenant_id \u003d None, shared \u003d None, id \u003d None}\u003e\""},{"line_number":2803,"context_line":"        self.assertEquals(actual_repr_output, expected_repr_output)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2F9K4%3D","line":2800,"in_reply_to":"AAAAMX%2F%2F9rc%3D","updated":"2012-12-05 02:53:50.000000000","message":"Sample:\n\n expected_repr_output \u003d (\"\u003cNetwork: {status \u003d \u0027OK\u0027, \"\n                         \"name \u003d \u0027net_net\u0027, admin_state_up \u003d True, \"\n                         \"tenant_id \u003d None, shared \u003d None, id \u003d None}\u003e\")","commit_id":"9bcd92a209dfe3efb35e413f4e8b8bd439ebbb7b"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"unresolved":false,"context_lines":[{"line_number":2791,"context_line":""},{"line_number":2792,"context_line":""},{"line_number":2793,"context_line":"class DbModelTestCase(unittest2.TestCase):"},{"line_number":2794,"context_line":"    \"\"\" Misc. DB tests \"\"\""},{"line_number":2795,"context_line":"    def test_repr(self):"},{"line_number":2796,"context_line":"        \"\"\" testing the string representation of \u0027model\u0027 classes \"\"\""},{"line_number":2797,"context_line":"        network \u003d models_v2.Network(name\u003d\"net_net\", status\u003d\"OK\","}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAMX%2F%2F7%2B8%3D","line":2794,"updated":"2012-12-06 01:26:36.000000000","message":"Doc string nit","commit_id":"ba19fbccdb9588c3e5cf1d59a31539bf9970c4d0"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"unresolved":false,"context_lines":[{"line_number":2784,"context_line":"                             \"name\u003d\u0027net_net\u0027, status\u003d\u0027OK\u0027, \""},{"line_number":2785,"context_line":"                             \"admin_state_up\u003dTrue, shared\u003dNone}\u003e\")"},{"line_number":2786,"context_line":"        expected_middle \u003d \"[object at %x]\" % id(network)"},{"line_number":2787,"context_line":"        expected_start_with \u003d \"\u003cquantum.db.models_v2.Network\""},{"line_number":2788,"context_line":"        self.assertTrue(actual_repr_output.startswith(expected_start_with))"},{"line_number":2789,"context_line":"        self.assertTrue(actual_repr_output.find(expected_middle) !\u003d -1)"},{"line_number":2790,"context_line":"        self.assertTrue(actual_repr_output.endswith(expected_end_with))"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2F5fQ%3D","line":2787,"updated":"2012-12-23 00:50:14.000000000","message":"Why split the string in to three parts and do three assertions?\nIt would be better if this done like the comments of patch 1.","commit_id":"dff40b4e94c347de03ec282289c38b137c5682ea"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":2784,"context_line":"                             \"name\u003d\u0027net_net\u0027, status\u003d\u0027OK\u0027, \""},{"line_number":2785,"context_line":"                             \"admin_state_up\u003dTrue, shared\u003dNone}\u003e\")"},{"line_number":2786,"context_line":"        expected_middle \u003d \"[object at %x]\" % id(network)"},{"line_number":2787,"context_line":"        expected_start_with \u003d \"\u003cquantum.db.models_v2.Network\""},{"line_number":2788,"context_line":"        self.assertTrue(actual_repr_output.startswith(expected_start_with))"},{"line_number":2789,"context_line":"        self.assertTrue(actual_repr_output.find(expected_middle) !\u003d -1)"},{"line_number":2790,"context_line":"        self.assertTrue(actual_repr_output.endswith(expected_end_with))"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2F5Gg%3D","line":2787,"in_reply_to":"AAAAM3%2F%2F5KI%3D","updated":"2012-12-24 16:50:51.000000000","message":"Taking a second look, I think that assertEqual() is a better choice.  assertTrue is generally used to verify a condition.  Here you\u0027re looking for a match which is the purpose of assetEqual.","commit_id":"dff40b4e94c347de03ec282289c38b137c5682ea"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"855893f09b9027b6bbcfc1fd8b4104969ca874c9","unresolved":false,"context_lines":[{"line_number":2784,"context_line":"                             \"name\u003d\u0027net_net\u0027, status\u003d\u0027OK\u0027, \""},{"line_number":2785,"context_line":"                             \"admin_state_up\u003dTrue, shared\u003dNone}\u003e\")"},{"line_number":2786,"context_line":"        expected_middle \u003d \"[object at %x]\" % id(network)"},{"line_number":2787,"context_line":"        expected_start_with \u003d \"\u003cquantum.db.models_v2.Network\""},{"line_number":2788,"context_line":"        self.assertTrue(actual_repr_output.startswith(expected_start_with))"},{"line_number":2789,"context_line":"        self.assertTrue(actual_repr_output.find(expected_middle) !\u003d -1)"},{"line_number":2790,"context_line":"        self.assertTrue(actual_repr_output.endswith(expected_end_with))"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2F5KI%3D","line":2787,"in_reply_to":"AAAAM3%2F%2F5fQ%3D","updated":"2012-12-24 14:45:52.000000000","message":"It was more \"readable\" for me. This is why I split it into 3 fragments.","commit_id":"dff40b4e94c347de03ec282289c38b137c5682ea"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"unresolved":false,"context_lines":[{"line_number":2785,"context_line":""},{"line_number":2786,"context_line":""},{"line_number":2787,"context_line":"class DbModelTestCase(unittest2.TestCase):"},{"line_number":2788,"context_line":"    \"\"\" Misc. DB tests \"\"\""},{"line_number":2789,"context_line":"    def test_repr(self):"},{"line_number":2790,"context_line":"        \"\"\" testing the string representation of \u0027model\u0027 classes \"\"\""},{"line_number":2791,"context_line":"        network \u003d models_v2.Network(name\u003d\"net_net\", status\u003d\"OK\","}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F4ug%3D","line":2788,"updated":"2012-12-26 08:50:58.000000000","message":"Doc string is incorrect","commit_id":"54f5aca04075a0c85837cc3045b56432ed5f1844"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"855893f09b9027b6bbcfc1fd8b4104969ca874c9","unresolved":false,"context_lines":[{"line_number":2785,"context_line":""},{"line_number":2786,"context_line":""},{"line_number":2787,"context_line":"class DbModelTestCase(unittest2.TestCase):"},{"line_number":2788,"context_line":"    \"\"\" Misc. DB tests \"\"\""},{"line_number":2789,"context_line":"    def test_repr(self):"},{"line_number":2790,"context_line":"        \"\"\" testing the string representation of \u0027model\u0027 classes \"\"\""},{"line_number":2791,"context_line":"        network \u003d models_v2.Network(name\u003d\"net_net\", status\u003d\"OK\","}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F4ok%3D","line":2788,"in_reply_to":"AAAAM3%2F%2F4ug%3D","updated":"2012-12-26 11:30:41.000000000","message":"Can you please explain what is wrong with it?","commit_id":"54f5aca04075a0c85837cc3045b56432ed5f1844"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"unresolved":false,"context_lines":[{"line_number":2795,"context_line":"                        \"name\u003d\u0027net_net\u0027, status\u003d\u0027OK\u0027, \""},{"line_number":2796,"context_line":"                        \"admin_state_up\u003dTrue, shared\u003dNone}\u003e\")"},{"line_number":2797,"context_line":"        exp_middle \u003d \"[object at %x]\" % id(network)"},{"line_number":2798,"context_line":"        exp_start_with \u003d \"\u003cquantum.db.models_v2.Network\""},{"line_number":2799,"context_line":"        final_exp \u003d exp_start_with + exp_middle + exp_end_with"},{"line_number":2800,"context_line":"        self.assertEqual(actual_repr_output, final_exp)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F4uY%3D","line":2798,"updated":"2012-12-26 08:50:58.000000000","message":"Shouldn\u0027t we at least sort the above three lines as start, middle, and end if we are considering readability?","commit_id":"54f5aca04075a0c85837cc3045b56432ed5f1844"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"855893f09b9027b6bbcfc1fd8b4104969ca874c9","unresolved":false,"context_lines":[{"line_number":2795,"context_line":"                        \"name\u003d\u0027net_net\u0027, status\u003d\u0027OK\u0027, \""},{"line_number":2796,"context_line":"                        \"admin_state_up\u003dTrue, shared\u003dNone}\u003e\")"},{"line_number":2797,"context_line":"        exp_middle \u003d \"[object at %x]\" % id(network)"},{"line_number":2798,"context_line":"        exp_start_with \u003d \"\u003cquantum.db.models_v2.Network\""},{"line_number":2799,"context_line":"        final_exp \u003d exp_start_with + exp_middle + exp_end_with"},{"line_number":2800,"context_line":"        self.assertEqual(actual_repr_output, final_exp)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2F4oU%3D","line":2798,"in_reply_to":"AAAAM3%2F%2F4uY%3D","updated":"2012-12-26 11:30:41.000000000","message":"Done","commit_id":"54f5aca04075a0c85837cc3045b56432ed5f1844"},{"author":{"_account_id":1994,"name":"Zhongyue Luo","email":"zhongyue.luo@gmail.com","username":"zyluo"},"unresolved":false,"context_lines":[{"line_number":2785,"context_line":""},{"line_number":2786,"context_line":""},{"line_number":2787,"context_line":"class DbModelTestCase(unittest2.TestCase):"},{"line_number":2788,"context_line":"    \"\"\" Misc. DB tests \"\"\""},{"line_number":2789,"context_line":"    def test_repr(self):"},{"line_number":2790,"context_line":"        \"\"\" testing the string representation of \u0027model\u0027 classes \"\"\""},{"line_number":2791,"context_line":"        network \u003d models_v2.Network(name\u003d\"net_net\", status\u003d\"OK\","}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2F4nw%3D","line":2788,"updated":"2012-12-26 11:54:57.000000000","message":"This is the same doc string with the one in the first patch. The class name was \"Misc\" and now it is \"DbModelTestCase\". Thus the doc string should be \"DB model tests\"","commit_id":"f604a0fd4f4299f712ca2433e71e2fdcc1a58d25"}]}
