Skip to content

Commit e173c4c

Browse files
authored
Remove opts on registration (#202)
* Remove opts on registration * Use constant retry policy on run * Use ctx.info.attempt * fix bug
1 parent d772d17 commit e173c4c

File tree

4 files changed

+15
-30
lines changed

4 files changed

+15
-30
lines changed

resonate/conventions/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ def timeout(self) -> int:
2121
return self.opts.timeout
2222

2323
def options(self, send_to: str | None, tags: dict[str, str] | None, timeout: int | None, version: int | None) -> None:
24-
self.opts.merge(timeout=timeout, tags=tags)
24+
self.opts = self.opts.merge(timeout=timeout, tags=tags)

resonate/resonate.py

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -106,36 +106,24 @@ def register[**P, R](
106106
/,
107107
*,
108108
name: str | None = None,
109-
send_to: str | None = None,
110-
timeout: int | None = None,
111109
version: int = 1,
112-
tags: dict[str, str] | None = None,
113-
retry_policy: RetryPolicy | None = None,
114110
) -> Function[P, R]: ...
115111
@overload
116112
def register[**P, R](
117113
self,
118114
*,
119115
name: str | None = None,
120-
send_to: str | None = None,
121-
timeout: int | None = None,
122116
version: int = 1,
123-
tags: dict[str, str] | None = None,
124-
retry_policy: RetryPolicy | None = None,
125117
) -> Callable[[Callable], Function[P, Any]]: ...
126118
def register[**P, R](
127119
self,
128120
*args: Callable | None,
129121
name: str | None = None,
130-
send_to: str | None = None,
131-
timeout: int | None = None,
132122
version: int = 1,
133-
tags: dict[str, str] | None = None,
134-
retry_policy: RetryPolicy | None = None,
135123
) -> Callable[[Callable], Function[P, R]] | Function[P, R]:
136124
def wrapper(func: Callable) -> Function[P, R]:
137125
self._registry.add(func.func if isinstance(func, Function) else func, name or func.__name__, version)
138-
return Function(self, name or func.__name__, func, self._opts.merge(send_to=send_to, version=version, timeout=timeout, tags=tags, retry_policy=retry_policy))
126+
return Function(self, name or func.__name__, func, self._opts.merge(version=version))
139127

140128
if args and callable(args[0]):
141129
return wrapper(args[0])

tests/test_bridge.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from resonate.message_sources.poller import Poller
1010
from resonate.resonate import Resonate
11-
from resonate.retry_policies import Constant
11+
from resonate.retry_policies.constant import Constant
1212
from resonate.stores.local import LocalStore
1313
from resonate.stores.remote import RemoteStore
1414

@@ -241,20 +241,16 @@ def test_basic_retries() -> None:
241241
# Use a different instance that only do local store
242242
resonate = Resonate()
243243

244-
n = 0
245-
246244
def retriable(ctx: Context) -> int:
247-
nonlocal n
248-
n += 1
249-
if n == 4:
250-
return n
245+
if ctx.info.attempt == 4:
246+
return ctx.info.attempt
251247
raise RuntimeError
252248

253-
f = resonate.register(retriable, retry_policy=Constant(delay=1, max_retries=3))
249+
f = resonate.register(retriable)
254250
resonate.start()
255251

256252
start_time = time.time()
257-
handle = f.run(f"retriable-{int(start_time)}")
253+
handle = f.options(retry_policy=Constant(delay=1, max_retries=3)).run(f"retriable-{int(start_time)}")
258254
result = handle.result()
259255
end_time = time.time()
260256

tests/test_resonate.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -162,11 +162,12 @@ def test_run(
162162
assert cmd_invoke(bridge) == invoke_with_opts
163163

164164
version = (version or 1) + 1
165-
f2 = resonate.register(func, name=name, send_to=send_to, version=version, timeout=timeout, tags=tags)
165+
166+
f2 = resonate.register(func, name=name, version=version)
166167
opts = opts.merge(version=version)
167168
invoke_with_opts.opts = opts
168169

169-
f2.run("f", *args, **kwargs)
170+
f2.options(timeout=timeout, tags=tags, send_to=send_to).run("f", *args, **kwargs)
170171
assert cmd_invoke(bridge) == invoke_with_opts
171172

172173
f2.options(**opts.to_dict()).run("f", *args, **kwargs)
@@ -240,10 +241,10 @@ def test_rpc(
240241
assert cmd_invoke(bridge) == invoke_with_opts
241242

242243
version = (version or 1) + 1
243-
f2 = resonate.register(func, name=name, send_to=send_to, version=version, timeout=timeout, tags=tags)
244+
f2 = resonate.register(func, name=name, version=version)
244245
invoke_with_opts.opts = invoke_with_opts.opts.merge(version=version)
245246

246-
f2.rpc("f", *args, **kwargs)
247+
f2.options(send_to=send_to, timeout=timeout, tags=tags).rpc("f", *args, **kwargs)
247248
assert cmd_invoke(bridge) == invoke_with_opts
248249

249250
f2.options(**opts.to_dict()).rpc("f", *args, **kwargs)
@@ -291,9 +292,9 @@ def baz(ctx: Context, a: int, b: str, /) -> int | str: ...
291292
@pytest.mark.parametrize(
292293
("func", "kwargs"),
293294
[
294-
(lambda x: x, {"name": "foo", "timeout": 1, "version": -1}),
295-
(lambda x: x, {"name": "foo", "timeout": -1, "version": 1}),
296-
(lambda x: x, {"timeout": 1, "version": 1}),
295+
(lambda x: x, {"name": "foo", "version": -1}),
296+
(lambda x: x, {"name": "foo", "version": 1}),
297+
(lambda x: x, {"version": 1}),
297298
(foo, {"version": 1}),
298299
(foo, {"version": 2}),
299300
(bar, {"version": 1}),

0 commit comments

Comments
 (0)