From 16620d0a692ca3b1f3c912023bc37c373a5c409e Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Tue, 20 Oct 2026 19:46:12 +0200 Subject: [PATCH] core, work in progress: basic action handlers --- scopes/core/core.py | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/scopes/core/core.py b/scopes/core/core.py index 6a98106..ea7274d 100644 --- a/scopes/core/core.py +++ b/scopes/core/core.py @@ -75,16 +75,17 @@ def create_zero(env: Mailbox) -> Mailbox: def synapse(rcvr: Mailbox, op: SynOp = lambda x: x) -> Syn: async def syn(msg: Message) -> None: + # op = update_op(msg) msg_new = op(msg) if msg_new is not None: await rcvr.put(msg_new) return syn def gen_proc(actions: Actions, default: Handlers = None, - before: Handlers = None, after: Handlers = None) -> Proc: + prepare: Handlers = None, finalize: Handlers = None) -> Proc: async def proc(msg: Message, scope: Scope) -> Scope: acts = actions.get(msg.head['action'], actions.get(k.default, default)) - acts = util.flatten(before, acts, after, ignore_none=True) + acts = util.flatten(prepare, acts, finalize, ignore_none=True) for act in acts: msg = await act(msg, scope) if isinstance(msg, tuple): @@ -96,3 +97,31 @@ def gen_proc(actions: Actions, default: Handlers = None, return scope return proc +def gen_std(actions: Actions) -> Proc: + return gen_proc(actions, finalize=forward()) + +def basic_actions() -> Actions: + acts: Actions = { + k.value: value_add(), + k.create: create() + } + return acts + +# predefined action handlers + +def forward() -> Handler: + async def do_forward(msg, scope) -> None: + for syn in scope.syns: + await syn(msg) + return do_forward + +def value_add() -> Handler: + async def do_add(msg, scope) -> tuple[Message, Scope]: + return msg, scope + return do_add + +def create() -> Handler: + async def do_create(msg, scope) -> None: + return None + return do_create +