)]}'
{"marconi/common/decorators.py":[{"author":{"_account_id":6427,"name":"Kurt Griffiths","email":"kurt.griffiths@rackspace.com","username":"kgriffs"},"change_message_id":"17ed5a50c3389c6c71ab386a331e68f6478c8272","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    This decorator caches attributes by setting"},{"line_number":27,"context_line":"    them in the object itself."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    :returns: The attribute returned by __getattr__"},{"line_number":30,"context_line":"    \"\"\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @functools.wraps(meth)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FZ2E%3D","line":29,"updated":"2013-10-16 16:17:29.000000000","message":"This decorator actually returns a wrapper around __getattr__, not the return value of __getattr__, no?","commit_id":"432208eb0384a9707734d495321c8e8a7c5c83fa"}],"tests/unit/common/test_decorators.py":[{"author":{"_account_id":6427,"name":"Kurt Griffiths","email":"kurt.griffiths@rackspace.com","username":"kgriffs"},"change_message_id":"17ed5a50c3389c6c71ab386a331e68f6478c8272","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        instance \u003d TestClass()"},{"line_number":31,"context_line":"        result \u003d instance.testing"},{"line_number":32,"context_line":"        self.assertEqual(result, \u0027testing\u0027)"},{"line_number":33,"context_line":"        self.assertTrue(hasattr(instance, \u0027testing\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FZ18%3D","line":33,"updated":"2013-10-16 16:17:29.000000000","message":"This test succeeds even if __getattr__ is not decorated. Maybe try looking at __dict__ instead?","commit_id":"432208eb0384a9707734d495321c8e8a7c5c83fa"}]}
