From ede4fe2120d6d867259bdd178751cf3754d963e3 Mon Sep 17 00:00:00 2001 From: Winston Chang Date: Tue, 16 Jan 2024 13:14:21 -0600 Subject: [PATCH 1/2] Fixes for flake8 --- shiny/_utils.py | 4 ++-- shiny/render/renderer/_renderer.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/shiny/_utils.py b/shiny/_utils.py index 23e67af6e..4ac7b10a7 100644 --- a/shiny/_utils.py +++ b/shiny/_utils.py @@ -393,7 +393,7 @@ def _step(fut: Optional["asyncio.Future[None]"] = None): assert fut.done() try: fut.result() - except BaseException as e: + except BaseException as e: # noqa: B036 exc = e if result_future.cancelled(): @@ -419,7 +419,7 @@ def _step(fut: Optional["asyncio.Future[None]"] = None): except (KeyboardInterrupt, SystemExit) as e: result_future.set_exception(e) raise - except BaseException as e: + except BaseException as e: # noqa: B036 result_future.set_exception(e) else: # If we get here, the coro didn't finish. Schedule it for completion. diff --git a/shiny/render/renderer/_renderer.py b/shiny/render/renderer/_renderer.py index 0be14fc23..34bd76f1e 100644 --- a/shiny/render/renderer/_renderer.py +++ b/shiny/render/renderer/_renderer.py @@ -225,7 +225,7 @@ class AsyncValueFn(Generic[IT]): def __init__(self, fn: Callable[[], IT] | Callable[[], Awaitable[IT]]): if isinstance(fn, AsyncValueFn): - return cast(AsyncValueFn[IT], fn) + return self._is_async = is_async_callable(fn) self._fn = wrap_async(fn) self._orig_fn = fn From 976061f9cc5fd47dcc7fe3ffb689eb31db7fbc5b Mon Sep 17 00:00:00 2001 From: Winston Chang Date: Tue, 16 Jan 2024 13:38:19 -0600 Subject: [PATCH 2/2] Raise if AsyncValueFn is passed an AsyncValueFn --- shiny/render/renderer/_renderer.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shiny/render/renderer/_renderer.py b/shiny/render/renderer/_renderer.py index 34bd76f1e..cb0bbd04a 100644 --- a/shiny/render/renderer/_renderer.py +++ b/shiny/render/renderer/_renderer.py @@ -225,7 +225,9 @@ class AsyncValueFn(Generic[IT]): def __init__(self, fn: Callable[[], IT] | Callable[[], Awaitable[IT]]): if isinstance(fn, AsyncValueFn): - return + raise TypeError( + "Must not call `AsyncValueFn.__init__` with an object of class `AsyncValueFn`" + ) self._is_async = is_async_callable(fn) self._fn = wrap_async(fn) self._orig_fn = fn