Python version support¶
Now the minimum supported Python version is 3.9
.
API Changes¶
create_page
¶
create_page
function no longer accepts total
and params
arguments as positional.
Instead, it accepts total
and params
as keyword arguments.
Page.create
¶
Page.create
class method signature was changed. Now it accepts total
only as a keyword argument.
It was changed because total
is no longer a required argument and can be omitted in some cases.
New signature now looks like this:
@classmethod
def create(
cls,
items: Sequence[T],
params: AbstractParams,
**kwargs: Any,
) -> Self:
pass
Page.with_params
/Page.with_custom_options
¶
Page.with_params
and Page.with_custom_options
class methods where removed.
Now you need to use CustomizedPage
class to create a new page object with custom options.
Page.with_params
migration:
from typing import TypeVar
from fastapi_pagination import Page, Params
from fastapi_pagination.customization import CustomizedPage, UseParams
T = TypeVar("T")
class MyParams(Params):
...
# CustomPage = Page.with_params(MyParams)
CustomPage = CustomizedPage[
Page[T],
UseParams(MyParams),
]
Page.with_custom_options
migration:
from typing import TypeVar
from fastapi import Query
from fastapi_pagination import Page
from fastapi_pagination.customization import CustomizedPage, UseParamsFields
T = TypeVar("T")
# CustomPage = Page.with_custom_options(size=Query(100, ge=1, le=1000))
CustomPage = CustomizedPage[
Page[T],
UseParamsFields(size=Query(100, ge=1, le=1000)),
]
cls_name
, module
args migration:
from typing import TypeVar
from fastapi import Query
from fastapi_pagination import Page
from fastapi_pagination.customization import CustomizedPage, UseName, UseModule, UseParamsFields
T = TypeVar("T")
# CustomPage = Page.with_custom_options(
# size=Query(100, ge=1, le=1000),
# cls_name="CustomPage",
# module="my_module"
# )
CustomPage = CustomizedPage[
Page[T],
UseName("CustomPage"),
UseModule("my_module"),
UseParamsFields(size=Query(100, ge=1, le=1000)),
]
OptionalParams
/OptionalLimitOffsetParams
¶
OptionalParams
/OptionalLimitOffsetParams
classes were removed. Now you need to use UseOptionalParams
customization:
from typing import TypeVar
from fastapi_pagination import Page
from fastapi_pagination.customization import CustomizedPage, UseOptionalParams
T = TypeVar("T")
CustomPage = CustomizedPage[
Page[T],
UseOptionalParams(),
]
Extension Changes¶
fastapi_pagination.ext.sqlalchemy
¶
paginate_query
function was removed. Now you need to use create_paginate_query
function:
from fastapi_pagination.ext.sqlalchemy import create_paginate_query
Removed modules¶
The following modules have been removed from the library:
fastapi_pagination.ext.async_sqlalchemy
fastapi_pagination.ext.sqlalchemy_future
fastapi_pagination.ext.async_sqlmodel
If you were using any of these modules, you will need to update your code to use the fastapi_pagination.ext.sqlalchemy
module
for SQLAlchemy and fastapi_pagination.ext.sqlmodel
module for SQLModel.