diff --git a/pyproject.toml b/pyproject.toml index 18fcd0e..8677108 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,7 +76,7 @@ filterwarnings = [ ] log_cli_level = "INFO" testpaths = [ - "tests", + "src", "tests", ] diff --git a/src/dataclasstools/_ext.py b/src/dataclasstools/_ext.py index 344cdcf..8c69e19 100644 --- a/src/dataclasstools/_ext.py +++ b/src/dataclasstools/_ext.py @@ -2,7 +2,7 @@ __all__ = ["field_keys", "field_values", "field_items"] -from collections.abc import Hashable, Iterator, Mapping +from collections.abc import Hashable, ItemsView, Iterator, KeysView, Mapping, ValuesView from typing import Any, TypeVar from plum import dispatch @@ -40,7 +40,7 @@ def field_keys(obj: Any, /) -> Iterator[str]: @dispatch # type: ignore[no-redef] # TODO: def field_keys(obj: Mapping[K, V]) -> Iterator[K]: -def field_keys(obj: Mapping[Hashable, Any]) -> Iterator[Hashable]: +def field_keys(obj: Mapping[Hashable, Any]) -> KeysView[Hashable]: """Return the keys of a mapping. Examples @@ -48,11 +48,11 @@ def field_keys(obj: Mapping[Hashable, Any]) -> Iterator[Hashable]: >>> from dataclasstools import field_keys >>> p = {"a": 1, "b": 2.0, "c": "3"} - >>> list(field_keys(p)) - ['a', 'b', 'c'] + >>> field_keys(p) + dict_keys(['a', 'b', 'c']) """ - yield from obj.keys() + return obj.keys() # =================================================================== @@ -83,7 +83,7 @@ def field_values(obj: Any, /) -> Iterator[Any]: @dispatch # type: ignore[no-redef] # TODO: def field_values(obj: Mapping[Any, V]) -> Iterator[V]: -def field_values(obj: Mapping[Any, Any]) -> Iterator[Any]: +def field_values(obj: Mapping[Any, Any]) -> ValuesView[Any]: """Return the values of a mapping. Examples @@ -91,11 +91,11 @@ def field_values(obj: Mapping[Any, Any]) -> Iterator[Any]: >>> from dataclasstools import field_values >>> p = {"a": 1, "b": 2.0, "c": "3"} - >>> list(field_values(p)) - [1, 2.0, '3'] + >>> field_values(p) + dict_values([1, 2.0, '3']) """ - yield from obj.values() + return obj.values() # =================================================================== @@ -126,7 +126,7 @@ def field_items(obj: Any) -> Iterator[tuple[str, Any]]: @dispatch # type: ignore[no-redef] # TODO: def field_items(obj: Mapping[K, V]) -> Iterator[tuple[K, V]]: -def field_items(obj: Mapping[Any, Any]) -> Iterator[tuple[Any, Any]]: +def field_items(obj: Mapping[Any, Any]) -> ItemsView[Any, Any]: """Return the items of a mapping. Examples @@ -134,8 +134,8 @@ def field_items(obj: Mapping[Any, Any]) -> Iterator[tuple[Any, Any]]: >>> from dataclasstools import field_items >>> p = {"a": 1, "b": 2.0, "c": "3"} - >>> list(field_items(p)) - [('a', 1), ('b', 2.0), ('c', '3')] + >>> field_items(p) + dict_items([('a', 1), ('b', 2.0), ('c', '3')]) """ - yield from obj.items() + return obj.items()