Source code for pinecone.models.imports.list
"""ImportList wrapper for listing responses."""
from __future__ import annotations
from collections.abc import Iterator
from typing import TYPE_CHECKING, Any
from pinecone.models.imports.model import ImportModel
if TYPE_CHECKING:
from pinecone.models.vectors.responses import Pagination
[docs]
class ImportList:
"""Wrapper around a list of ImportModel with convenience methods."""
[docs]
def __init__(
self,
imports: list[ImportModel],
*,
pagination: Pagination | None = None,
) -> None:
"""Initialize an ImportList.
Args:
imports: List of :class:`ImportModel` instances representing
bulk import operations.
pagination: Optional :class:`Pagination` token for fetching
additional pages of results.
"""
self._imports = imports
self.pagination = pagination
def __iter__(self) -> Iterator[ImportModel]:
return iter(self._imports)
def __len__(self) -> int:
return len(self._imports)
def __getitem__(self, index: int) -> ImportModel:
return self._imports[index]
[docs]
def to_dict(self) -> dict[str, Any]:
"""Return the list as a serializable dict.
Returns:
dict[str, Any]: A dict with a ``"data"`` key containing a list of
import dicts, each produced by :meth:`ImportModel.to_dict`. When the
wrapper has a pagination token, the dict also includes a
``"pagination"`` key with the token for fetching the next page.
Examples:
>>> from pinecone import Pinecone
>>> pc = Pinecone(api_key="your-api-key")
>>> index = pc.Index("product-search")
>>> imports = index.list_imports_paginated()
>>> imports.to_dict() # doctest: +SKIP
{'data': [{'id': 'import-abc123', ...}, {'id': 'import-def456', ...}]}
"""
result: dict[str, Any] = {"data": [i.to_dict() for i in self._imports]}
if self.pagination is not None:
result["pagination"] = self.pagination.to_dict()
return result
def __repr__(self) -> str:
summaries = ", ".join(
f"<id={i.id!r}, status={i.status!r}, percent={i.percent_complete}>"
for i in self._imports
)
return f"ImportList([{summaries}])"