PLCGenerator.py
branchpython3
changeset 3750 f62625418bff
parent 3704 c17fac18c663
child 3752 9f6f46dbe3ae
--- a/PLCGenerator.py	Mon Mar 27 10:19:14 2023 +0200
+++ b/PLCGenerator.py	Fri Oct 28 12:39:15 2022 +0800
@@ -23,7 +23,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 
-from __future__ import absolute_import
+
 import re
 from functools import reduce
 from six.moves import xrange
@@ -65,7 +65,7 @@
             while lines[line_num][spaces] == " ":
                 spaces += 1
             indent = ""
-            for dummy in xrange(spaces, nb_spaces):
+            for dummy in range(spaces, nb_spaces):
                 indent += " "
             for line in lines:
                 if line != "":
@@ -264,7 +264,7 @@
 
     # Generate a POU defined and used in text
     def GeneratePouProgramInText(self, text):
-        for pou_name in self.PouComputed.keys():
+        for pou_name in list(self.PouComputed.keys()):
             model = re.compile("(?:^|[^0-9^A-Z])%s(?:$|[^0-9^A-Z])" % pou_name.upper())
             if model.search(text) is not None:
                 self.GeneratePouProgram(pou_name)
@@ -472,12 +472,12 @@
         if len(self.DatatypeComputed) > 0:
             self.Program += [("TYPE\n", ())]
             # Generate every data types defined
-            for datatype_name in self.DatatypeComputed.keys():
+            for datatype_name in list(self.DatatypeComputed.keys()):
                 log("Generate Data Type %s"%datatype_name)
                 self.GenerateDataType(datatype_name)
             self.Program += [("END_TYPE\n\n", ())]
         # Generate every POUs defined
-        for pou_name in self.PouComputed.keys():
+        for pou_name in list(self.PouComputed.keys()):
             log("Generate POU %s"%pou_name)
             self.GeneratePouProgram(pou_name)
         if noconfig:
@@ -895,7 +895,7 @@
                             if connected is not None and connected not in self.ConnectionTypes:
                                 for connection in self.ExtractRelatedConnections(connected):
                                     self.ConnectionTypes[connection] = itype
-        for var_type, connections in undefined.items():
+        for var_type, connections in list(undefined.items()):
             related = []
             for connection in connections:
                 connection_type = self.ConnectionTypes.get(connection)
@@ -1055,7 +1055,7 @@
 
     def FactorizePaths(self, paths):
         same_paths = {}
-        uncomputed_index = range(len(paths))
+        uncomputed_index = list(range(len(paths)))
         factorized_paths = []
         for num, path in enumerate(paths):
             if isinstance(path, list):
@@ -1066,7 +1066,7 @@
             else:
                 factorized_paths.append(path)
                 uncomputed_index.remove(num)
-        for same_path, elements in same_paths.items():
+        for same_path, elements in list(same_paths.items()):
             if len(elements) > 1:
                 elements_paths = self.FactorizePaths([path for path, num in elements])
                 if len(elements_paths) > 1:
@@ -1452,7 +1452,7 @@
 
     def GenerateSFCStep(self, step, pou):
         step_name = step.getname()
-        if step_name not in self.SFCNetworks["Steps"].keys():
+        if step_name not in list(self.SFCNetworks["Steps"].keys()):
             if step.getinitialStep():
                 self.InitialSteps.append(step_name)
             step_infos = {"id":          step.getlocalId(),
@@ -1482,7 +1482,7 @@
                                 instances.extend(self.ExtractConvergenceInputs(transition, pou))
                 for instance in instances:
                     self.GenerateSFCTransition(instance, pou)
-                    if instance in self.SFCNetworks["Transitions"].keys():
+                    if instance in list(self.SFCNetworks["Transitions"].keys()):
                         target_info = (self.TagName, "transition", instance.getlocalId(), "to", step_infos["id"])
                         self.SFCNetworks["Transitions"][instance]["to"].append([(step_name, target_info)])
 
@@ -1516,7 +1516,7 @@
                             instances.extend(self.ExtractConvergenceInputs(transition, pou))
             for instance in instances:
                 self.GenerateSFCTransition(instance, pou)
-                if instance in self.SFCNetworks["Transitions"].keys():
+                if instance in list(self.SFCNetworks["Transitions"].keys()):
                     target_info = (self.TagName, "jump", jump.getlocalId(), "target")
                     self.SFCNetworks["Transitions"][instance]["to"].append([(jump_target, target_info)])
 
@@ -1530,7 +1530,7 @@
             step = body.getcontentInstance(stepLocalId)
             self.GenerateSFCStep(step, pou)
             step_name = step.getname()
-            if step_name in self.SFCNetworks["Steps"].keys():
+            if step_name in list(self.SFCNetworks["Steps"].keys()):
                 actions = actionBlock.getactions()
                 for i, action in enumerate(actions):
                     action_infos = {"id":        actionBlock.getlocalId(),
@@ -1555,7 +1555,7 @@
                     self.SFCNetworks["Steps"][step_name]["actions"].append(action_infos)
 
     def GenerateSFCAction(self, action_name, pou):
-        if action_name not in self.SFCNetworks["Actions"].keys():
+        if action_name not in list(self.SFCNetworks["Actions"].keys()):
             actionContent = pou.getaction(action_name)
             if actionContent is not None:
                 previous_tagname = self.TagName
@@ -1566,7 +1566,7 @@
                 self.TagName = previous_tagname
 
     def GenerateSFCTransition(self, transition, pou):
-        if transition not in self.SFCNetworks["Transitions"].keys():
+        if transition not in list(self.SFCNetworks["Transitions"].keys()):
             steps = []
             connections = transition.connectionPointIn.getconnections()
             if connections is not None and len(connections) == 1:
@@ -1639,12 +1639,12 @@
             for step in steps:
                 self.GenerateSFCStep(step, pou)
                 step_name = step.getname()
-                if step_name in self.SFCNetworks["Steps"].keys():
+                if step_name in list(self.SFCNetworks["Steps"].keys()):
                     transition_infos["from"].append([(step_name, (self.TagName, "transition", transition.getlocalId(), "from", step.getlocalId()))])
                     self.SFCNetworks["Steps"][step_name]["transitions"].append(transition)
 
     def ComputeSFCStep(self, step_name):
-        if step_name in self.SFCNetworks["Steps"].keys():
+        if step_name in list(self.SFCNetworks["Steps"].keys()):
             step_infos = self.SFCNetworks["Steps"].pop(step_name)
             self.Program += [(self.CurrentIndent, ())]
             if step_infos["initial"]:
@@ -1679,7 +1679,7 @@
                 self.ComputeSFCTransition(transition)
 
     def ComputeSFCAction(self, action_name):
-        if action_name in self.SFCNetworks["Actions"].keys():
+        if action_name in list(self.SFCNetworks["Actions"].keys()):
             action_content, action_info = self.SFCNetworks["Actions"].pop(action_name)
             self.Program += [("%sACTION " % self.CurrentIndent, ()),
                              (action_name, action_info),
@@ -1688,7 +1688,7 @@
             self.Program += [("%sEND_ACTION\n\n" % self.CurrentIndent, ())]
 
     def ComputeSFCTransition(self, transition):
-        if transition in self.SFCNetworks["Transitions"].keys():
+        if transition in list(self.SFCNetworks["Transitions"].keys()):
             transition_infos = self.SFCNetworks["Transitions"].pop(transition)
             self.Program += [("%sTRANSITION" % self.CurrentIndent, ())]
             if transition_infos["priority"] is not None: