Skip to content
This repository was archived by the owner on Aug 25, 2024. It is now read-only.

Commit 39f88dd

Browse files
committed
base: config _asdict recursive export
Signed-off-by: John Andersen <[email protected]>
1 parent ef1e991 commit 39f88dd

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

dffml/base.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@ def get_args(t):
2626

2727

2828
from .util.cli.arg import Arg
29-
from .util.data import traverse_config_set, traverse_config_get, type_lookup
29+
from .util.data import (
30+
traverse_config_set,
31+
traverse_config_get,
32+
type_lookup,
33+
export_dict,
34+
)
3035

3136
from .util.entrypoint import Entrypoint
3237

@@ -221,6 +226,10 @@ def field(description: str, *args, metadata: Optional[dict] = None, **kwargs):
221226
return dataclasses.field(*args, metadata=metadata, **kwargs)
222227

223228

229+
def config_asdict(self, *args, **kwargs):
230+
return export_dict(**dataclasses.asdict(self, *args, **kwargs))
231+
232+
224233
def config(cls):
225234
"""
226235
Decorator to create a dataclass
@@ -230,9 +239,7 @@ def config(cls):
230239
datacls._replace = lambda self, *args, **kwargs: dataclasses.replace(
231240
self, *args, **kwargs
232241
)
233-
datacls._asdict = lambda self, *args, **kwargs: dataclasses.asdict(
234-
self, *args, **kwargs
235-
)
242+
datacls._asdict = config_asdict
236243
return datacls
237244

238245

@@ -249,12 +256,7 @@ def make_config(cls_name: str, fields, *args, namespace=None, **kwargs):
249256
self, *args, **kwargs
250257
),
251258
)
252-
namespace.setdefault(
253-
"_asdict",
254-
lambda self, *args, **kwargs: dataclasses.asdict(
255-
self, *args, **kwargs
256-
),
257-
)
259+
namespace.setdefault("_asdict", config_asdict)
258260
kwargs["eq"] = True
259261
kwargs["init"] = True
260262
# Ensure non-default arguments always come before default arguments

0 commit comments

Comments
 (0)