Skip to content

Commit 026ad58

Browse files
committed
unpack
1 parent 5018631 commit 026ad58

File tree

2 files changed

+23
-24
lines changed

2 files changed

+23
-24
lines changed

cadence/worker/_registry.py

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,22 @@
77
"""
88

99
import logging
10-
from typing import Callable, Dict, Optional
11-
from dataclasses import dataclass
10+
from typing import Callable, Dict, Optional, Unpack, TypedDict
1211

1312

1413
logger = logging.getLogger(__name__)
1514

1615

17-
@dataclass
18-
class RegisterWorkflowOptions:
16+
class RegisterWorkflowOptions(TypedDict, total=False):
1917
"""Options for registering a workflow."""
20-
name: Optional[str] = None
21-
alias: Optional[str] = None
18+
name: Optional[str]
19+
alias: Optional[str]
2220

2321

24-
@dataclass
25-
class RegisterActivityOptions:
22+
class RegisterActivityOptions(TypedDict, total=False):
2623
"""Options for registering an activity."""
27-
name: Optional[str] = None
28-
alias: Optional[str] = None
24+
name: Optional[str]
25+
alias: Optional[str]
2926

3027

3128
class Registry:
@@ -46,7 +43,7 @@ def __init__(self):
4643
def workflow(
4744
self,
4845
func: Optional[Callable] = None,
49-
**kwargs: RegisterWorkflowOptions
46+
**kwargs: Unpack[RegisterWorkflowOptions]
5047
) -> Callable:
5148
"""
5249
Register a workflow function.
@@ -66,18 +63,19 @@ def workflow(
6663
options = RegisterWorkflowOptions(**kwargs)
6764

6865
def decorator(f: Callable) -> Callable:
69-
workflow_name = options.name or f.__name__
66+
workflow_name = options.get('name') or f.__name__
7067

7168
if workflow_name in self._workflows:
7269
raise KeyError(f"Workflow '{workflow_name}' is already registered")
7370

7471
self._workflows[workflow_name] = f
7572

7673
# Register alias if provided
77-
if options.alias:
78-
if options.alias in self._workflow_aliases:
79-
raise KeyError(f"Workflow alias '{options.alias}' is already registered")
80-
self._workflow_aliases[options.alias] = workflow_name
74+
alias = options.get('alias')
75+
if alias:
76+
if alias in self._workflow_aliases:
77+
raise KeyError(f"Workflow alias '{alias}' is already registered")
78+
self._workflow_aliases[alias] = workflow_name
8179

8280
logger.info(f"Registered workflow '{workflow_name}'")
8381
return f
@@ -89,7 +87,7 @@ def decorator(f: Callable) -> Callable:
8987
def activity(
9088
self,
9189
func: Optional[Callable] = None,
92-
**kwargs: RegisterActivityOptions
90+
**kwargs: Unpack[RegisterActivityOptions]
9391
) -> Callable:
9492
"""
9593
Register an activity function.
@@ -109,18 +107,19 @@ def activity(
109107
options = RegisterActivityOptions(**kwargs)
110108

111109
def decorator(f: Callable) -> Callable:
112-
activity_name = options.name or f.__name__
110+
activity_name = options.get('name') or f.__name__
113111

114112
if activity_name in self._activities:
115113
raise KeyError(f"Activity '{activity_name}' is already registered")
116114

117115
self._activities[activity_name] = f
118116

119117
# Register alias if provided
120-
if options.alias:
121-
if options.alias in self._activity_aliases:
122-
raise KeyError(f"Activity alias '{options.alias}' is already registered")
123-
self._activity_aliases[options.alias] = activity_name
118+
alias = options.get('alias')
119+
if alias:
120+
if alias in self._activity_aliases:
121+
raise KeyError(f"Activity alias '{alias}' is already registered")
122+
self._activity_aliases[alias] = activity_name
124123

125124
logger.info(f"Registered activity '{activity_name}'")
126125
return f

tests/cadence/worker/test_registry.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ def test_options_class(self, registration_type):
170170
if registration_type == "workflow":
171171
options = RegisterWorkflowOptions(name="custom_name", alias="custom_alias")
172172

173-
@reg.workflow(**options.__dict__)
173+
@reg.workflow(**options)
174174
def test_func():
175175
return "test"
176176

@@ -179,7 +179,7 @@ def test_func():
179179
else:
180180
options = RegisterActivityOptions(name="custom_name", alias="custom_alias")
181181

182-
@reg.activity(**options.__dict__)
182+
@reg.activity(**options)
183183
def test_func():
184184
return "test"
185185

0 commit comments

Comments
 (0)