2828 Optional ,
2929 TypeVar ,
3030)
31- from typing_extensions import TypedDict
3231
33- from pydantic import computed_field , Field
32+ from pydantic import Field , computed_field
33+ from typing_extensions import TypedDict
3434
3535from guidellm .objects import StandardBaseModel
3636
3737__all__ = [
3838 "BackendInterface" ,
3939 "BackendT" ,
40+ "MeasuredRequestTimings" ,
41+ "MeasuredRequestTimingsT" ,
4042 "RequestSchedulerTimings" ,
4143 "RequestT" ,
42- "RequestTimings" ,
43- "RequestTimingsT" ,
4444 "ResponseT" ,
4545 "ScheduledRequestInfo" ,
4646 "SchedulerState" ,
@@ -82,7 +82,7 @@ class RequestSchedulerTimings(StandardBaseModel):
8282 )
8383
8484
85- class RequestTimings (StandardBaseModel ):
85+ class MeasuredRequestTimings (StandardBaseModel ):
8686 """Base timing measurements for backend request processing."""
8787
8888 request_start : Optional [float ] = Field (
@@ -93,10 +93,12 @@ class RequestTimings(StandardBaseModel):
9393 )
9494
9595
96- RequestTimingsT = TypeVar ("RequestTimingsT" , bound = RequestTimings )
96+ MeasuredRequestTimingsT = TypeVar (
97+ "MeasuredRequestTimingsT" , bound = MeasuredRequestTimings
98+ )
9799
98100
99- class ScheduledRequestInfo (StandardBaseModel , Generic [RequestTimingsT ]):
101+ class ScheduledRequestInfo (StandardBaseModel , Generic [MeasuredRequestTimingsT ]):
100102 """Complete request information including status, timings, and metadata."""
101103
102104 request_id : str = Field (description = "Unique identifier for the request" )
@@ -120,7 +122,7 @@ class ScheduledRequestInfo(StandardBaseModel, Generic[RequestTimingsT]):
120122 default_factory = RequestSchedulerTimings ,
121123 description = "Scheduler-level timing measurements for request lifecycle" ,
122124 )
123- request_timings : Optional [RequestTimingsT ] = Field (
125+ request_timings : Optional [MeasuredRequestTimingsT ] = Field (
124126 default = None ,
125127 description = "Backend-specific timing measurements for request processing" ,
126128 )
@@ -152,7 +154,7 @@ def completed_at(self) -> Optional[float]:
152154 return request_end or self .scheduler_timings .resolve_end
153155
154156
155- class BackendInterface (ABC , Generic [RequestT , RequestTimingsT , ResponseT ]):
157+ class BackendInterface (ABC , Generic [RequestT , MeasuredRequestTimingsT , ResponseT ]):
156158 """
157159 Abstract interface for request processing backends. Note: before process_startup
158160 is invoked, the implementation must ensure all properties are pickleable.
@@ -204,9 +206,9 @@ async def process_shutdown(self) -> None:
204206 async def resolve (
205207 self ,
206208 request : RequestT ,
207- request_info : ScheduledRequestInfo [RequestTimingsT ],
209+ request_info : ScheduledRequestInfo [MeasuredRequestTimingsT ],
208210 history : Optional [list [tuple [RequestT , ResponseT ]]] = None ,
209- ) -> AsyncIterator [tuple [ResponseT , ScheduledRequestInfo [RequestTimingsT ]]]:
211+ ) -> AsyncIterator [tuple [ResponseT , ScheduledRequestInfo [MeasuredRequestTimingsT ]]]:
210212 """
211213 Process a request and yield incremental response updates.
212214
0 commit comments