)]}'
{"shade/__init__.py":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"b31f6a8f78de4f2e1377a239b96a66dc2c700b09","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class OpenStackCloudException(Exception):"},{"line_number":61,"context_line":"    def __init__(self, message, extra_data\u003dNone):"},{"line_number":62,"context_line":"        super(OpenStackCloudException, self).__init__(message)"},{"line_number":63,"context_line":"        self.extra_data \u003d extra_data"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def __str__(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_4324daad","line":62,"updated":"2015-04-24 16:48:46.000000000","message":"Pass extra_data to super too. Exception will record everything in its \u0027args\u0027 attribute, which you can also use for extra_data, by referencing self.args[1], if you are so inclined.","commit_id":"c2272352ed7071e3848894b4f87d65afd6301c41"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"6f277ea98f9216c721cbf9ec9169f9778edf6b33","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        return Exception.__str__(self)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def __repr__(self):"},{"line_number":72,"context_line":"        return \"OpenStackCloudException(%s)\" % (\",\".join(map(repr, self.args)))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class OpenStackCloudTimeout(OpenStackCloudException):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bab921fb_5a0954dc","line":72,"updated":"2015-04-24 20:54:53.000000000","message":"Note that the default Exception __repr__ already does exactly this, except better. :) I may not have been clear that I discovered that before you went and wrote this one:\n\n\u003e\u003e\u003e class SuperException(Exception):\n...   pass\n... \n\u003e\u003e\u003e x \u003d SuperException(\u0027yay\u0027, 1)\n\u003e\u003e\u003e x\nSuperException(\u0027yay\u0027, 1)","commit_id":"4ea094ecec7087269b38b288fc865848de719abd"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"b49979263220dd263d44b6ea579b76e3b65cacf2","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        if self.extra_data is not None:"},{"line_number":67,"context_line":"            return \"%s (Extra: %s)\" % ("},{"line_number":68,"context_line":"                Exception.__str__(self), self.extra_data)"},{"line_number":69,"context_line":"        return Exception.__str__(self)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"class OpenStackCloudTimeout(OpenStackCloudException):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab921fb_51bdb6b5","line":69,"updated":"2015-04-24 22:46:42.000000000","message":"A quick local test shows me that you may still print the extra when str()ing self:\n\n  \u003e\u003e\u003e class E(Exception):\n  ...   def __init__(self, m, e):\n  ...     super(E, self).__init__(m, e)\n  ... \n  \u003e\u003e\u003e\n  \u003e\u003e\u003e ex \u003d E(\"message\", {1:2})\n  \u003e\u003e\u003e str(ex)\n  \"(\u0027message\u0027, {1: 2})\"\n  \u003e\u003e\u003e ex \u003d E(\"message\", None)\n  \u003e\u003e\u003e str(ex)\n  \"(\u0027message\u0027, None)\"","commit_id":"78d507f35dc7ede8b8170a02dc1e444f25a1410a"}]}
