Skip to content

Commit 5a5c03b

Browse files
committed
fix: Don't return properties as parameters of dataclasses
Issue #232: #232
1 parent d863831 commit 5a5c03b

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

src/griffe/dataclasses.py

+1
Original file line numberDiff line numberDiff line change
@@ -1566,6 +1566,7 @@ def parameters(self) -> Parameters:
15661566
*[
15671567
Parameter(attr.name, annotation=attr.annotation, default=attr.value)
15681568
for attr in self.attributes.values()
1569+
if "property" not in attr.labels
15691570
],
15701571
)
15711572
return Parameters()

tests/test_dataclasses.py

+27-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import griffe
88
from griffe.dataclasses import Docstring, Module
99
from griffe.loader import GriffeLoader
10-
from griffe.tests import module_vtree, temporary_pypackage
10+
from griffe.tests import module_vtree, temporary_pypackage, temporary_visited_module
1111

1212

1313
def test_submodule_exports() -> None:
@@ -86,3 +86,29 @@ def test_alias_proxies() -> None:
8686
for name in cls.all_members:
8787
if not name.startswith("_") or name.startswith("__"):
8888
assert name in alias_members
89+
90+
91+
def test_dataclass_parameters() -> None:
92+
"""Don't return properties as parameters of dataclasses."""
93+
with temporary_visited_module(
94+
"""
95+
from dataclasses import dataclass
96+
from functools import cached_property
97+
98+
@dataclass
99+
class Point:
100+
x: float
101+
y: float
102+
103+
@property
104+
def a(self):
105+
return 0
106+
107+
@cached_property
108+
def b(self):
109+
return 0
110+
""",
111+
) as module:
112+
params = module["Point"].parameters
113+
assert "a" not in params
114+
assert "b" not in params

0 commit comments

Comments
 (0)