Skip to content

Commit 02ee993

Browse files
authored
Remove @cache decorator from get_default_value_for_field (#216)
* Remove @cache decorator from get_default_value_for_field * Fix default factory identity test for older Python versions
1 parent c076b8c commit 02ee993

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

dacite/dataclasses.py

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ class DefaultValueNotFoundError(Exception):
1111
pass
1212

1313

14-
@cache
1514
def get_default_value_for_field(field: Field, type_: Type) -> Any:
1615
if field.default != MISSING:
1716
return field.default

tests/core/test_base.py

+14-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from dataclasses import dataclass, field
2-
from typing import Any, NewType, Optional
2+
from typing import Any, NewType, Optional, List
33

44
import pytest
55

@@ -191,3 +191,16 @@ class X:
191191
result = from_dict(X, {"s": "test"})
192192

193193
assert result == X(s=MyStr("test"))
194+
195+
196+
def test_dataclass_default_factory_identity():
197+
# https://github.com/konradhalas/dacite/issues/215
198+
@dataclass
199+
class A:
200+
name: str
201+
items: List[str] = field(default_factory=list)
202+
203+
a1 = from_dict(A, {"name": "a1"})
204+
a2 = from_dict(A, {"name": "a2"})
205+
206+
assert a1.items is not a2.items

0 commit comments

Comments
 (0)