@@ -126,7 +126,9 @@ def check_metric_type(self) -> Self:
126126 return self
127127
128128
129- def serialize_comma_string (input : Any , handler : SerializerFunctionWrapHandler ) -> str | None :
129+ def serialize_comma_string (
130+ input : Any , handler : SerializerFunctionWrapHandler
131+ ) -> str | None :
130132 if val := handler (input ):
131133 return "," .join (val )
132134 return None
@@ -140,11 +142,16 @@ class QueryParams(BaseModel):
140142
141143 Contrary to the name, this does not correlate directly to URL query parameters sent to Obelisk.
142144 """
145+
143146 dataset : str
144- groupBy : Annotated [list [FieldName ] | None , WrapSerializer (serialize_comma_string )] = None
147+ groupBy : Annotated [
148+ list [FieldName ] | None , WrapSerializer (serialize_comma_string )
149+ ] = None
145150 """List of Field Names to aggregate by as defined in Obelisk docs, None selects the server-side defaults."""
146151 aggregator : Aggregator | None = None
147- fields : Annotated [list [FieldName ] | None , WrapSerializer (serialize_comma_string )] = None
152+ fields : Annotated [
153+ list [FieldName ] | None , WrapSerializer (serialize_comma_string )
154+ ] = None
148155 """List of Field Names as defined in Obelisk docs, None selects the server-side defaults."""
149156 orderBy : Annotated [list [str ] | None , WrapSerializer (serialize_comma_string )] = None
150157 """List of Field Names, with their potential prefixes and suffixes, to select ordering. None user server defaults."""
@@ -170,7 +177,9 @@ def check_datatype_needed(self) -> Self:
170177 return self
171178
172179 def to_dict (self ) -> dict [str , Any ]:
173- return self .model_dump (exclude_none = True , by_alias = True , mode = 'json' , exclude = {"dataset" })
180+ return self .model_dump (
181+ exclude_none = True , by_alias = True , mode = "json" , exclude = {"dataset" }
182+ )
174183
175184
176185class ChunkedParams (BaseModel ):
@@ -180,6 +189,7 @@ class ChunkedParams(BaseModel):
180189 for example processing weeks of data one hour at a time.
181190 This limits memory useage.
182191 """
192+
183193 dataset : str
184194 groupBy : list [FieldName ] | None = None
185195 aggregator : Aggregator | None = None
@@ -228,6 +238,7 @@ def chunks(self) -> Iterator[QueryParams]:
228238
229239class QueryResult (BaseModel ):
230240 """The data returned by a single chunk fetch"""
241+
231242 cursor : str | None = None
232243 """Cursors always point to the next page of data matched by filters.
233244 They are none if there is no more data, they do not consider datapoint count limits."""
@@ -327,7 +338,7 @@ async def query(self, params: QueryParams) -> list[Datapoint]:
327338 result_limit = params .limit
328339
329340 # Obelisk CORE does not actually stop emitting a cursor when done, limit serves as page limit
330- params .limit = self .page_limit
341+ params .limit = min ( self .page_limit , result_limit )
331342
332343 while True :
333344 result : QueryResult = await self .fetch_single_chunk (params )
0 commit comments