Skip to content

Commit 9638f31

Browse files
committed
feat: add asdict
1 parent dd82a34 commit 9638f31

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

fgpyo/util/metric.py

+14
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@
116116
117117
"""
118118

119+
import dataclasses
119120
from abc import ABC
120121
from enum import Enum
121122
from pathlib import Path
@@ -127,6 +128,8 @@
127128
from typing import List
128129
from typing import TypeVar
129130

131+
import attr
132+
130133
from fgpyo import io
131134
from fgpyo.util import inspect
132135

@@ -334,3 +337,14 @@ def fast_concat(*inputs: Path, output: Path) -> None:
334337
io.write_lines(
335338
path=output, lines_to_write=list(io.read_lines(input_path))[1:], append=True
336339
)
340+
341+
342+
def asdict(metric: Metric) -> dict[str, Any]:
343+
"""Convert a Metric instance to a dictionary."""
344+
345+
if dataclasses.is_dataclass(metric):
346+
return dataclasses.asdict(metric)
347+
elif attr.has(metric):
348+
return attr.asdict(metric)
349+
else:
350+
assert False, "Unreachable"

0 commit comments

Comments
 (0)