28
28
Optional ,
29
29
TypeVar ,
30
30
)
31
- from typing_extensions import TypedDict
32
31
33
- from pydantic import computed_field , Field
32
+ from pydantic import Field , computed_field
33
+ from typing_extensions import TypedDict
34
34
35
35
from guidellm .objects import StandardBaseModel
36
36
37
37
__all__ = [
38
38
"BackendInterface" ,
39
39
"BackendT" ,
40
+ "MeasuredRequestTimings" ,
41
+ "MeasuredRequestTimingsT" ,
40
42
"RequestSchedulerTimings" ,
41
43
"RequestT" ,
42
- "RequestTimings" ,
43
- "RequestTimingsT" ,
44
44
"ResponseT" ,
45
45
"ScheduledRequestInfo" ,
46
46
"SchedulerState" ,
@@ -82,7 +82,7 @@ class RequestSchedulerTimings(StandardBaseModel):
82
82
)
83
83
84
84
85
- class RequestTimings (StandardBaseModel ):
85
+ class MeasuredRequestTimings (StandardBaseModel ):
86
86
"""Base timing measurements for backend request processing."""
87
87
88
88
request_start : Optional [float ] = Field (
@@ -93,10 +93,12 @@ class RequestTimings(StandardBaseModel):
93
93
)
94
94
95
95
96
- RequestTimingsT = TypeVar ("RequestTimingsT" , bound = RequestTimings )
96
+ MeasuredRequestTimingsT = TypeVar (
97
+ "MeasuredRequestTimingsT" , bound = MeasuredRequestTimings
98
+ )
97
99
98
100
99
- class ScheduledRequestInfo (StandardBaseModel , Generic [RequestTimingsT ]):
101
+ class ScheduledRequestInfo (StandardBaseModel , Generic [MeasuredRequestTimingsT ]):
100
102
"""Complete request information including status, timings, and metadata."""
101
103
102
104
request_id : str = Field (description = "Unique identifier for the request" )
@@ -120,7 +122,7 @@ class ScheduledRequestInfo(StandardBaseModel, Generic[RequestTimingsT]):
120
122
default_factory = RequestSchedulerTimings ,
121
123
description = "Scheduler-level timing measurements for request lifecycle" ,
122
124
)
123
- request_timings : Optional [RequestTimingsT ] = Field (
125
+ request_timings : Optional [MeasuredRequestTimingsT ] = Field (
124
126
default = None ,
125
127
description = "Backend-specific timing measurements for request processing" ,
126
128
)
@@ -152,7 +154,7 @@ def completed_at(self) -> Optional[float]:
152
154
return request_end or self .scheduler_timings .resolve_end
153
155
154
156
155
- class BackendInterface (ABC , Generic [RequestT , RequestTimingsT , ResponseT ]):
157
+ class BackendInterface (ABC , Generic [RequestT , MeasuredRequestTimingsT , ResponseT ]):
156
158
"""
157
159
Abstract interface for request processing backends. Note: before process_startup
158
160
is invoked, the implementation must ensure all properties are pickleable.
@@ -204,9 +206,9 @@ async def process_shutdown(self) -> None:
204
206
async def resolve (
205
207
self ,
206
208
request : RequestT ,
207
- request_info : ScheduledRequestInfo [RequestTimingsT ],
209
+ request_info : ScheduledRequestInfo [MeasuredRequestTimingsT ],
208
210
history : Optional [list [tuple [RequestT , ResponseT ]]] = None ,
209
- ) -> AsyncIterator [tuple [ResponseT , ScheduledRequestInfo [RequestTimingsT ]]]:
211
+ ) -> AsyncIterator [tuple [ResponseT , ScheduledRequestInfo [MeasuredRequestTimingsT ]]]:
210
212
"""
211
213
Process a request and yield incremental response updates.
212
214
0 commit comments