def init_app(self, app, **options):
        sd = options.setdefault
        conf = app.config

        sd('app_id', conf.get('PUSHER_APP_ID'))
        sd('key', conf.get('PUSHER_KEY'))
        sd('secret', conf.get('PUSHER_SECRET'))
        sd('ssl', conf.get('PUSHER_SSL', True))
        sd('host', conf.get('PUSHER_HOST'))
        sd('port', conf.get('PUSHER_PORT'))
        sd('cluster', conf.get('PUSHER_CLUSTER'))
        sd('backend', conf.get('PUSHER_BACKEND'))
        sd('json_encoder', (conf.get('PUSHER_JSON_ENCODER')
                            or app.json_encoder))
        sd('json_decoder', (conf.get('PUSHER_JSON_DECODER')
                            or app.json_decoder))
        if conf.get('PUSHER_TIMEOUT'):
            sd('timeout', conf.get('PUSHER_TIMEOUT'))

        super(Pusher, self).__init__(**options)

        if not hasattr(app, 'extensions'):
            app.extensions = {}
        app.extensions['pusher'] = self
Shuffle the client down the stack
dataset/ETHPy150Open Bekt/flask-pusher/flask_pusher.py/Pusher.init_app--crossover with--dataset/ETHPy150Open qtile/qtile/libqtile/layout/xmonad.py/MonadTall.cmd_shuffle_down