Skip to content

Commit 065d482

Browse files
committed
Add finished field to Job resource
1 parent 2bfaa00 commit 065d482

2 files changed

Lines changed: 21 additions & 2 deletions

File tree

metafold/api.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
from datetime import datetime, timezone
2-
from typing import Any, Union
2+
from functools import wraps
3+
from typing import Any, Callable, Optional, TypeVar, Union
4+
5+
T = TypeVar("T")
6+
U = TypeVar("U")
7+
8+
9+
def optional(f: Callable[[T], U]) -> Callable[[Optional[T]], Optional[U]]:
10+
"""Decorator to generate converters that accept optional values."""
11+
@wraps(f)
12+
def decorator(v: Optional[T]) -> Optional[U]:
13+
if v is None:
14+
return v
15+
return f(v)
16+
17+
return decorator
318

419

520
def asdatetime(s: Union[str, datetime]) -> datetime:

metafold/jobs.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from attrs import field, frozen
22
from datetime import datetime
3-
from metafold.api import asdatetime, asdict
3+
from metafold.api import asdatetime, asdict, optional
44
from metafold.assets import Asset
55
from metafold.client import Client
66
from metafold.exceptions import PollTimeout
@@ -32,6 +32,10 @@ class Job:
3232
type: str
3333
parameters: dict[str, Any]
3434
created: datetime = field(converter=asdatetime)
35+
finished: Optional[datetime] = field(
36+
converter=lambda v: optional(asdatetime)(v),
37+
default=None,
38+
)
3539
state: str
3640
assets: list[Asset] = field(converter=_assets)
3741
meta: dict[str, Any]

0 commit comments

Comments
 (0)