Skip to content

Commit 0cc5233

Browse files
codewizdaveclaude
andcommitted
Add tests for DeepPartial type
Add comprehensive tests for DeepPartial including: - Basic usage with multiple fields - Multiple field types - Empty class - Class name preservation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 8c6ae6b commit 0cc5233

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

packages/typemap/tests/test_type_eval.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from typemap_extensions import (
2828
Attrs,
2929
Bool,
30+
DeepPartial,
3031
FromUnion,
3132
GenericCallable,
3233
GetArg,
@@ -2772,3 +2773,55 @@ def test_template_multiple_parts():
27722773
]
27732774
)
27742775
assert result == Literal["api/v1/users"]
2776+
2777+
2778+
##############
2779+
# DeepPartial tests
2780+
2781+
2782+
def test_deep_partial_basic():
2783+
"""Test DeepPartial makes all fields optional."""
2784+
2785+
class User:
2786+
name: str
2787+
age: int
2788+
2789+
result = eval_typing(DeepPartial[User])
2790+
assert result.__annotations__["name"] == str | None
2791+
assert result.__annotations__["age"] == int | None
2792+
2793+
2794+
def test_deep_partial_multiple_fields():
2795+
"""Test DeepPartial with multiple fields of different types."""
2796+
2797+
class User:
2798+
name: str
2799+
age: int
2800+
email: str
2801+
active: bool
2802+
2803+
result = eval_typing(DeepPartial[User])
2804+
assert result.__annotations__["name"] == str | None
2805+
assert result.__annotations__["age"] == int | None
2806+
assert result.__annotations__["email"] == str | None
2807+
assert result.__annotations__["active"] == bool | None
2808+
2809+
2810+
def test_deep_partial_empty_class():
2811+
"""Test DeepPartial with a class that has no fields."""
2812+
2813+
class Empty:
2814+
pass
2815+
2816+
result = eval_typing(DeepPartial[Empty])
2817+
assert result == Empty
2818+
2819+
2820+
def test_deep_partial_preserves_name():
2821+
"""Test DeepPartial creates a class with meaningful name."""
2822+
2823+
class User:
2824+
name: str
2825+
2826+
result = eval_typing(DeepPartial[User])
2827+
assert "DeepPartial" in result.__name__

0 commit comments

Comments
 (0)