View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003549 | Slicer4 | Core: Scripting (Wrapping, Python) | public | 2014-01-08 10:16 | 2018-03-02 11:06 |
Reporter | jcfr | Assigned To | jcfr | ||
Priority | normal | Severity | minor | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Product Version | |||||
Target Version | Slicer 4.5.0-1 | Fixed in Version | Slicer 4.5.0-1 | ||
Summary | 0003549: Import scripted module as python module | ||||
Description | Doing so will reduce the size of the global dict by NOT executing the script in the global scope. | ||||
Tags | No tags attached. | ||||
I brought this issue up on the slicer-devel list: This was my proposed fix: $ git diff
|
|
Fixed in r24155 [1] [1] http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=24155 |
|
Import 2017-06-07 23:51:09: master ae86bb68 2015-04-02 14:05:13 Details Diff |
ENH: update MultiVolumeImporter Fix from jcfr@github: Rename lib module to 'MultiVolumeImporterLib'. This will avoid conflict when Slicer issue 0003549 (Import scripted module as python module) will be addressed. git-svn-id: http://svn.slicer.org/Slicer4/trunk@24145 3bd1e089-480b-0410-8dfb-8563597acbee |
||
mod - SuperBuild.cmake | Diff File | ||
Import 2017-06-07 23:51:09: master fcdc7091 2015-04-02 15:08:53 Details Diff |
STYLE: VectorToScalarVolume - Make sure all required object are imported This will avoid issue when addressing issue 0003549 (Import scripted module as python module ) git-svn-id: http://svn.slicer.org/Slicer4/trunk@24148 3bd1e089-480b-0410-8dfb-8563597acbee |
||
mod - Modules/Scripted/VectorToScalarVolume/VectorToScalarVolume.py | Diff File | ||
Import 2017-06-07 23:51:09: master f17c8acf 2015-04-02 15:44:30 Details Diff |
BUG: Ensure "qSlicerScriptedUtils::executeFile()" set "__file__" property. This is a hack. Instead the "imp" module should be used as outline in issue 0003549 (Import scripted module as python module). git-svn-id: http://svn.slicer.org/Slicer4/trunk@24149 3bd1e089-480b-0410-8dfb-8563597acbee |
||
mod - Base/QTCore/Testing/Python/qSlicerModuleGenericTest.py.in | Diff File | ||
mod - Base/QTCore/qSlicerScriptedUtils.cxx | Diff File | ||
Import 2017-06-07 23:51:09: master 941fad8e 2015-04-03 20:42:23 Details Diff |
ENH: Add test illustrating issue 0003549 related to scripted module import The test is currently passing but comment in the script explain which behavior is really expected. In a nutshell, scripted module shouldn't be executed in the global scope but should instead be imported as module. git-svn-id: http://svn.slicer.org/Slicer4/trunk@24154 3bd1e089-480b-0410-8dfb-8563597acbee |
||
mod - Applications/SlicerApp/Testing/Python/CMakeLists.txt | Diff File | ||
add - Applications/SlicerApp/Testing/Python/ScriptedModuleDiscoveryTest.py | Diff File | ||
add - Applications/SlicerApp/Testing/Python/ScriptedModuleDiscoveryTest/ModuleA.py | Diff File | ||
add - Applications/SlicerApp/Testing/Python/ScriptedModuleDiscoveryTest/ModuleB.py | Diff File | ||
Import 2017-06-07 23:51:09: master e5cf5fec 2015-04-03 20:42:28 Details Diff |
ENH: Fixes 0003549. Import scripted module as python module This will allow each scripted module to defined top-level variables that will not clobber each other. For example, if we consider these two modules: 8<----8<----8<----8<----8<----8<----8<----8<---- File: ModuleA.py FOO = 1 class ModuleA(ScriptedLoadableModule): def __init__(self, parent): ModuleA.__init__(self, parent) [...] def doSomething(self): if FOO == 1: [...] else: [...] 8<----8<----8<----8<----8<----8<----8<----8<---- 8<----8<----8<----8<----8<----8<----8<----8<---- File: ModuleB.py FOO = 2 class ModuleB(ScriptedLoadableModule): def __init__(self, parent): ModuleB.__init__(self, parent) [...] def doSomething(self): if FOO == 1: [...] else: [...] 8<----8<----8<----8<----8<----8<----8<----8<---- Assuming ModuleA, and then ModuleB are imported. Before this commit, both scripts were executed in the __main__ scope and FOO variable would have the value associated with the last imported module. After this commit, both module will see their own copy of the FOO variable with the expected value. It also avoid the hack when we explicitly save/set/restore both "__name__" and "__file__" variable. Changes to "DICOMScalarVolumePlugin" fixes the test failing test "py_RSNAVisTutorial" and "py_SubjectHierarchyGenericSelfTest". It basically fixes the following error by ensuring all object are imported: //-------------- test_SubjectHierarchyGenericSelfTest_FullTest1 (SubjectHierarchyGenericSelfTest.SubjectHierarchyGenericSelfTestTest) ... Traceback (most recent call last): File "/path/to/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DICOMLib/DICOMWidgets.py", line 615, in getLoadablesFromFileLists loadablesByPlugin[plugin] = plugin.examineForImport(fileLists) File "/path/to/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DICOMScalarVolumePlugin.py", line 47, in examineForImport loadablesForFiles = self.examineFiles(files) File "/path/to/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/DICOMScalarVolumePlugin.py", line 71, in examineFiles loadable = DICOMLib.DICOMLoadable() NameError: global name 'DICOMLib' is not defined //-------------- git-svn-id: http://svn.slicer.org/Slicer4/trunk@24155 3bd1e089-480b-0410-8dfb-8563597acbee |
||
mod - Applications/SlicerApp/Testing/Python/ScriptedModuleDiscoveryTest.py | Diff File | ||
add - Applications/SlicerApp/Testing/Python/ScriptedModuleDiscoveryTest/ModuleC_WithoutWidget.py | Diff File | ||
add - Applications/SlicerApp/Testing/Python/ScriptedModuleDiscoveryTest/ModuleD_WithFileDialog_WithoutWidget.py | Diff File | ||
add - Applications/SlicerApp/Testing/Python/ScriptedModuleDiscoveryTest/ModuleE_WithFileWriter_WithoutWidget.py | Diff File | ||
mod - Base/QTCore/qSlicerScriptedFileWriter.cxx | Diff File | ||
mod - Base/QTCore/qSlicerScriptedUtils.cxx | Diff File | ||
mod - Base/QTCore/qSlicerScriptedUtils_p.h | Diff File | ||
mod - Base/QTGUI/qSlicerScriptedFileDialog.cxx | Diff File | ||
mod - Base/QTGUI/qSlicerScriptedLoadableModule.cxx | Diff File | ||
mod - Base/QTGUI/qSlicerScriptedLoadableModuleWidget.cxx | Diff File | ||
mod - Modules/Scripted/DICOMPlugins/DICOMScalarVolumePlugin.py | Diff File | ||
Import 2017-06-07 23:51:09: master 002a4a7d 2015-10-08 13:15:57 Details Diff |
STYLE: Update python scripts to not import from __main__ This commit simplifies the scripts removing extra `from __main__` statements and improve the integration with Python IDE ensuring python package like "slicer" can simply be imported. The `from __main__` statement most likely became obsolete since r24155 (ENH: Fixes 0003549. Import scripted module as python module). Remarks: A global replace of "from __main__ import" into "import" as been done except in: * EditOptions: "from __main__ getNodes" changed into "from slicer.util import getNodes" * slicer/module[dm|logic|mrml|widget]/__init__.py where it makes sense to keep it. git-svn-id: http://svn.slicer.org/Slicer4/trunk@24622 3bd1e089-480b-0410-8dfb-8563597acbee |
||
mod - Applications/SlicerApp/Testing/Python/AtlasTests.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/Charting.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/DTINotReproducibleIssue3977.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/FiducialLayoutSwitchBug1914.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/JRC2013Vis.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/RSNA2012ProstateDemo.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/RSNAQuantTutorial.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/RSNAVisTutorial.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/ScenePerformance.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/SliceLinkLogic.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/Slicer4Minute.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/SubjectHierarchyCorePluginsSelfTest.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/SubjectHierarchyGenericSelfTest.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/ViewControllersSliceInterpolationBug1926.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/fiber_visibility_crash2438.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/sceneImport2428.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/slicerCloseCrashBug2590.py | Diff File | ||
mod - Applications/SlicerApp/Testing/Python/test_tractography_display.py | Diff File | ||
mod - Base/Python/slicer/ScriptedLoadableModule.py | Diff File | ||
mod - Base/Python/slicer/util.py | Diff File | ||
mod - Base/Python/tpycl/tpycl.py | Diff File | ||
mod - Extensions/Testing/EditorExtensionTemplate/EditorEffectTemplate/EditorEffectTemplate.py | Diff File | ||
mod - Extensions/Testing/ScriptedLoadableExtensionTemplate/ScriptedLoadableModuleTemplate/ScriptedLoadableModuleTemplate.py | Diff File | ||
mod - Modules/Loadable/Colors/Testing/Python/ColorsScalarBarSelfTest.py | Diff File | ||
mod - Modules/Loadable/CropVolume/Testing/Python/CropVolumeSelfTest.py | Diff File | ||
mod - Modules/Loadable/Markups/Testing/Python/AddManyMarkupsFiducialTest.py | Diff File | ||
mod - Modules/Loadable/Markups/Testing/Python/MarkupsInCompareViewersSelfTest.py | Diff File | ||
mod - Modules/Loadable/Markups/Testing/Python/MarkupsInViewsSelfTest.py | Diff File | ||
mod - Modules/Loadable/Markups/Testing/Python/NeurosurgicalPlanningTutorialMarkupsSelfTest.py | Diff File | ||
mod - Modules/Loadable/SceneViews/Testing/Python/AddStorableDataAfterSceneViewTest.py | Diff File | ||
mod - Modules/Loadable/VolumeRendering/Testing/Python/VolumeRenderingSceneClose.py | Diff File | ||
mod - Modules/Scripted/DICOM/DICOM.py | Diff File | ||
mod - Modules/Scripted/DICOM2FullBrainTractography/DICOM2FullBrainTractography.py | Diff File | ||
mod - Modules/Scripted/DICOMLib/DICOMExportScalarVolume.py | Diff File | ||
mod - Modules/Scripted/DICOMLib/DICOMExportScene.py | Diff File | ||
mod - Modules/Scripted/DICOMLib/DICOMPlugin.py | Diff File | ||
mod - Modules/Scripted/DICOMLib/DICOMProcesses.py | Diff File | ||
mod - Modules/Scripted/DICOMLib/DICOMWidgets.py | Diff File | ||
mod - Modules/Scripted/DICOMPlugins/DICOMDiffusionVolumePlugin.py | Diff File | ||
mod - Modules/Scripted/DICOMPlugins/DICOMScalarVolumePlugin.py | Diff File | ||
mod - Modules/Scripted/DICOMPlugins/DICOMSlicerDataBundlePlugin.py | Diff File | ||
mod - Modules/Scripted/DataProbe/DataProbe.py | Diff File | ||
mod - Modules/Scripted/DataProbe/DataProbeLib/SliceViewAnnotations.py | Diff File | ||
mod - Modules/Scripted/Editor/Editor.py | Diff File | ||
mod - Modules/Scripted/EditorLib/ChangeIslandEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/ChangeLabelEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/ColorBox.py | Diff File | ||
mod - Modules/Scripted/EditorLib/DilateEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/DrawEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/EditBox.py | Diff File | ||
mod - Modules/Scripted/EditorLib/EditColor.py | Diff File | ||
mod - Modules/Scripted/EditorLib/EditOptions.py | Diff File | ||
mod - Modules/Scripted/EditorLib/Effect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/ErodeEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/FastMarchingEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/GrowCutEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/HelperBox.py | Diff File | ||
mod - Modules/Scripted/EditorLib/IdentifyIslandsEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/IslandEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/LabelEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/LevelTracingEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/MakeModelEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/MorphologyEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/PaintEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/RectangleEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/RemoveIslandsEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/SaveIslandEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/ThresholdEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/WandEffect.py | Diff File | ||
mod - Modules/Scripted/EditorLib/WatershedFromMarkerEffect.py | Diff File | ||
mod - Modules/Scripted/Endoscopy/Endoscopy.py | Diff File | ||
mod - Modules/Scripted/ExtensionWizard/ExtensionWizard.py | Diff File | ||
mod - Modules/Scripted/ExtensionWizard/ExtensionWizardLib/CreateComponentDialog.py | Diff File | ||
mod - Modules/Scripted/ExtensionWizard/ExtensionWizardLib/DirectoryListWidget.py | Diff File | ||
mod - Modules/Scripted/ExtensionWizard/ExtensionWizardLib/EditExtensionMetadataDialog.py | Diff File | ||
mod - Modules/Scripted/ExtensionWizard/ExtensionWizardLib/EditableTreeWidget.py | Diff File | ||
mod - Modules/Scripted/ExtensionWizard/ExtensionWizardLib/LoadModulesDialog.py | Diff File | ||
mod - Modules/Scripted/ExtensionWizard/ExtensionWizardLib/ModuleInfo.py | Diff File | ||
mod - Modules/Scripted/ExtensionWizard/ExtensionWizardLib/SettingsPanel.py | Diff File | ||
mod - Modules/Scripted/ExtensionWizard/ExtensionWizardLib/TemplatePathUtilities.py | Diff File | ||
mod - Modules/Scripted/FiberBundleToLabelMap/FiberBundleToLabelMap.py | Diff File | ||
mod - Modules/Scripted/LabelStatistics/LabelStatistics.py | Diff File | ||
mod - Modules/Scripted/PerformanceTests/PerformanceTests.py | Diff File | ||
mod - Modules/Scripted/SampleData/SampleData.py | Diff File | ||
mod - Modules/Scripted/SelfTests/SelfTests.py | Diff File | ||
mod - Modules/Scripted/SurfaceToolbox/SurfaceToolbox.py | Diff File | ||
mod - Modules/Scripted/VectorToScalarVolume/VectorToScalarVolume.py | Diff File | ||
mod - Utilities/Scripts/qrcc.py | Diff File | ||
mod - Utilities/Templates/Modules/Scripted/TemplateKey.py | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-01-08 10:16 | jcfr | New Issue | |
2014-01-08 10:16 | jcfr | Status | new => assigned |
2014-01-08 10:16 | jcfr | Assigned To | => jcfr |
2014-01-08 10:16 | jcfr | Relationship added | related to 0001365 |
2014-01-08 10:17 | jcfr | Target Version | => Slicer 4.4.0 |
2014-01-08 10:18 | jcfr | Target Version | Slicer 4.4.0 => Slicer 4.5.0-1 |
2014-01-08 10:18 | blowekamp | Note Added: 0010494 | |
2014-03-07 10:28 | jcfr | Status | assigned => acknowledged |
2015-04-03 17:07 | jcfr | Note Added: 0013008 | |
2015-04-03 17:07 | jcfr | Status | acknowledged => resolved |
2015-04-03 17:07 | jcfr | Fixed in Version | => Slicer 4.4.1 |
2015-04-03 17:07 | jcfr | Resolution | open => fixed |
2015-09-09 08:29 | jcfr | Fixed in Version | Slicer 4.4.1 => Slicer 4.5.0-1 |
2017-06-10 08:51 | jcfr | Changeset attached | => Slicer master 002a4a7d |
2017-06-10 08:51 | jcfr | Changeset attached | => Slicer master e5cf5fec |
2017-06-10 08:51 | jcfr | Changeset attached | => Slicer master 941fad8e |
2017-06-10 08:51 | jcfr | Changeset attached | => Slicer master f17c8acf |
2017-06-10 08:51 | jcfr | Changeset attached | => Slicer master fcdc7091 |
2017-06-10 08:51 | fedorov | Changeset attached | => Slicer master ae86bb68 |
2018-03-02 11:06 | jcfr | Status | resolved => closed |