Source code for reactpy.backend.types

from __future__ import annotations

import asyncio
from collections.abc import MutableMapping
from dataclasses import dataclass
from typing import Any, Callable, Generic, Protocol, TypeVar, runtime_checkable

from reactpy.core.types import RootComponentConstructor

_App = TypeVar("_App")


[docs]@runtime_checkable class BackendType(Protocol[_App]): """Common interface for built-in web server/framework integrations""" Options: Callable[..., Any] """A constructor for options passed to :meth:`BackendType.configure`"""
[docs] def configure( self, app: _App, component: RootComponentConstructor, options: Any | None = None, ) -> None: """Configure the given app instance to display the given component"""
[docs] def create_development_app(self) -> _App: """Create an application instance for development purposes"""
[docs] async def serve_development_app( self, app: _App, host: str, port: int, started: asyncio.Event | None = None, ) -> None: """Run an application using a development server"""
_Carrier = TypeVar("_Carrier")
[docs]@dataclass class Connection(Generic[_Carrier]): """Represents a connection with a client""" scope: MutableMapping[str, Any] """An ASGI scope or WSGI environment dictionary""" location: Location """The current location (URL)""" carrier: _Carrier """How the connection is mediated. For example, a request or websocket. This typically depends on the backend implementation. """
[docs]@dataclass class Location: """Represents the current location (URL) Analogous to, but not necessarily identical to, the client-side ``document.location`` object. """ pathname: str """the path of the URL for the location""" search: str """A search or query string - a '?' followed by the parameters of the URL. If there are no search parameters this should be an empty string """