Перейти к содержанию

Пагинация

PaginatedList[T] — lazy-контейнер для списочных ответов. Первая страница загружается при создании объекта, следующие страницы догружаются во время итерации. materialize() загружает все страницы и возвращает обычный список.

Bases: list[ItemT]

Ленивый list-like контейнер для элементов из последовательности страниц.

Контракт:

  • уже загруженные элементы читаются без повторных запросов;
  • чтение по индексу, slice и частичная итерация подгружают только нужные страницы;
  • materialize() выполняет явную полную загрузку всех оставшихся страниц.

loaded_count property

loaded_count: int

Количество элементов, уже загруженных локально.

known_total property

known_total: int | None

Общее количество элементов, если API вернул достоверный total.

source_total property

source_total: int | None

Общий total из API без ограничения локальным limit.

is_materialized property

is_materialized: bool

Показывает, загружены ли все страницы коллекции.

materialize

materialize() -> list[ItemT]

Явно загружает все страницы и возвращает snapshot-список.

AsyncPaginatedList[T] — async-аналог. Он не наследуется от list, читается через async for или await materialize() и не поддерживает конкурентную итерацию одного экземпляра из нескольких coroutine.

Ленивый async-контейнер страниц без list API.

Initialize AsyncPaginatedList.

loaded_count property

loaded_count: int

Количество элементов, уже загруженных локально.

known_total property

known_total: int | None

Общее количество элементов, если API вернул достоверный total.

source_total property

source_total: int | None

Общий total из API без ограничения локальным limit.

is_materialized property

is_materialized: bool

Показывает, загружены ли все страницы коллекции.

materialize async

materialize() -> list[ItemT]

Явно загружает все страницы и возвращает snapshot-список.

aload_until async

aload_until(index: int) -> None

Загружает страницы, пока локально не появится элемент с указанным индексом.