From e5d412204f7f9c74fb651e833f13fe93dcf68c62 Mon Sep 17 00:00:00 2001 From: Remy Tuyeras Date: Fri, 7 Nov 2025 08:55:53 -0500 Subject: [PATCH 1/2] deprecate Flow.ready(); now use Flow.compile_arrow_patterns() --- simulations/simul_flow_1.py | 2 +- simulations/simul_flow_2.py | 2 +- summoner/client/client.py | 2 +- summoner/protocol/flow.py | 18 ++++++++++++++++++ tests/test_flow.py | 2 +- tests/test_process.py | 2 +- 6 files changed, 23 insertions(+), 5 deletions(-) diff --git a/simulations/simul_flow_1.py b/simulations/simul_flow_1.py index 606e070..6afa777 100644 --- a/simulations/simul_flow_1.py +++ b/simulations/simul_flow_1.py @@ -43,7 +43,7 @@ flow.add_arrow_style(stem="-", brackets=("[", "]"), separator=",", tip=">") flow.add_arrow_style(stem="=", brackets=("{", "}"), separator=";", tip=")") -flow.ready() +flow.compile_arrow_patterns() print(flow.arrows) tests = [ "/all", diff --git a/simulations/simul_flow_2.py b/simulations/simul_flow_2.py index 8689523..5da4bb3 100644 --- a/simulations/simul_flow_2.py +++ b/simulations/simul_flow_2.py @@ -22,7 +22,7 @@ Trigger = flow.triggers() flow.add_arrow_style(stem="-", brackets=("[", "]"), separator=",", tip=">") flow.add_arrow_style(stem="=", brackets=("{", "}"), separator=";", tip=")") -flow.ready() # regex +flow.compile_arrow_patterns() # regex # List of available Action classes ACTIONS = [Move, Stay, Test] diff --git a/summoner/client/client.py b/summoner/client/client.py index 2ed7516..52e8d81 100644 --- a/summoner/client/client.py +++ b/summoner/client/client.py @@ -184,7 +184,7 @@ def _apply_config(self, config: dict[str,Union[str,dict[str,Union[str,dict]]]]): self.logger.warning(f"queue_maxsize < concurrency_limit; back-pressure will throttle producers at {self.send_queue_maxsize}") def initialize(self): - self._flow.ready() + self._flow.compile_arrow_patterns() def flow(self) -> Flow: return self._flow diff --git a/summoner/protocol/flow.py b/summoner/protocol/flow.py index 2a338ee..280972f 100644 --- a/summoner/protocol/flow.py +++ b/summoner/protocol/flow.py @@ -2,6 +2,8 @@ from typing import Optional, Any, Pattern from .triggers import load_triggers from .process import Node, ArrowStyle, ParsedRoute +from typing_extensions import deprecated +import warnings # variable names or commands used in flow transitions _TOKEN_RE = re.compile(r""" @@ -216,7 +218,23 @@ def _parse_standalone(self, text: str) -> ParsedRoute: style=None ) + def compile_arrow_patterns(self): + """ + Compile (or recompile) regex patterns from the current arrow styles. + Safe to call multiple times; no effect if already compiled. + """ + if self.in_use: + self._prepare_regex() + + @deprecated("Flow.ready() is deprecated. Use Flow.compile_arrow_patterns() instead. " + "When using SummonerClient, patterns are compiled automatically during registration.") def ready(self): + warnings.warn( + "Flow.ready() is deprecated; use Flow.compile_arrow_patterns() instead. " + "In SummonerClient, you generally don't need to call this.", + category=DeprecationWarning, + stacklevel=2, + ) if self.in_use: self._prepare_regex() diff --git a/tests/test_flow.py b/tests/test_flow.py index 28784ad..c8c0098 100644 --- a/tests/test_flow.py +++ b/tests/test_flow.py @@ -23,7 +23,7 @@ def make_flow(): flow.activate() flow.add_arrow_style(stem="-", brackets=("[", "]"), separator=",", tip=">") flow.add_arrow_style(stem="=", brackets=("{", "}"), separator=";", tip=")") - flow.ready() + flow.compile_arrow_patterns() return flow diff --git a/tests/test_process.py b/tests/test_process.py index 5f9c31e..5478c14 100644 --- a/tests/test_process.py +++ b/tests/test_process.py @@ -112,7 +112,7 @@ def test_collect_activations_simple_case(): # Setup flow and parsed route for "A --> B" flow = Flow().activate() flow.add_arrow_style("-", ("[", "]"), ",", ">") - flow.ready() + flow.compile_arrow_patterns() pr = flow.parse_route("A --> B") # Fake receiver function async def fn(msg): From f1a7990c41d0bc3c5c91d74a74ce183d9e30c4d2 Mon Sep 17 00:00:00 2001 From: Remy Tuyeras Date: Fri, 7 Nov 2025 09:01:34 -0500 Subject: [PATCH 2/2] fix payload wrapper: missing version registration --- summoner/protocol/payload.py | 1 + 1 file changed, 1 insertion(+) diff --git a/summoner/protocol/payload.py b/summoner/protocol/payload.py index 07130a8..c2b9bf1 100644 --- a/summoner/protocol/payload.py +++ b/summoner/protocol/payload.py @@ -154,6 +154,7 @@ def cast_v0_0_1(val: Any, expected: Any) -> Any: # Register version 0.0.1 register_envelope_version("0.0.1", parse_v0_0_1, cast_v0_0_1) register_envelope_version("1.0.0", parse_v0_0_1, cast_v0_0_1) +register_envelope_version("1.0.1", parse_v0_0_1, cast_v0_0_1) def wrap_with_types(