# The aim is to replace the Quart class exception handling defaults to # allow for Werkzeug HTTPExceptions to be considered in a special way # (like the quart HTTPException). In addition a Flask reference is # created. try: from werkzeug.exceptions import HTTPException # type: ignore except ImportError: class HTTPException: # type: ignore pass from quart import Response from quart.app import Quart old_handle_user_exception = Quart.handle_user_exception async def new_handle_user_exception(self, error: Exception) -> Response: # type: ignore if isinstance(error, HTTPException): return await self.handle_http_exception(error) else: return await old_handle_user_exception(self, error) Quart.handle_user_exception = new_handle_user_exception # type: ignore old_handle_http_exception = Quart.handle_http_exception async def new_handle_http_exception(self, error: Exception) -> Response: # type: ignore if isinstance(error, HTTPException): handler = self._find_exception_handler(error) if handler is None: werkzeug_response = error.get_response() return await self.make_response(( werkzeug_response.get_data(), werkzeug_response.status_code, werkzeug_response.headers, )) else: return await handler(error) else: return await old_handle_http_exception(self, error) Quart.handle_http_exception = new_handle_http_exception # type: ignore Flask = Quart __all__ = ('Quart',)