22from dataclasses import dataclass
33from typing import Callable , Dict , List , Optional
44
5- from shiny ._utils import run_coro_hybrid
65from shiny .session import get_current_session
76
87from ._serialization import json_packer
@@ -46,7 +45,7 @@ def __init__(
4645 data : DataType = None ,
4746 metadata : MetadataType = None ,
4847 buffers : BufferType = None ,
49- ** keys : object
48+ ** keys : object ,
5049 ) -> None :
5150 self .comm_id = comm_id
5251 self .comm_manager = comm_manager
@@ -58,7 +57,7 @@ def open(
5857 data : DataType = None ,
5958 metadata : MetadataType = None ,
6059 buffers : BufferType = None ,
61- ** keys : object
60+ ** keys : object ,
6261 ) -> None :
6362 self .comm_manager .register_comm (self )
6463 try :
@@ -69,7 +68,7 @@ def open(
6968 buffers = buffers ,
7069 target_name = self .target_name ,
7170 target_module = None ,
72- ** keys
71+ ** keys ,
7372 )
7473 self ._closed = False
7574 except Exception :
@@ -120,7 +119,7 @@ def _publish_msg(
120119 data : DataType = None ,
121120 metadata : MetadataType = None ,
122121 buffers : BufferType = None ,
123- ** keys : object
122+ ** keys : object ,
124123 ) -> None :
125124 data = {} if data is None else data
126125 metadata = {} if metadata is None else metadata
@@ -166,10 +165,8 @@ def _publish_msg(
166165
167166 msg_txt = json_packer (msg )
168167
169- # In theory, it seems that this send could maybe be async (that we then asyncio.create_task() with),
170- # but that might mean that messages are sent out of order, which is not what we want.
171- def _send ():
172- run_coro_hybrid (session .send_custom_message (msg_type , msg_txt )) # type: ignore
168+ async def _send ():
169+ await session .send_custom_message (msg_type , msg_txt ) # type: ignore
173170
174171 # N.B., if messages are sent immediately, run_coro_sync() could fail with
175172 # 'async function yielded control; it did not finish in one iteration.'
0 commit comments