2025-12-01
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
from collections.abc import Collection, Iterable, Mapping, ValuesView
|
||||
from typing import Any
|
||||
|
||||
__all__ = ["is_collection", "is_iterable"]
|
||||
|
||||
collection_types: Any = Collection
|
||||
if not isinstance({}.values(), Collection): # Python < 3.7.2
|
||||
collection_types = (Collection, ValuesView)
|
||||
iterable_types: Any = Iterable
|
||||
not_iterable_types: Any = (bytes, bytearray, memoryview, str, Mapping)
|
||||
|
||||
|
||||
def is_collection(value: Any) -> bool:
|
||||
"""Check if value is a collection, but not a string or a mapping."""
|
||||
return isinstance(value, collection_types) and not isinstance(
|
||||
value, not_iterable_types
|
||||
)
|
||||
|
||||
|
||||
def is_iterable(value: Any) -> bool:
|
||||
"""Check if value is an iterable, but not a string or a mapping."""
|
||||
return isinstance(value, iterable_types) and not isinstance(
|
||||
value, not_iterable_types
|
||||
)
|
||||
Reference in New Issue
Block a user