|
|
Line 1: |
Line 1: |
− | This page lists non-backward compatible changes in Slicer API between 4.8 and 5.0 version.
| + | #REDIRECT [[Documentation/Nightly/Developers/Tutorials/MigrationGuide/Slicer]] |
− | | |
− | === slicer.util.getNode now raises exception if no node is found ===
| |
− | | |
− | slicer.util.getNode() now to raises a MRMLNodeNotFoundException exception (instead of simply returning None), when the node is not found.
| |
− | This makes code debugging easier, and in general more consistent with Python conventions.
| |
− | | |
− | How to update existing code:
| |
− | | |
− | It is advisable to only use slicer.util.getNode in tests, or interactively in the Python console, as its behavior is somewhat unpredictable (it may either found a node by name or ID, and result of wildcard search is even less deterministic). In all other cases, it is recommended to use the Scene's methods
| |
− | | |
− | ==== Old code ====
| |
− | | |
− | <pre>
| |
− | n = slicer.util.getNode(nodeNameOrID)
| |
− | </pre>
| |
− | | |
− | ==== New code ====
| |
− | | |
− | If node is to be found by name:
| |
− | <pre>
| |
− | n = slicer.mrmlScene.GetFirstNodeByName(nodeName)
| |
− | </pre>
| |
− | | |
− | If node is to be found by ID:
| |
− | <pre>
| |
− | n = slicer.mrmlScene.GetNodeByID(nodeID)
| |
− | </pre>
| |
− | | |
− | The following is only recommended in tests, not in module code (as recommended alternatives above are faster and more predictable):
| |
− | | |
− | <pre>
| |
− | try:
| |
− | n = slicer.util.getNode(nodeNameOrID)
| |
− | except slicer.util.MRMLNodeNotFoundException:
| |
− | n = None
| |
− | </pre>
| |
− | | |
− | More information: https://github.com/Slicer/Slicer/commit/b63484af1b1b413f35396f8f7efb73e870448bd4
| |