Salome HOME
updated copyright message
[modules/shaper.git] / src / PythonAPI / model / dump / DumpAssistant.py
index 08007616d957acdd2d34c2abca27eb84ceb50aa2..fc7a20f22dba84a1b47a98d1298f292d79065636 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2019  CEA/DEN, EDF R&D
+# Copyright (C) 2014-2023  CEA, EDF
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -50,8 +50,11 @@ class DumpAssistant(ModelHighAPI.ModelHighAPI_Dumper):
     def collectFeatures(self):
         self.myFeatures = {}
         self.myWrapperNames = {}
-        for aModule in sys.modules:
-            for aName, anObj in inspect.getmembers(sys.modules[aModule], inspect.isclass):
+        # Fixing [bos #26531] [CEA] Shaper tests fail with SEGFAULT
+        # Use copy of sys.modules to avoid exception "dictionary changed size during iteration"
+        sys_modules = sys.modules.copy()
+        for aModule in sys_modules:
+            for aName, anObj in inspect.getmembers(sys_modules[aModule], inspect.isclass):
                 if issubclass(anObj, ModelHighAPI.ModelHighAPI_Interface) and hasattr(anObj, "ID") and anObj.dump != ModelHighAPI.ModelHighAPI_Interface.dump:
                     self.myFeatures[anObj.ID()] = anObj
                     self.myWrapperNames[anObj.ID()] = aName
@@ -67,8 +70,9 @@ class DumpAssistant(ModelHighAPI.ModelHighAPI_Dumper):
             if theForce or theFeature.isInHistory() or aFeatureKind=="Export" or aFeatureKind=="RemoveResults":
                 aDumper = self.myFeatures[aFeatureKind](theFeature)
                 # Dump comment for the operation before the dumping of the feature to improve the readability of a script.
-                self.__print__("\n### Create " + theFeature.getKind())
-                self.newline()
+                if self.dumpCommentBeforeFeature(theFeature):
+                    self.__print__("\n### Create " + theFeature.getKind())
+                    self.newline()
             else:
                 self.name(theFeature)
                 self.clearNotDumped()