from raven.contrib.flask import Sentry as FlaskSentry class FakeSentryClient(object): def captureException(self, *args, **kwargs): pass def user_context(self, *args, **kwargs): pass class FakeSentry(object): def __init__(self): self.client = FakeSentryClient() class Sentry(object): def __init__(self, app=None): self.app = app if app is not None: self.state = self.init_app(app) else: self.state = None def init_app(self, app): sentry_type = app.config.get('EXCEPTION_LOG_TYPE', 'FakeSentry') if sentry_type == 'Sentry': sentry = FlaskSentry(app) else: sentry = FakeSentry() # register extension with app app.extensions = getattr(app, 'extensions', {}) app.extensions['sentry'] = sentry return sentry def __getattr__(self, name): return getattr(self.state, name, None)