| 143 | def handle_preload_options(f): |
| 144 | """Extract preload options and return a wrapped callable.""" |
| 145 | def caller(ctx, *args, **kwargs): |
| 146 | app = ctx.obj.app |
| 147 | |
| 148 | preload_options = [o.name for o in app.user_options.get('preload', [])] |
| 149 | |
| 150 | if preload_options: |
| 151 | user_options = { |
| 152 | preload_option: kwargs[preload_option] |
| 153 | for preload_option in preload_options |
| 154 | } |
| 155 | |
| 156 | user_preload_options.send(sender=f, app=app, options=user_options) |
| 157 | |
| 158 | return f(ctx, *args, **kwargs) |
| 159 | |
| 160 | return update_wrapper(caller, f) |
| 161 | |