From e934d8ba874a7798ca23c9c91c578468703b7f8b Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 17 Mar 2026 21:04:23 +0000 Subject: [PATCH] Fix syncrule from_document failing on MATLAB-style class names The ndi_syncrule_class field in documents uses MATLAB dot notation (e.g. 'ndi.time.syncrule.filematch') but the class_map lookup used Python underscore names. Normalize via ndi_python_classname before lookup so documents from NDI-matlab resolve to the correct subclass. https://claude.ai/code/session_01Aq4Kts1jXTv4curJgKjdRF --- src/ndi/time/syncrule_base.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/ndi/time/syncrule_base.py b/src/ndi/time/syncrule_base.py index be9ed16..5f968d6 100644 --- a/src/ndi/time/syncrule_base.py +++ b/src/ndi/time/syncrule_base.py @@ -231,9 +231,12 @@ def from_document(cls, session: Any, doc: ndi_document) -> ndi_time_syncrule: Returns: ndi_time_syncrule instance of the appropriate subclass """ - # Get class name from document + # Get class name from document and normalize to Python-style + from ..util.classname import ndi_python_classname + props = doc.document_properties - class_name = props.get("syncrule", {}).get("ndi_syncrule_class", "ndi_time_syncrule") + class_name_raw = props.get("syncrule", {}).get("ndi_syncrule_class", "ndi_time_syncrule") + class_name = ndi_python_classname(class_name_raw) parameters = props.get("syncrule", {}).get("parameters", {}) identifier = props.get("base", {}).get("id")