import gunicorn.app.base
from flask import Flask


from typing import Any, Dict, Optional


class StandaloneApplication(gunicorn.app.base.BaseApplication):
    def __init__(self, app: Flask, options: Optional[Dict[str, Any]] = None):
        self.options = options or {}
        self.application = app
        super().__init__()

    def load_config(self):
        for key, value in self.options.items():
            self.cfg.set(key.lower(), value)

    def load(self):
        return self.application