From ae49759f1e1147967df178cb1ee02044f65798b3 Mon Sep 17 00:00:00 2001 From: Nikhil Rao Date: Sat, 8 Apr 2023 22:47:42 -0700 Subject: [PATCH] Handle non-async middleware (#790) --- pynecone/app.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/pynecone/app.py b/pynecone/app.py index d8997656d..70fb2f94a 100644 --- a/pynecone/app.py +++ b/pynecone/app.py @@ -1,5 +1,6 @@ """The main Pynecone app.""" +import asyncio import inspect from typing import Any, Callable, Coroutine, Dict, List, Optional, Tuple, Type, Union @@ -167,9 +168,12 @@ class App(Base): An optional state to return. """ for middleware in self.middleware: - out = await middleware.preprocess(app=self, state=state, event=event) + if asyncio.iscoroutinefunction(middleware.preprocess): + out = await middleware.preprocess(app=self, state=state, event=event) + else: + out = middleware.preprocess(app=self, state=state, event=event) if out is not None: - return out + return out # type: ignore async def postprocess( self, state: State, event: Event, delta: Delta @@ -191,11 +195,16 @@ class App(Base): An optional state to return. """ for middleware in self.middleware: - out = await middleware.postprocess( - app=self, state=state, event=event, delta=delta - ) + if asyncio.iscoroutinefunction(middleware.postprocess): + out = await middleware.postprocess( + app=self, state=state, event=event, delta=delta + ) + else: + out = middleware.postprocess( + app=self, state=state, event=event, delta=delta + ) if out is not None: - return out + return out # type: ignore def add_middleware(self, middleware: Middleware, index: Optional[int] = None): """Add middleware to the app.