)]}'
{"oslo_utils/excutils.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"ec5a69663ea6f9a45b67531675db4f9e041794cf","unresolved":false,"context_lines":[{"line_number":313,"context_line":"    \"\"\""},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def __init__(self, should_ignore_ex):"},{"line_number":316,"context_line":"        self._should_ignore_ex \u003d should_ignore_ex"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        if all(hasattr(should_ignore_ex, a)"},{"line_number":319,"context_line":"               for a in functools.WRAPPER_ASSIGNMENTS):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_dd82f493","line":316,"updated":"2016-03-29 20:22:26.000000000","message":"Check that should_ignore_ex is callable and if not raise a value error. Pretty sure thats the intention right?","commit_id":"2af3ce364626cb26d06a1ef8948fc7664361db25"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"ce91b5f00f2edd308dd2a12dd849a2a4c32c1de8","unresolved":false,"context_lines":[{"line_number":313,"context_line":"    \"\"\""},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def __init__(self, should_ignore_ex):"},{"line_number":316,"context_line":"        self._should_ignore_ex \u003d should_ignore_ex"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        if all(hasattr(should_ignore_ex, a)"},{"line_number":319,"context_line":"               for a in functools.WRAPPER_ASSIGNMENTS):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_805ad34e","line":316,"in_reply_to":"ba0121b8_dd82f493","updated":"2016-03-29 21:40:48.000000000","message":"Tried this already, but unfortunately the return values of classmethod and staticmethod are not callable :/ (You have to call __get__ to get something bound to an object or class, which is callable, but it doesn\u0027t happen until after all decorators are processed.) I\u0027m open to ideas on ways around this.","commit_id":"2af3ce364626cb26d06a1ef8948fc7664361db25"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"468254f47ebcc77b19c83eb13d1d9ea4fafdc5f3","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        If the exception was the last to be raised, it will be re-raised with"},{"line_number":336,"context_line":"        its original traceback."},{"line_number":337,"context_line":"        \"\"\""},{"line_number":338,"context_line":"        exc_type, exc_val, traceback \u003d sys.exc_info()"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        if not self._should_ignore_ex(ex):"},{"line_number":341,"context_line":"            if exc_val is ex:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_3d87b0d8","line":338,"updated":"2016-03-29 20:18:42.000000000","message":"Kill these in a finally block just to be safe.\n\nLess cycles to traceback especially the better.","commit_id":"2af3ce364626cb26d06a1ef8948fc7664361db25"}]}
