1414
1515from replit_river .v2 .client_transport import ClientTransport
1616from replit_river .error_schema import ERROR_CODE_UNKNOWN , RiverError , RiverException
17- from replit_river .rpc import (
18- ErrorType ,
19- InitType ,
20- RequestType ,
21- ResponseType ,
22- )
2317from replit_river .transport_options import (
2418 HandshakeMetadataType ,
2519 TransportOptions ,
@@ -91,16 +85,16 @@ async def close(self) -> None:
9185 async def ensure_connected (self ) -> None :
9286 await self ._transport .get_or_create_session ()
9387
94- async def send_rpc (
88+ async def send_rpc [ R , A ] (
9589 self ,
9690 service_name : str ,
9791 procedure_name : str ,
98- request : RequestType ,
99- request_serializer : Callable [[RequestType ], Any ],
100- response_deserializer : Callable [[Any ], ResponseType ],
101- error_deserializer : Callable [[Any ], ErrorType ],
92+ request : R ,
93+ request_serializer : Callable [[R ], Any ],
94+ response_deserializer : Callable [[Any ], A ],
95+ error_deserializer : Callable [[Any ], RiverError ],
10296 timeout : timedelta ,
103- ) -> ResponseType :
97+ ) -> A :
10498 with _trace_procedure ("rpc" , service_name , procedure_name ) as span_handle :
10599 session = await self ._transport .get_or_create_session ()
106100 return await session .send_rpc (
@@ -114,17 +108,17 @@ async def send_rpc(
114108 timeout ,
115109 )
116110
117- async def send_upload (
111+ async def send_upload [ I , R , A ] (
118112 self ,
119113 service_name : str ,
120114 procedure_name : str ,
121- init : InitType | None ,
122- request : AsyncIterable [RequestType ],
123- init_serializer : Callable [[InitType ], Any ] | None ,
124- request_serializer : Callable [[RequestType ], Any ],
125- response_deserializer : Callable [[Any ], ResponseType ],
126- error_deserializer : Callable [[Any ], ErrorType ],
127- ) -> ResponseType :
115+ init : I | None ,
116+ request : AsyncIterable [R ],
117+ init_serializer : Callable [[I ], Any ] | None ,
118+ request_serializer : Callable [[R ], Any ],
119+ response_deserializer : Callable [[Any ], A ],
120+ error_deserializer : Callable [[Any ], RiverError ],
121+ ) -> A :
128122 with _trace_procedure ("upload" , service_name , procedure_name ) as span_handle :
129123 session = await self ._transport .get_or_create_session ()
130124 return await session .send_upload (
@@ -139,15 +133,15 @@ async def send_upload(
139133 span_handle .span ,
140134 )
141135
142- async def send_subscription (
136+ async def send_subscription [ R , E , A ] (
143137 self ,
144138 service_name : str ,
145139 procedure_name : str ,
146- request : RequestType ,
147- request_serializer : Callable [[RequestType ], Any ],
148- response_deserializer : Callable [[Any ], ResponseType ],
149- error_deserializer : Callable [[Any ], ErrorType ],
150- ) -> AsyncGenerator [ResponseType | RiverError , None ]:
140+ request : R ,
141+ request_serializer : Callable [[R ], Any ],
142+ response_deserializer : Callable [[Any ], A ],
143+ error_deserializer : Callable [[Any ], E ],
144+ ) -> AsyncGenerator [A | E , None ]:
151145 with _trace_procedure (
152146 "subscription" , service_name , procedure_name
153147 ) as span_handle :
@@ -165,17 +159,17 @@ async def send_subscription(
165159 _record_river_error (span_handle , msg )
166160 yield msg # type: ignore # https://github.com/python/mypy/issues/10817
167161
168- async def send_stream (
162+ async def send_stream [ I , R , E , A ] (
169163 self ,
170164 service_name : str ,
171165 procedure_name : str ,
172- init : InitType | None ,
173- request : AsyncIterable [RequestType ],
174- init_serializer : Callable [[InitType ], Any ] | None ,
175- request_serializer : Callable [[RequestType ], Any ],
176- response_deserializer : Callable [[Any ], ResponseType ],
177- error_deserializer : Callable [[Any ], ErrorType ],
178- ) -> AsyncGenerator [ResponseType | RiverError , None ]:
166+ init : I | None ,
167+ request : AsyncIterable [R ],
168+ init_serializer : Callable [[I ], Any ] | None ,
169+ request_serializer : Callable [[R ], Any ],
170+ response_deserializer : Callable [[Any ], A ],
171+ error_deserializer : Callable [[Any ], E ],
172+ ) -> AsyncGenerator [A | E , None ]:
179173 with _trace_procedure ("stream" , service_name , procedure_name ) as span_handle :
180174 session = await self ._transport .get_or_create_session ()
181175 async for msg in session .send_stream (
0 commit comments