Skip to content

Commit

Permalink
feat: field returns for mapping (#12)
Browse files Browse the repository at this point in the history
* feat: field returns for mapping
* test: src test path

Signed-off-by: nstarman <nstarman@users.noreply.github.com>
  • Loading branch information
nstarman authored Jul 25, 2024
1 parent de0d4ca commit ed36117
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 14 deletions.
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ filterwarnings = [
]
log_cli_level = "INFO"
testpaths = [
"tests",
"src", "tests",
]


Expand Down
26 changes: 13 additions & 13 deletions src/dataclasstools/_ext.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -40,19 +40,19 @@ 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
--------
>>> 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()


# ===================================================================
Expand Down Expand Up @@ -83,19 +83,19 @@ 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
--------
>>> 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()


# ===================================================================
Expand Down Expand Up @@ -126,16 +126,16 @@ 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
--------
>>> 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()

0 comments on commit ed36117

Please sign in to comment.