Add support for empty dataclass arguments (#3152)

A dataclass with no fields exposed a bug in `extract_dataclass_members`:

```
@dataclass
class Dummy:
  pass
```

The type/return path was inconsistent. This PR fixes the function to
support empty dataclasses, which are useful in unions.
This commit is contained in:
Nandor Licker
2026-04-17 03:47:47 +03:00
committed by GitHub
parent 08185b9c3e
commit 3f3db08a0a
2 changed files with 75 additions and 3 deletions

View File

@@ -192,7 +192,7 @@ class Leaf:
# =============================================================================
def extract_dataclass_members(x: Any) -> tuple[list[str], list[Any]]:
def extract_dataclass_members(x: Any) -> tuple[list[str], list[Any], list[Any]]:
"""
Extract non-method, non-function attributes from a dataclass instance.
@@ -200,7 +200,7 @@ def extract_dataclass_members(x: Any) -> tuple[list[str], list[Any]]:
x: A dataclass instance
Returns:
tuple: (field_names, field_values) lists
tuple: (field_names, field_values, constexpr_fields) lists
"""
fields = [field.name for field in dataclasses.fields(x)]
@@ -213,7 +213,7 @@ def extract_dataclass_members(x: Any) -> tuple[list[str], list[Any]]:
)
if not fields:
return [], []
return [], [], []
# record constexpr fields
members = []