Source code for labelbox.schema.identifiables

from typing import List, Union

from labelbox.schema.id_type import IdType


class Identifiables:

    def __init__(self, iterable, id_type: str):
        """
        Args:
            iterable: Iterable of ids (unique or global keys)
            id_type: The type of id used to identify a data row.
        """
        self._iterable = iterable
        self._id_type = id_type

    @property
    def id_type(self):
        return self._id_type

    def __iter__(self):
        return iter(self._iterable)

    def __getitem__(self, index):
        if isinstance(index, slice):
            ids = self._iterable[index]
            return self.__class__(ids)  # type: ignore
        return self._iterable[index]

    def __len__(self):
        return len(self._iterable)

    def __repr__(self) -> str:
        return f"{self.__class__.__name__}({self._iterable})"

    def __eq__(self, other: object) -> bool:
        if not isinstance(other, Identifiables):
            return False
        return self._iterable == other._iterable and self._id_type == other._id_type


[docs]class UniqueIds(Identifiables): """ Represents a collection of unique, internally generated ids. """ def __init__(self, iterable: List[str]): super().__init__(iterable, IdType.DataRowId)
[docs]class GlobalKeys(Identifiables): """ Represents a collection of user generated ids. """ def __init__(self, iterable: List[str]): super().__init__(iterable, IdType.GlobalKey)
DataRowIds = UniqueIds DataRowIdentifiers = Union[UniqueIds, GlobalKeys]