Custom paginate function usually should look like this:
fromtypingimportAny,Optional,Listfromfastapi_pagination.apiimportapply_items_transformer,create_pagefromfastapi_pagination.basesimportAbstractParamsfromfastapi_pagination.typesimportAdditionalData,SyncItemsTransformerfromfastapi_pagination.utilsimportverify_params# usually we call this function `paginate`defpaginate(items:List[Any],params:Optional[AbstractParams]=None,*,# transformer is a function that transforms items before# they are passed to page instantiationtransformer:Optional[SyncItemsTransformer]=None,# additional_data is a dictionary that contains additional data# that will be passed to page create methodadditional_data:Optional[AdditionalData]=None,)->Any:# validate input params to be of correct typeparams,raw_params=verify_params(params,"limit-offset")# apply pagination to itemsitems=items[raw_params.as_slice()]# calculate total number of items if neededtotal=len(items)ifraw_params.include_totalelseNone# apply transformer to itemst_items=apply_items_transformer(items,transformer)# create page object with paginated itemsreturncreate_page(t_items,params=params,total=total,**(additional_dataor{}),)