def websocket_session(func: typing.Callable) -> ASGIApp:
    """
    Takes a coroutine `func(session)`, and returns an ASGI application.
    """
    # assert asyncio.iscoroutinefunction(func), "WebSocket endpoints must be async"

    async def app(scope: Scope, receive: Receive, send: Send) -> None:
        session = WebSocket(scope, receive=receive, send=send)
        await func(session)

    return app
def websocket_session(func: typing.Callable) -> ASGIApp:
    """
    Takes a coroutine `func(session)`, and returns an ASGI application.
    """
    # assert asyncio.iscoroutinefunction(func), "WebSocket endpoints must be async"

    async def app(scope: Scope, receive: Receive, send: Send) -> None:
        session = WebSocket(scope, receive=receive, send=send)
        await func(session)

    return app
def websocket_session ( func : typing . Callable ) -> ASGIApp : # assert asyncio.iscoroutinefunction(func), "WebSocket endpoints must be async" async def app ( scope : Scope , receive : Receive , send : Send ) -> None : session = WebSocket ( scope , receive = receive , send = send ) await func ( session ) return app
Takes a coroutine `func(session)`, and returns an ASGI application.
Takes a coroutine func ( session ) and returns an ASGI application .