From 81c145f6a6e87a171f1c4b1b30b07b059fb43324 Mon Sep 17 00:00:00 2001 From: Talley Lambert Date: Mon, 11 Jul 2022 06:12:39 -0400 Subject: [PATCH] feat: frozen models --- src/app_model/registries/_register.py | 12 +++++++----- src/app_model/types/_base.py | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/app_model/registries/_register.py b/src/app_model/registries/_register.py index ce23c25..2882ba7 100644 --- a/src/app_model/registries/_register.py +++ b/src/app_model/registries/_register.py @@ -223,11 +223,13 @@ def _register_action_obj( # keybinding for keyb in action.keybindings or (): if action.enablement is not None: - _keyb = keyb.copy() - if _keyb.when is None: - _keyb.when = action.enablement - else: - _keyb.when = action.enablement | _keyb.when + kwargs = keyb.dict() + kwargs["when"] = ( + action.enablement + if keyb.when is None + else action.enablement | keyb.when + ) + _keyb = type(keyb)(**kwargs) else: _keyb = keyb if _d := app.keybindings.register_keybinding_rule(action.id, _keyb): diff --git a/src/app_model/types/_base.py b/src/app_model/types/_base.py index 27484dc..8066dd3 100644 --- a/src/app_model/types/_base.py +++ b/src/app_model/types/_base.py @@ -6,3 +6,4 @@ class _StrictModel(BaseModel): class Config: extra = Extra.forbid + frozen = True