)]}'
{"novaclient/shell.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"87bdad5d1ac63db34da6c72e13799a11f000ddea","unresolved":false,"context_lines":[{"line_number":31,"context_line":"import sys"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"HAS_KEYRING \u003d False"},{"line_number":34,"context_line":"all_errors \u003d (ValueError)"},{"line_number":35,"context_line":"try:"},{"line_number":36,"context_line":"    import keyring"},{"line_number":37,"context_line":"    HAS_KEYRING \u003d True"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOH%2F%2F%2B2E%3D","line":34,"updated":"2013-03-18 16:12:43.000000000","message":"You are aware that this is not a tuple, yes?  It doesn\u0027t cause any problems in what follows, but I\u0027d suggest either eliminating the parentheses or turning this into a real tuple (adding a comma).","commit_id":"2343e5b131d83574ea6ac7ba6fe34478931fe22a"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"d7c32ee9415ba97b03416285ae8a60c1ca223db7","unresolved":false,"context_lines":[{"line_number":31,"context_line":"import sys"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"HAS_KEYRING \u003d False"},{"line_number":34,"context_line":"all_errors \u003d (ValueError)"},{"line_number":35,"context_line":"try:"},{"line_number":36,"context_line":"    import keyring"},{"line_number":37,"context_line":"    HAS_KEYRING \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F10E%3D","line":34,"updated":"2013-03-25 14:57:49.000000000","message":"Just pointing out that this is still not a tuple.  Please, either make it one or eliminate the parentheses…","commit_id":"e4042df18d3839ea51e3cc0ba184df4250551bf7"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"eb4532ed1dd10e02a4b8e096e5076f70f7f98e3e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"import sys"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"HAS_KEYRING \u003d False"},{"line_number":34,"context_line":"all_errors \u003d (ValueError)"},{"line_number":35,"context_line":"try:"},{"line_number":36,"context_line":"    import keyring"},{"line_number":37,"context_line":"    HAS_KEYRING \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F0b8%3D","line":34,"in_reply_to":"AAAAOH%2F%2F10E%3D","updated":"2013-03-26 11:24:52.000000000","message":"Done","commit_id":"e4042df18d3839ea51e3cc0ba184df4250551bf7"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e7a251ad41e5f4f4f2557de215c3079f8d0497b2","unresolved":false,"context_lines":[{"line_number":31,"context_line":"import sys"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"HAS_KEYRING \u003d False"},{"line_number":34,"context_line":"all_errors \u003d [ValueError]"},{"line_number":35,"context_line":"try:"},{"line_number":36,"context_line":"    import keyring"},{"line_number":37,"context_line":"    HAS_KEYRING \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2F0DY%3D","line":34,"updated":"2013-03-26 15:43:58.000000000","message":"Now you\u0027ve changed it into a list; this does not work as you are expecting:\n\n    \u003e\u003e\u003e all_errors \u003d [ValueError, TypeError]\n    \u003e\u003e\u003e try:\n    ...     raise ValueError(\"foo\")\n    ... except all_errors as exc:\n    ...     print exc\n    ... \n    Traceback (most recent call last):\n      File \"\u003cstdin\u003e\", line 2, in \u003cmodule\u003e\n    ValueError: foo\n\nSo, all_errors must be either an exception class or a tuple of exception classes; a list simply isn\u0027t going to cut it.","commit_id":"ee29b9cdff723de2b1f794aa3bd355944054b9cc"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"aefff0080f75f92141c6664682640b37b7232d6c","unresolved":false,"context_lines":[{"line_number":31,"context_line":"import sys"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"HAS_KEYRING \u003d False"},{"line_number":34,"context_line":"all_errors \u003d [ValueError]"},{"line_number":35,"context_line":"try:"},{"line_number":36,"context_line":"    import keyring"},{"line_number":37,"context_line":"    HAS_KEYRING \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2F0Cg%3D","line":34,"in_reply_to":"AAAAOH%2F%2F0C8%3D","updated":"2013-03-26 15:54:32.000000000","message":"Yes, that\u0027ll work perfectly fine; it\u0027s one of the options I\u0027ve suggested from the very beginning, in fact :)","commit_id":"ee29b9cdff723de2b1f794aa3bd355944054b9cc"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a14d3611138a6550cb794dcda7f3652475a468a7","unresolved":false,"context_lines":[{"line_number":31,"context_line":"import sys"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"HAS_KEYRING \u003d False"},{"line_number":34,"context_line":"all_errors \u003d [ValueError]"},{"line_number":35,"context_line":"try:"},{"line_number":36,"context_line":"    import keyring"},{"line_number":37,"context_line":"    HAS_KEYRING \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2Fz9Q%3D","line":34,"in_reply_to":"AAAAOH%2F%2F0CU%3D","updated":"2013-03-26 17:12:17.000000000","message":":)","commit_id":"ee29b9cdff723de2b1f794aa3bd355944054b9cc"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"c103793ef5896d9e1a99474bc69ce7e7d1960e79","unresolved":false,"context_lines":[{"line_number":31,"context_line":"import sys"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"HAS_KEYRING \u003d False"},{"line_number":34,"context_line":"all_errors \u003d [ValueError]"},{"line_number":35,"context_line":"try:"},{"line_number":36,"context_line":"    import keyring"},{"line_number":37,"context_line":"    HAS_KEYRING \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2F0CU%3D","line":34,"in_reply_to":"AAAAOH%2F%2F0Cg%3D","updated":"2013-03-26 15:59:34.000000000","message":"My bad. Need coffee!","commit_id":"ee29b9cdff723de2b1f794aa3bd355944054b9cc"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"88c2d6081ebfd8023877802df61de9c4e747f7b7","unresolved":false,"context_lines":[{"line_number":31,"context_line":"import sys"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"HAS_KEYRING \u003d False"},{"line_number":34,"context_line":"all_errors \u003d [ValueError]"},{"line_number":35,"context_line":"try:"},{"line_number":36,"context_line":"    import keyring"},{"line_number":37,"context_line":"    HAS_KEYRING \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2F0C8%3D","line":34,"in_reply_to":"AAAAOH%2F%2F0DY%3D","updated":"2013-03-26 15:48:44.000000000","message":"Sorry i got confused, i\u0027ll go back to just the following\n\n    all_errors \u003d ValueError\n\nIs that ok?","commit_id":"ee29b9cdff723de2b1f794aa3bd355944054b9cc"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"f3a33529c05e1d60d8f08dc7933f929d116b3b5a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            import gnomekeyring"},{"line_number":41,"context_line":"            all_errors \u003d (ValueError,"},{"line_number":42,"context_line":"                          gnomekeyring.IOError,"},{"line_number":43,"context_line":"                          gnomekeyring.NoKeyringDaemonError)"},{"line_number":44,"context_line":"    except Exception:"},{"line_number":45,"context_line":"        pass"},{"line_number":46,"context_line":"except ImportError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOH%2F%2Fz88%3D","line":43,"updated":"2013-03-26 17:14:32.000000000","message":"Hmmm…the previous code uses a traditional IOError in the no-gnomekeyring case.  Is that an error we can expect the other keyring implementations might raise?","commit_id":"2e5c1a1a4d08a829b2c85e98fce889eead5bb8b4"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"29cc17b830272bd82886bb4ea76ea91bd07c51b2","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            import gnomekeyring"},{"line_number":41,"context_line":"            all_errors \u003d (ValueError,"},{"line_number":42,"context_line":"                          gnomekeyring.IOError,"},{"line_number":43,"context_line":"                          gnomekeyring.NoKeyringDaemonError)"},{"line_number":44,"context_line":"    except Exception:"},{"line_number":45,"context_line":"        pass"},{"line_number":46,"context_line":"except ImportError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOH%2F%2Fwyo%3D","line":43,"in_reply_to":"AAAAOH%2F%2Fz88%3D","updated":"2013-03-28 15:35:32.000000000","message":"Kevin, no, i had added that just to have something there to catch :)","commit_id":"2e5c1a1a4d08a829b2c85e98fce889eead5bb8b4"}]}
