def get_collection_iterator(self, context: Context) -> Iterator[Any]:
collection = self._accessor.perform_access(context)
if isinstance(collection, collections.abc.Set): # type: ignore (mypy does not know about collections.abc)
return iter(collection)
elif isinstance(collection, collections.abc.Sequence): # type: ignore (mypy does not know about collections.abc)
return enumerate(collection) # yields (index, element) tuples
elif isinstance(collection, collections.abc.Mapping): # type: ignore (mypy does not know about collections.abc)
return iter(collection.items()) # yields (key, element) tuples
else:
raise ValueError(
'During iteration {0!r}: '
'collection object of type {1!r} could not be identified as Set, Sequence or Dictionary. '
'It should inherit from collections.abc.Set, collections.abc.Sequence, or collections.abc.Mapping.'
.format(self, type(collection)))
评论列表
文章目录