I have run into an issue trying to the Lung Lesion Analyzer submodule from the Chest Imaging Platform extension. For context, this error arises on the current stable build of Slicer on MacOS (version 4.11.20210226), but the issue does not occur on some previous versions (I can confirm it works on 4.8.1).
When trying to add a New Nodule the following error is produced in the python REPL:
Traceback (most recent call last):
File "/Applications/Slicer.app/Contents/Extensions-29738/Chest_Imaging_Platform/lib/Slicer-4.11/qt-scripted-modules/CIP_LesionModel.py", line 1352, in __onAddNoduleButtonClicked__
self.addNewNodule()
File "/Applications/Slicer.app/Contents/Extensions-29738/Chest_Imaging_Platform/lib/Slicer-4.11/qt-scripted-modules/CIP_LesionModel.py", line 720, in addNewNodule
fiducialsNode.AddObserver(fiducialsNode.MarkupAddedEvent, self.__onAddedSeed__)
AttributeError: 'vtkSlicerMarkupsModuleMRMLPython.vtkMRMLMarkupsFid' object has no attribute 'MarkupAddedEvent'
I am not sure whether something has changed on the Slicer side of things that might throw this error, or if this is strictly a CIP extension issue. Has the MarkupEventAdded attributed been dropped in recent versions?
In any case, in the past I have tried seeking help with bugs by posting issues on their GitHub to no response, so I am turning here for advice.
Yes, the markups have improved a lot in Slicer since 4.8.1, so if CIP hasn’t been updated then you will probably still need to use the old version. Probably you can move data back and forth easily if you also need to use features of new versions of Slicer.
Does Slicer have any protection against having extensions available in the extension manager for a given version if those extensions haven’t been tested against/updated to that version?
Extensions are closely tied to the version of Slicer so generally this works well. Often C++ extensions will fail to build if they aren’t compatible with the version of Slicer, so that will make them unavailable, but with python scripts they may fail at runtime with errors like you saw. We don’t really want to prevent people from installing an extension where some parts may be useful and even if other parts are broken. Often extension developers don’t have resources to maintain and update all the code so they rely on motivated community members to help identify and fix issues.