"""Options for listing objects.Provides a thin wrappers around the options classes defined in the MLMD Py lib."""from__future__importannotationsfromdataclassesimportdataclassfromtypingimportAnyfrommr_openapiimportOrderByField,SortOrder
[docs]@dataclassclassListOptions:"""Options for listing objects. Attributes: limit: Maximum number of objects to return. order_by: Field to order by. is_asc: Whether to order in ascending order. Defaults to True. next_page_token: Token to use to retrieve next page of results. """limit:int|None=Noneorder_by:OrderByField|None=Noneis_asc:bool=Truenext_page_token:str|None=None
[docs]@classmethoddeforder_by_creation_time(cls,**kwargs)->ListOptions:"""Return options to order by creation time."""returncls(order_by=OrderByField.CREATE_TIME,**kwargs)
[docs]@classmethoddeforder_by_update_time(cls,**kwargs)->ListOptions:"""Return options to order by update time."""returncls(order_by=OrderByField.LAST_UPDATE_TIME,**kwargs)
[docs]@classmethoddeforder_by_id(cls,**kwargs)->ListOptions:"""Return options to order by ID."""returncls(order_by=OrderByField.ID,**kwargs)
[docs]defas_options(self)->dict[str,Any]:"""Convert to options dictionary."""options={}ifself.limitisnotNone:options["page_size"]=str(self.limit)ifself.order_byisnotNone:options["order_by"]=self.order_byifself.is_ascisnotNone:options["sort_order"]=SortOrder.ASCifself.is_ascelseSortOrder.DESCifself.next_page_tokenisnotNone:options["next_page_token"]=self.next_page_tokenreturnoptions