code: def _paginate_dataset_collection(
      datasets: Collection[Dataset],
      page_size: Optional[int] = 0,
      page_index: Optional[int] = 0,
  ) -> Union[DictTuple[str, Dataset], DatasetPageView]:
      slice_ = _paginate_collection(
          datasets, page_size=page_size, page_index=page_index
      )
      chunk = datasets[slice_] if slice_ is not None else datasets
      results = DictTuple(chunk, lambda dataset: dataset.name)
  
      return (
          results
          if slice_ is None
          else DatasetPageView(datasets=results, total=len(datasets))
      )
  
imports: from collections.abc import Collection
  from typing import List
  from typing import Optional
  from typing import Union
  from ...serde.serializable import serializable
  from ...store.document_store import DocumentStore
  from ...types.dicttuple import DictTuple
  from ...types.uid import UID
  from ...util.telemetry import instrument
  from ..action.action_permissions import ActionObjectPermission
  from ..action.action_permissions import ActionPermission
  from ..context import AuthedServiceContext
  from ..response import SyftError
  from ..response import SyftSuccess
  from ..service import AbstractService
  from ..service import SERVICE_TO_TYPES
  from ..service import TYPE_TO_SERVICE
  from ..service import service_method
  from ..user.user_roles import DATA_OWNER_ROLE_LEVEL
  from ..user.user_roles import DATA_SCIENTIST_ROLE_LEVEL
  from ..user.user_roles import GUEST_ROLE_LEVEL
  from ..warnings import CRUDReminder
  from ..warnings import HighSideCRUDWarning
  from .dataset import Asset
  from .dataset import CreateDataset
  from .dataset import Dataset
  from .dataset import DatasetPageView
  from .dataset_stash import DatasetStash
label_desc: Use image node_id 2 for calling a global function with example usage: _paginate_dataset_collection(datasets, page_size, page_index) and returns: unknown