from typing import AsyncGenerator, Dict, List, Optional def demux(mapping: Dict[int, "HydroflowSink"]) -> "HydroflowSink": ... def null() -> "HydroflowNull": ... class HydroflowSource(object): def send_to(self, other: HydroflowSink) -> None: ... def tagged(self, tag: int) -> "HydroflowSource": ... class HydroflowSink(object): pass class Deployment(object): def __init__(self) -> None: ... def Localhost(self) -> "LocalhostHost": ... def GcpComputeEngineHost(self, project: str, machine_type: str, image: str, region: str, network: "GcpNetwork", user: Optional[str] = None) -> "GcpComputeEngineHost": ... def CustomService(self, on: "Host", external_ports: List[int]) -> "CustomService": ... def HydroflowCrate(self, src: str, on: "Host", bin: Optional[str] = None, example: Optional[str] = None, profile: Optional[str] = None, features: Optional[List[str]] = None, args: Optional[List[str]] = None, display_id: Optional[str] = None, external_ports: Optional[List[int]] = None) -> "HydroflowCrate": ... async def deploy(self): ... async def start(self): ... class Host(object): pass class LocalhostHost(Host): def client_only() -> "LocalhostHost": ... class GcpNetwork(object): def __init__(self, project: str, existing: Optional[str] = None) -> None: ... class GcpComputeEngineHost(Host): internal_ip: str external_ip: Optional[str] ssh_key_path: str class Service(object): async def stop(self) -> None: ... class CustomService(Service): def client_port(self) -> "CustomServicePort": ... class CustomServicePort(HydroflowSource, HydroflowSink): async def server_port(self) -> ServerPort: ... class HydroflowCrate(Service): ports: HydroflowCratePorts async def stdout(self) -> AsyncGenerator[str, None]: ... async def stderr(self) -> AsyncGenerator[str, None]: ... async def exit_code(self) -> int: ... class HydroflowCratePorts(object): def __getattribute__(self, __name: str) -> HydroflowCratePort: ... class HydroflowCratePort(HydroflowSource, HydroflowSink): def merge(self) -> "HydroflowCratePort": ... class HydroflowNull(HydroflowSource, HydroflowSink): pass class ServerPort(object): def json() -> object: ... async def into_sink() -> "PythonSink": ... async def into_source() -> "PythonStream": ... class PythonSink(object): async def send(self, data: bytes) -> None: ... class PythonStream(object): async def next(self) -> Optional[bytes]: ...