From 05118697b7784f1aee69f34908ba8fd798db2906 Mon Sep 17 00:00:00 2001 From: Arthit Suriyawongkul Date: Wed, 26 Aug 2026 03:57:28 +0700 Subject: [PATCH] Optimize object retrieval in ObjectList Signed-off-by: Arthit Suriyawongkul --- src/shacl2code/lang/common.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/shacl2code/lang/common.py b/src/shacl2code/lang/common.py index 4ef2adaf..c7486d5b 100644 --- a/src/shacl2code/lang/common.py +++ b/src/shacl2code/lang/common.py @@ -93,15 +93,18 @@ def output(self, model): class ObjectList(object): def __init__(self, objs): self.__objs = objs + self.__objs_by_id = {} + for o in objs: + self.__objs_by_id.setdefault(o._id, o) def __iter__(self): return iter(self.__objs) def get(self, _id): - for o in self.__objs: - if o._id == _id: - return o - raise KeyError(f"Object with ID {_id} not found") + try: + return self.__objs_by_id[_id] + except KeyError: + raise KeyError(f"Object with ID {_id} not found") from None def get_all_derived(cls): def _recurse(cls):