beremiz

Parents d2e979738700
Children b789b695b5c6
clean-up: fix PEP8 E203 whitespace before ':' and whitespace before ','
  • +3 -3
    Beremiz.py
  • +10 -10
    BeremizIDE.py
  • +11 -11
    Beremiz_service.py
  • +6 -6
    CodeFileTreeNode.py
  • +2 -2
    ConfigTreeNode.py
  • +99 -99
    IDEFrame.py
  • +9 -4
    PLCControler.py
  • +23 -23
    PLCGenerator.py
  • +10 -10
    PLCOpenEditor.py
  • +1 -1
    POULibrary.py
  • +85 -65
    ProjectController.py
  • +33 -29
    canfestival/canfestival.py
  • +16 -16
    canfestival/config_utils.py
  • +6 -6
    connectors/WAMP/__init__.py
  • +6 -6
    controls/CustomStyledTextCtrl.py
  • +11 -11
    controls/LibraryPanel.py
  • +1 -1
    controls/SearchResultPanel.py
  • +7 -7
    controls/VariablePanel.py
  • +1 -1
    dialogs/ArrayTypeDialog.py
  • +2 -2
    dialogs/BrowseLocationsDialog.py
  • +3 -3
    dialogs/DiscoveryDialog.py
  • +6 -3
    dialogs/FBDVariableDialog.py
  • +5 -5
    dialogs/ForceVariableDialog.py
  • +1 -1
    dialogs/PouActionDialog.py
  • +2 -2
    dialogs/PouDialog.py
  • +1 -1
    dialogs/PouTransitionDialog.py
  • +1 -1
    dialogs/SFCTransitionDialog.py
  • +3 -3
    docutil/docpdf.py
  • +3 -3
    docutil/docsvg.py
  • +2 -2
    editors/CodeFileEditor.py
  • +6 -6
    editors/ConfTreeNodeEditor.py
  • +7 -7
    editors/DataTypeEditor.py
  • +7 -7
    editors/ResourceEditor.py
  • +27 -22
    editors/Viewer.py
  • +3 -3
    graphics/FBD_Objects.py
  • +8 -8
    graphics/GraphicCommons.py
  • +3 -3
    graphics/LD_Objects.py
  • +4 -4
    graphics/SFC_Objects.py
  • +10 -10
    i18n/mki18n.py
  • +5 -5
    plcopen/definitions.py
  • +20 -13
    plcopen/plcopen.py
  • +10 -10
    plcopen/structures.py
  • +9 -9
    py_ext/PythonFileCTNMixin.py
  • +14 -14
    runtime/PLCObject.py
  • +2 -2
    svgui/pyjs/build.py
  • +14 -10
    svgui/svgui.py
  • +1 -1
    targets/__init__.py
  • +3 -3
    targets/toolchain_gcc.py
  • +3 -3
    targets/toolchain_makefile.py
  • +25 -25
    targets/typemapping.py
  • +4 -4
    util/ProcessLogger.py
  • +25 -25
    util/Zeroconf.py
  • +9 -7
    wxglade_hmi/wxglade_hmi.py
  • +5 -5
    xmlclass/xmlclass.py
  • +13 -13
    xmlclass/xsdschema.py
  • --- a/Beremiz.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/Beremiz.py Tue Aug 15 12:17:51 2017 +0300
    @@ -111,7 +111,7 @@
    def CreateApplication(self):
    if os.path.exists("BEREMIZ_DEBUG"):
    __builtin__.__dict__["BMZ_DBG"] = True
    - else :
    + else:
    __builtin__.__dict__["BMZ_DBG"] = False
    global wxversion, wx
    @@ -160,10 +160,10 @@
    def updateinfoproc():
    global updateinfo
    - try :
    + try:
    import urllib2
    updateinfo = urllib2.urlopen(self.updateinfo_url,None).read()
    - except :
    + except:
    updateinfo = _("update info unavailable.")
    from threading import Thread
    --- a/BeremizIDE.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/BeremizIDE.py Tue Aug 15 12:17:51 2017 +0300
    @@ -76,13 +76,13 @@
    if wx.Platform == '__WXMSW__':
    faces = {
    - 'mono' : 'Courier New',
    - 'size' : 8,
    + 'mono': 'Courier New',
    + 'size': 8,
    }
    else:
    faces = {
    - 'mono' : 'Courier',
    - 'size' : 10,
    + 'mono': 'Courier',
    + 'size': 10,
    }
    from threading import Lock,Timer,currentThread
    @@ -146,11 +146,11 @@
    self.YieldLock.release()
    def _write(self):
    - if self.output :
    + if self.output:
    self.output.Freeze()
    self.lock.acquire()
    for s, style in self.stack:
    - if style is None : style=self.black_white
    + if style is None: style=self.black_white
    if style != self.black_white:
    self.output.StartStyling(self.output.GetLength(), 0xff)
    @@ -487,7 +487,7 @@
    sys.executable,
    Bpath("Beremiz_service.py"),
    self.runtime_port,
    - {False : "-x 0", True :"-x 1"}[taskbaricon],
    + {False: "-x 0", True:"-x 1"}[taskbaricon],
    self.local_runtime_tmpdir),
    no_gui=False,
    timeout=500, keyword = self.local_runtime_tmpdir,
    @@ -613,7 +613,7 @@
    self.SaveLastState()
    - for Thing in self.ToDoBeforeQuit :
    + for Thing in self.ToDoBeforeQuit:
    Thing()
    self.ToDoBeforeQuit = []
    @@ -844,7 +844,7 @@
    except:
    defaultpath = os.path.expanduser("~")
    - dialog = wx.DirDialog(self , _("Choose an empty directory for new project"), defaultpath)
    + dialog = wx.DirDialog(self, _("Choose an empty directory for new project"), defaultpath)
    if dialog.ShowModal() == wx.ID_OK:
    projectpath = dialog.GetPath()
    self.Config.Write("lastopenedfolder",
    @@ -880,7 +880,7 @@
    except:
    defaultpath = os.path.expanduser("~")
    - dialog = wx.DirDialog(self , _("Choose a project"), defaultpath, style=wx.DEFAULT_DIALOG_STYLE|
    + dialog = wx.DirDialog(self, _("Choose a project"), defaultpath, style=wx.DEFAULT_DIALOG_STYLE|
    wx.RESIZE_BORDER)
    if dialog.ShowModal() == wx.ID_OK:
    self.OpenProject(dialog.GetPath())
    --- a/Beremiz_service.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/Beremiz_service.py Tue Aug 15 12:17:51 2017 +0300
    @@ -212,7 +212,7 @@
    def OnOK(self, event):
    value = self.GetValue()
    - texts = {"value" : value}
    + texts = {"value": value}
    for function, message in self.Tests:
    if not function(value):
    message = wx.MessageDialog(self, message % texts, _("Error"), wx.OK|wx.ICON_ERROR)
    @@ -313,7 +313,7 @@
    ip_addr = '' if ip_addr is None else ip_addr
    dlg = ParamsEntryDialog(None, _("Enter the IP of the interface to bind"), defaultValue=ip_addr)
    dlg.SetTests([(re.compile('\d{1,3}(?:\.\d{1,3}){3}$').match, _("IP is not valid!")),
    - ( lambda x :len([x for x in x.split(".") if 0 <= int(x) <= 255]) == 4, _("IP is not valid!"))
    + ( lambda x:len([x for x in x.split(".") if 0 <= int(x) <= 255]) == 4, _("IP is not valid!"))
    ])
    if dlg.ShowModal() == wx.ID_OK:
    self.pyroserver.ip_addr = dlg.GetValue()
    @@ -321,7 +321,7 @@
    def OnTaskBarChangePort(self, evt):
    dlg = ParamsEntryDialog(None, _("Enter a port number "), defaultValue=str(self.pyroserver.port))
    - dlg.SetTests([(UnicodeType.isdigit, _("Port number must be an integer!")), (lambda port : 0 <= int(port) <= 65535 , _("Port number must be 0 <= port <= 65535!"))])
    + dlg.SetTests([(UnicodeType.isdigit, _("Port number must be an integer!")), (lambda port: 0 <= int(port) <= 65535, _("Port number must be 0 <= port <= 65535!"))])
    if dlg.ShowModal() == wx.ID_OK:
    self.pyroserver.port = int(dlg.GetValue())
    self.pyroserver.Stop()
    @@ -336,7 +336,7 @@
    servicename = self.pyroserver.servicename
    servicename = '' if servicename is None else servicename
    dlg = ParamsEntryDialog(None, _("Enter a name "), defaultValue=servicename)
    - dlg.SetTests([(lambda name : len(name) is not 0 , _("Name must not be null!"))])
    + dlg.SetTests([(lambda name: len(name) is not 0, _("Name must not be null!"))])
    if dlg.ShowModal() == wx.ID_OK:
    self.pyroserver.servicename = dlg.GetValue()
    self.pyroserver.Restart()
    @@ -368,7 +368,7 @@
    wx.CallAfter(wx.GetApp().ExitMainLoop)
    def UpdateIcon(self, plcstatus):
    - if plcstatus is "Started" :
    + if plcstatus is "Started":
    currenticon = self.MakeIcon(starticon)
    elif plcstatus is "Stopped":
    currenticon = self.MakeIcon(stopicon)
    @@ -452,7 +452,7 @@
    self.plcobj.AutoLoad()
    if self.plcobj.GetPLCstatus()[0] != "Empty":
    - if self.autostart :
    + if self.autostart:
    self.plcobj.StartPLC()
    self.plcobj.StatusChange()
    @@ -561,7 +561,7 @@
    installThreadExcepthook()
    if havetwisted:
    - if webport is not None :
    + if webport is not None:
    try:
    import runtime.NevowServer as NS
    except Exception, e:
    @@ -569,7 +569,7 @@
    webport = None
    NS.WorkingDir = WorkingDir
    - if wampconf is not None :
    + if wampconf is not None:
    try:
    import runtime.WampClient as WC
    except Exception, e:
    @@ -583,7 +583,7 @@
    execfile(extfilename, locals())
    if havetwisted:
    - if webport is not None :
    + if webport is not None:
    try:
    website = NS.RegisterWebsite(webport)
    pyruntimevars["website"] = website
    @@ -591,7 +591,7 @@
    except Exception, e:
    print _("Nevow Web service failed. "), e
    - if wampconf is not None :
    + if wampconf is not None:
    try:
    WC.RegisterWampClient(wampconf)
    pyruntimevars["wampsession"] = WC.GetSession
    @@ -609,7 +609,7 @@
    elif havewx:
    app.MainLoop()
    else:
    - try :
    + try:
    pyroserver.Loop()
    except KeyboardInterrupt,e:
    pass
    --- a/CodeFileTreeNode.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/CodeFileTreeNode.py Tue Aug 15 12:17:51 2017 +0300
    @@ -159,12 +159,12 @@
    def GetVariables(self):
    datas = []
    for var in self.CodeFileVariables(self.CodeFile):
    - datas.append({"Name" : var.getname(),
    - "Type" : var.gettype(),
    - "Initial" : var.getinitial(),
    - "Description" : var.getdesc(),
    - "OnChange" : var.getonchange(),
    - "Options" : var.getopts(),
    + datas.append({"Name": var.getname(),
    + "Type": var.gettype(),
    + "Initial": var.getinitial(),
    + "Description": var.getdesc(),
    + "OnChange": var.getonchange(),
    + "Options": var.getopts(),
    })
    return datas
    --- a/ConfigTreeNode.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/ConfigTreeNode.py Tue Aug 15 12:17:51 2017 +0300
    @@ -453,10 +453,10 @@
    while res in AllChannels: # While channel not free
    if res < CurrentChannel: # Want to go down ?
    res -= 1 # Test for n-1
    - if res < 0 :
    + if res < 0:
    self.GetCTRoot().logger.write_warning(_("Cannot find lower free IEC channel than %d\n") % CurrentChannel)
    return CurrentChannel # Can't go bellow 0, do nothing
    - else : # Want to go up ?
    + else: # Want to go up ?
    res += 1 # Test for n-1
    # Finally set IEC Channel
    self.BaseParams.setIEC_Channel(res)
    --- a/IDEFrame.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/IDEFrame.py Tue Aug 15 12:17:51 2017 +0300
    @@ -96,95 +96,95 @@
    # - Item icon filename
    # - Item tooltip text
    EditorToolBarItems = {
    - "FBD" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
    - "move", _("Move the view")),
    - (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARCOMMENT, "OnCommentTool",
    - "add_comment", _("Create a new comment")),
    - (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARVARIABLE, "OnVariableTool",
    - "add_variable", _("Create a new variable")),
    - (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARBLOCK, "OnBlockTool",
    - "add_block", _("Create a new block")),
    - (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARCONNECTION, "OnConnectionTool",
    - "add_connection", _("Create a new connection"))],
    - "LD" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
    - "move", _("Move the view")),
    - (True, FREEDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARCOMMENT, "OnCommentTool",
    - "add_comment", _("Create a new comment")),
    - (True, FREEDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARPOWERRAIL, "OnPowerRailTool",
    - "add_powerrail", _("Create a new power rail")),
    - (False, DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARRUNG, "OnRungTool",
    - "add_rung", _("Create a new rung")),
    - (True, FREEDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARCOIL, "OnCoilTool",
    - "add_coil", _("Create a new coil")),
    - (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARCONTACT, "OnContactTool",
    - "add_contact", _("Create a new contact")),
    - (False, DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARBRANCH, "OnBranchTool",
    - "add_branch", _("Create a new branch")),
    - (True, FREEDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARVARIABLE, "OnVariableTool",
    - "add_variable", _("Create a new variable")),
    - (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARBLOCK, "OnBlockTool",
    - "add_block", _("Create a new block")),
    - (True, FREEDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARCONNECTION, "OnConnectionTool",
    - "add_connection", _("Create a new connection"))],
    - "SFC" : [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
    - "move", _("Move the view")),
    - (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARCOMMENT, "OnCommentTool",
    - "add_comment", _("Create a new comment")),
    - (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARINITIALSTEP, "OnInitialStepTool",
    - "add_initial_step", _("Create a new initial step")),
    - (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARSTEP, "OnStepTool",
    - "add_step", _("Create a new step")),
    - (True, FREEDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARTRANSITION, "OnTransitionTool",
    - "add_transition", _("Create a new transition")),
    - (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARACTIONBLOCK, "OnActionBlockTool",
    - "add_action", _("Create a new action block")),
    - (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARDIVERGENCE, "OnDivergenceTool",
    - "add_divergence", _("Create a new divergence")),
    - (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARJUMP, "OnJumpTool",
    - "add_jump", _("Create a new jump")),
    - (True, FREEDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARVARIABLE, "OnVariableTool",
    - "add_variable", _("Create a new variable")),
    - (True, FREEDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARBLOCK, "OnBlockTool",
    - "add_block", _("Create a new block")),
    - (True, FREEDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARCONNECTION, "OnConnectionTool",
    - "add_connection", _("Create a new connection")),
    - (True, FREEDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARPOWERRAIL, "OnPowerRailTool",
    - "add_powerrail", _("Create a new power rail")),
    - (True, FREEDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARCONTACT, "OnContactTool",
    - "add_contact", _("Create a new contact"))],
    - "ST" : [],
    - "IL" : [],
    + "FBD": [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
    + "move", _("Move the view")),
    + (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARCOMMENT, "OnCommentTool",
    + "add_comment", _("Create a new comment")),
    + (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARVARIABLE, "OnVariableTool",
    + "add_variable", _("Create a new variable")),
    + (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARBLOCK, "OnBlockTool",
    + "add_block", _("Create a new block")),
    + (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARCONNECTION, "OnConnectionTool",
    + "add_connection", _("Create a new connection"))],
    + "LD": [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
    + "move", _("Move the view")),
    + (True, FREEDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARCOMMENT, "OnCommentTool",
    + "add_comment", _("Create a new comment")),
    + (True, FREEDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARPOWERRAIL, "OnPowerRailTool",
    + "add_powerrail", _("Create a new power rail")),
    + (False, DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARRUNG, "OnRungTool",
    + "add_rung", _("Create a new rung")),
    + (True, FREEDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARCOIL, "OnCoilTool",
    + "add_coil", _("Create a new coil")),
    + (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARCONTACT, "OnContactTool",
    + "add_contact", _("Create a new contact")),
    + (False, DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARBRANCH, "OnBranchTool",
    + "add_branch", _("Create a new branch")),
    + (True, FREEDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARVARIABLE, "OnVariableTool",
    + "add_variable", _("Create a new variable")),
    + (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARBLOCK, "OnBlockTool",
    + "add_block", _("Create a new block")),
    + (True, FREEDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARCONNECTION, "OnConnectionTool",
    + "add_connection", _("Create a new connection"))],
    + "SFC": [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
    + "move", _("Move the view")),
    + (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARCOMMENT, "OnCommentTool",
    + "add_comment", _("Create a new comment")),
    + (True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARINITIALSTEP, "OnInitialStepTool",
    + "add_initial_step", _("Create a new initial step")),
    + (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARSTEP, "OnStepTool",
    + "add_step", _("Create a new step")),
    + (True, FREEDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARTRANSITION, "OnTransitionTool",
    + "add_transition", _("Create a new transition")),
    + (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARACTIONBLOCK, "OnActionBlockTool",
    + "add_action", _("Create a new action block")),
    + (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARDIVERGENCE, "OnDivergenceTool",
    + "add_divergence", _("Create a new divergence")),
    + (False, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARJUMP, "OnJumpTool",
    + "add_jump", _("Create a new jump")),
    + (True, FREEDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARVARIABLE, "OnVariableTool",
    + "add_variable", _("Create a new variable")),
    + (True, FREEDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARBLOCK, "OnBlockTool",
    + "add_block", _("Create a new block")),
    + (True, FREEDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARCONNECTION, "OnConnectionTool",
    + "add_connection", _("Create a new connection")),
    + (True, FREEDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARPOWERRAIL, "OnPowerRailTool",
    + "add_powerrail", _("Create a new power rail")),
    + (True, FREEDRAWING_MODE,
    + ID_PLCOPENEDITOREDITORTOOLBARCONTACT, "OnContactTool",
    + "add_contact", _("Create a new contact"))],
    + "ST": [],
    + "IL": [],
    "debug": [(True, FREEDRAWING_MODE|DRIVENDRAWING_MODE,
    - ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
    - "move", _("Move the view"))],
    + ID_PLCOPENEDITOREDITORTOOLBARMOTION, "OnMotionTool",
    + "move", _("Move the view"))],
    }
    #-------------------------------------------------------------------------------
    @@ -885,15 +885,15 @@
    def SetRefreshFunctions(self):
    self.RefreshFunctions = {
    - TITLE : self.RefreshTitle,
    - EDITORTOOLBAR : self.RefreshEditorToolBar,
    - FILEMENU : self.RefreshFileMenu,
    - EDITMENU : self.RefreshEditMenu,
    - DISPLAYMENU : self.RefreshDisplayMenu,
    - PROJECTTREE : self.RefreshProjectTree,
    - POUINSTANCEVARIABLESPANEL : self.RefreshPouInstanceVariablesPanel,
    - LIBRARYTREE : self.RefreshLibraryPanel,
    - SCALING : self.RefreshScaling,
    + TITLE: self.RefreshTitle,
    + EDITORTOOLBAR: self.RefreshEditorToolBar,
    + FILEMENU: self.RefreshFileMenu,
    + EDITMENU: self.RefreshEditMenu,
    + DISPLAYMENU: self.RefreshDisplayMenu,
    + PROJECTTREE: self.RefreshProjectTree,
    + POUINSTANCEVARIABLESPANEL: self.RefreshPouInstanceVariablesPanel,
    + LIBRARYTREE: self.RefreshLibraryPanel,
    + SCALING: self.RefreshScaling,
    PAGETITLES: self.RefreshPageTitles}
    ## Call PLCOpenEditor refresh functions.
    @@ -1874,7 +1874,7 @@
    if name != "Project":
    new_id = wx.NewId()
    AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add POU"))
    - self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction({"Functions" : "function", "Function Blocks" : "functionBlock", "Programs" : "program"}[name]), id=new_id)
    + self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction({"Functions": "function", "Function Blocks": "functionBlock", "Programs": "program"}[name]), id=new_id)
    new_id = wx.NewId()
    AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Paste POU"))
    @@ -2557,7 +2557,7 @@
    # Viewer Printout
    #-------------------------------------------------------------------------------
    -UPPER_DIV = lambda x, y: (x / y) + {True : 0, False : 1}[(x % y) == 0]
    +UPPER_DIV = lambda x, y: (x / y) + {True: 0, False: 1}[(x % y) == 0]
    class GraphicPrintout(wx.Printout):
    --- a/PLCControler.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/PLCControler.py Tue Aug 15 12:17:51 2017 +0300
    @@ -1645,7 +1645,7 @@
    "list": [block for block in category["list"]
    if block["type"] in filter]}
    for category in self.TotalTypes]
    - blocktypes.append({"name" : USER_DEFINED_POUS,
    + blocktypes.append({"name": USER_DEFINED_POUS,
    "list": [pou.getblockInfos()
    for pou in project.getpous(name, filter)
    if (name is None or
    @@ -1936,9 +1936,14 @@
    def GetElementType(self, tagname):
    words = tagname.split("::")
    - return {"D" : ITEM_DATATYPE, "P" : ITEM_POU,
    - "T" : ITEM_TRANSITION, "A" : ITEM_ACTION,
    - "C" : ITEM_CONFIGURATION, "R" : ITEM_RESOURCE}[words[0]]
    + return {
    + "D": ITEM_DATATYPE,
    + "P": ITEM_POU,
    + "T": ITEM_TRANSITION,
    + "A": ITEM_ACTION,
    + "C": ITEM_CONFIGURATION,
    + "R": ITEM_RESOURCE
    + }[words[0]]
    #-------------------------------------------------------------------------------
    # Project opened Data types management functions
    --- a/PLCGenerator.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/PLCGenerator.py Tue Aug 15 12:17:51 2017 +0300
    @@ -29,14 +29,14 @@
    # Dictionary associating PLCOpen variable categories to the corresponding
    # IEC 61131-3 variable categories
    -varTypeNames = {"localVars" : "VAR", "tempVars" : "VAR_TEMP", "inputVars" : "VAR_INPUT",
    - "outputVars" : "VAR_OUTPUT", "inOutVars" : "VAR_IN_OUT", "externalVars" : "VAR_EXTERNAL",
    - "globalVars" : "VAR_GLOBAL", "accessVars" : "VAR_ACCESS"}
    +varTypeNames = {"localVars": "VAR", "tempVars": "VAR_TEMP", "inputVars": "VAR_INPUT",
    + "outputVars": "VAR_OUTPUT", "inOutVars": "VAR_IN_OUT", "externalVars": "VAR_EXTERNAL",
    + "globalVars": "VAR_GLOBAL", "accessVars": "VAR_ACCESS"}
    # Dictionary associating PLCOpen POU categories to the corresponding
    # IEC 61131-3 POU categories
    -pouTypeNames = {"function" : "FUNCTION", "functionBlock" : "FUNCTION_BLOCK", "program" : "PROGRAM"}
    +pouTypeNames = {"function": "FUNCTION", "functionBlock": "FUNCTION_BLOCK", "program": "PROGRAM"}
    errorVarTypes = {
    @@ -80,9 +80,9 @@
    def JoinList(separator, mylist):
    """ Helper for emulate join on element list """
    - if len(mylist) > 0 :
    + if len(mylist) > 0:
    return reduce(lambda x, y: x + separator + y, mylist)
    - else :
    + else:
    return mylist
    #-------------------------------------------------------------------------------
    @@ -187,7 +187,7 @@
    for i, dimension in enumerate(basetype_content.getdimension())]
    datatype_def += [("ARRAY [", ())]
    datatype_def += JoinList([(",", ())], dimensions)
    - datatype_def += [("] OF " , ()),
    + datatype_def += [("] OF ", ()),
    (basetype_name, (tagname, "base"))]
    # Data type is a structure
    elif basetype_content_type == "struct":
    @@ -401,7 +401,7 @@
    format(a1 = task.getname(), a2 = config_name, a3 = resource.getname())
    raise PLCGenException, msg
    - if single[0]=='[' and single[-1]==']' :
    + if single[0]=='[' and single[-1]==']':
    SNGLKW = "MULTI"
    else:
    SNGLKW = "SINGLE"
    @@ -916,7 +916,7 @@
    self.GenerateSFCJump(instance, pou)
    if len(self.InitialSteps) > 0 and len(self.SFCComputedBlocks) > 0:
    action_name = "COMPUTE_FUNCTION_BLOCKS"
    - action_infos = {"qualifier" : "S", "content" : action_name}
    + action_infos = {"qualifier": "S", "content": action_name}
    self.SFCNetworks["Steps"][self.InitialSteps[0]]["actions"].append(action_infos)
    self.SFCNetworks["Actions"][action_name] = (self.SFCComputedBlocks, ())
    self.Program = []
    @@ -924,7 +924,7 @@
    for initialstep in self.InitialSteps:
    self.ComputeSFCStep(initialstep)
    else:
    - otherInstances = {"outVariables&coils" : [], "blocks" : [], "connectors" : []}
    + otherInstances = {"outVariables&coils": [], "blocks": [], "connectors": []}
    orderedInstances = []
    for instance in body.getcontentInstances():
    if isinstance(instance, (OutVariableClass, InOutVariableClass, BlockClass)):
    @@ -1358,10 +1358,10 @@
    if step_name not in self.SFCNetworks["Steps"].keys():
    if step.getinitialStep():
    self.InitialSteps.append(step_name)
    - step_infos = {"id" : step.getlocalId(),
    - "initial" : step.getinitialStep(),
    - "transitions" : [],
    - "actions" : []}
    + step_infos = {"id": step.getlocalId(),
    + "initial": step.getinitialStep(),
    + "transitions": [],
    + "actions": []}
    self.SFCNetworks["Steps"][step_name] = step_infos
    if step.connectionPointIn is not None:
    instances = []
    @@ -1434,10 +1434,10 @@
    if step_name in self.SFCNetworks["Steps"].keys():
    actions = actionBlock.getactions()
    for i, action in enumerate(actions):
    - action_infos = {"id" : actionBlock.getlocalId(),
    - "qualifier" : action["qualifier"],
    - "content" : action["value"],
    - "num" : i}
    + action_infos = {"id": actionBlock.getlocalId(),
    + "qualifier": action["qualifier"],
    + "content": action["value"],
    + "num": i}
    if "duration" in action:
    action_infos["duration"] = action["duration"]
    if "indicator" in action:
    @@ -1484,11 +1484,11 @@
    steps.extend(self.ExtractConvergenceInputs(step, pou))
    elif isinstance(instance, SimultaneousConvergenceClass):
    steps.extend(self.ExtractConvergenceInputs(instance, pou))
    - transition_infos = {"id" : transition.getlocalId(),
    + transition_infos = {"id": transition.getlocalId(),
    "priority": transition.getpriority(),
    - "from": [],
    - "to" : [],
    - "content": []}
    + "from": [],
    + "to": [],
    + "content": []}
    self.SFCNetworks["Transitions"][transition] = transition_infos
    transitionValues = transition.getconditionContent()
    if transitionValues["type"] == "inline":
    @@ -1631,7 +1631,7 @@
    program += [("\n", ())]
    if len(self.Interface) == 0:
    raise PLCGenException, _("No variable defined in \"%s\" POU") % self.Name
    - if len(self.Program) == 0 :
    + if len(self.Program) == 0:
    raise PLCGenException, _("No body defined in \"%s\" POU") % self.Name
    var_number = 0
    for list_type, option, located, variables in self.Interface:
    --- a/PLCOpenEditor.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/PLCOpenEditor.py Tue Aug 15 12:17:51 2017 +0300
    @@ -476,16 +476,16 @@
    if result:
    ignored_exceptions.append(ex)
    info = {
    - 'app-title' : wx.GetApp().GetAppName(), # app_title
    - 'app-version' : app_version,
    - 'wx-version' : wx.VERSION_STRING,
    - 'wx-platform' : wx.Platform,
    - 'python-version' : platform.python_version(), #sys.version.split()[0],
    - 'platform' : platform.platform(),
    - 'e-type' : e_type,
    - 'e-value' : e_value,
    - 'date' : time.ctime(),
    - 'cwd' : os.getcwd(),
    + 'app-title': wx.GetApp().GetAppName(), # app_title
    + 'app-version': app_version,
    + 'wx-version': wx.VERSION_STRING,
    + 'wx-platform': wx.Platform,
    + 'python-version': platform.python_version(), #sys.version.split()[0],
    + 'platform': platform.platform(),
    + 'e-type': e_type,
    + 'e-value': e_value,
    + 'date': time.ctime(),
    + 'cwd': os.getcwd(),
    }
    if e_traceback:
    info['traceback'] = ''.join(traceback.format_tb(e_traceback)) + '%s: %s' % (e_type, e_value)
    --- a/POULibrary.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/POULibrary.py Tue Aug 15 12:17:51 2017 +0300
    @@ -48,7 +48,7 @@
    return self.CTR()
    def GetTypes(self):
    - return {"name" : self.GetName(), "types": self.LibraryControler.Project}
    + return {"name": self.GetName(), "types": self.LibraryControler.Project}
    def GetLibraryPath(self):
    raise Exception("Not implemented")
    --- a/ProjectController.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/ProjectController.py Tue Aug 15 12:17:51 2017 +0300
    @@ -547,7 +547,7 @@
    path = os.getenv("USERPROFILE")
    else:
    path = os.getenv("HOME")
    - dirdialog = wx.DirDialog(self.AppFrame , _("Choose a directory to save project"), path, wx.DD_NEW_DIR_BUTTON)
    + dirdialog = wx.DirDialog(self.AppFrame, _("Choose a directory to save project"), path, wx.DD_NEW_DIR_BUTTON)
    answer = dirdialog.ShowModal()
    dirdialog.Destroy()
    if answer == wx.ID_OK:
    @@ -964,7 +964,7 @@
    # prepare debug code
    variable_decl_array = []
    bofs = 0
    - for v in self._DbgVariablesList :
    + for v in self._DbgVariablesList:
    sz = DebugTypesSize.get(v["type"], 0)
    variable_decl_array += [
    "{&(%(C_path)s), " % v+
    @@ -1081,7 +1081,7 @@
    # Build
    try:
    - if not builder.build() :
    + if not builder.build():
    self.logger.write_error(_("C Build failed.\n"))
    return False
    except Exception, exc:
    @@ -1336,18 +1336,18 @@
    status = "Disconnected"
    if(self.previous_plcstate != status):
    for args in {
    - "Started" : [("_Run", False),
    - ("_Stop", True)],
    - "Stopped" : [("_Run", True),
    - ("_Stop", False)],
    - "Empty" : [("_Run", False),
    - ("_Stop", False)],
    - "Broken" : [],
    - "Disconnected" :[("_Run", False),
    - ("_Stop", False),
    - ("_Transfer", False),
    - ("_Connect", True),
    - ("_Disconnect", False)],
    + "Started": [("_Run", False),
    + ("_Stop", True)],
    + "Stopped": [("_Run", True),
    + ("_Stop", False)],
    + "Empty": [("_Run", False),
    + ("_Stop", False)],
    + "Broken": [],
    + "Disconnected":[("_Run", False),
    + ("_Stop", False),
    + ("_Transfer", False),
    + ("_Connect", True),
    + ("_Disconnect", False)],
    }.get(status,[]):
    self.ShowMethod(*args)
    self.previous_plcstate = status
    @@ -1569,11 +1569,11 @@
    plc_status, Traces = self._connector.GetTraceVariables()
    debug_getvar_retry += 1
    #print [dict.keys() for IECPath, (dict, log, status, fvalue) in self.IECdebug_datas.items()]
    - if plc_status == "Started" :
    + if plc_status == "Started":
    if len(Traces) > 0:
    Failed = False
    self.IECdebug_lock.acquire()
    - for debug_tick, debug_buff in Traces :
    + for debug_tick, debug_buff in Traces:
    debug_vars = UnpackDebugBuffer(debug_buff, self.TracedIECTypes)
    if (debug_vars is not None and
    len(debug_vars) == len(self.TracedIECPath)):
    @@ -1795,7 +1795,7 @@
    MD5 = self.GetLastBuildMD5()
    # Check if md5 file is empty : ask user to build PLC
    - if MD5 is None :
    + if MD5 is None:
    self.logger.write_error(_("Failed : Must build before transfer.\n"))
    return False
    @@ -1818,7 +1818,7 @@
    builder = self.GetBuilder()
    if builder is not None:
    data = builder.GetBinaryCode()
    - if data is not None :
    + if data is not None:
    if self._connector.NewPLC(MD5, data, extrafiles) and self.GetIECProgramsAndVariables():
    self.UnsubscribeAllDebugIECVariable()
    self.ProgramTransferred()
    @@ -1836,55 +1836,75 @@
    wx.CallAfter(self.UpdateMethodsFromPLCStatus)
    StatusMethods = [
    - {"bitmap" : "Build",
    - "name" : _("Build"),
    - "tooltip" : _("Build project into build folder"),
    - "method" : "_Build"},
    - {"bitmap" : "Clean",
    - "name" : _("Clean"),
    - "enabled" : False,
    - "tooltip" : _("Clean project build folder"),
    - "method" : "_Clean"},
    - {"bitmap" : "Run",
    - "name" : _("Run"),
    - "shown" : False,
    - "tooltip" : _("Start PLC"),
    - "method" : "_Run"},
    - {"bitmap" : "Stop",
    - "name" : _("Stop"),
    - "shown" : False,
    - "tooltip" : _("Stop Running PLC"),
    - "method" : "_Stop"},
    - {"bitmap" : "Connect",
    - "name" : _("Connect"),
    - "tooltip" : _("Connect to the target PLC"),
    - "method" : "_Connect"},
    - {"bitmap" : "Transfer",
    - "name" : _("Transfer"),
    - "shown" : False,
    - "tooltip" : _("Transfer PLC"),
    - "method" : "_Transfer"},
    - {"bitmap" : "Disconnect",
    - "name" : _("Disconnect"),
    - "shown" : False,
    - "tooltip" : _("Disconnect from PLC"),
    - "method" : "_Disconnect"},
    - {"bitmap" : "ShowIECcode",
    - "name" : _("Show code"),
    - "shown" : False,
    - "tooltip" : _("Show IEC code generated by PLCGenerator"),
    - "method" : "_showIECcode"},
    + {
    + "bitmap": "Build",
    + "name": _("Build"),
    + "tooltip": _("Build project into build folder"),
    + "method": "_Build"
    + },
    + {
    + "bitmap": "Clean",
    + "name": _("Clean"),
    + "tooltip": _("Clean project build folder"),
    + "method": "_Clean",
    + "enabled": False,
    + },
    + {
    + "bitmap": "Run",
    + "name": _("Run"),
    + "tooltip": _("Start PLC"),
    + "method": "_Run",
    + "shown": False,
    + },
    + {
    + "bitmap": "Stop",
    + "name": _("Stop"),
    + "tooltip": _("Stop Running PLC"),
    + "method": "_Stop",
    + "shown": False,
    + },
    + {
    + "bitmap": "Connect",
    + "name": _("Connect"),
    + "tooltip": _("Connect to the target PLC"),
    + "method": "_Connect"
    + },
    + {
    + "bitmap": "Transfer",
    + "name": _("Transfer"),
    + "tooltip": _("Transfer PLC"),
    + "method": "_Transfer",
    + "shown": False,
    + },
    + {
    + "bitmap": "Disconnect",
    + "name": _("Disconnect"),
    + "tooltip": _("Disconnect from PLC"),
    + "method": "_Disconnect",
    + "shown": False,
    + },
    + {
    + "bitmap": "ShowIECcode",
    + "name": _("Show code"),
    + "tooltip": _("Show IEC code generated by PLCGenerator"),
    + "method": "_showIECcode",
    + "shown": False,
    + },
    ]
    ConfNodeMethods = [
    - {"bitmap" : "editIECrawcode",
    - "name" : _("Raw IEC code"),
    - "tooltip" : _("Edit raw IEC code added to code generated by PLCGenerator"),
    - "method" : "_editIECrawcode"},
    - {"bitmap" : "ManageFolder",
    - "name" : _("Project Files"),
    - "tooltip" : _("Open a file explorer to manage project files"),
    - "method" : "_OpenProjectFiles"},
    + {
    + "bitmap": "editIECrawcode",
    + "name": _("Raw IEC code"),
    + "tooltip": _("Edit raw IEC code added to code generated by PLCGenerator"),
    + "method": "_editIECrawcode"
    + },
    + {
    + "bitmap": "ManageFolder",
    + "name": _("Project Files"),
    + "tooltip": _("Open a file explorer to manage project files"),
    + "method": "_OpenProjectFiles"
    + },
    ]
    --- a/canfestival/canfestival.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/canfestival/canfestival.py Tue Aug 15 12:17:51 2017 +0300
    @@ -178,10 +178,12 @@
    dialog.Destroy()
    ConfNodeMethods = [
    - {"bitmap" : "ExportSlave",
    - "name" : _("Export slave"),
    - "tooltip" : _("Export CanOpen slave to EDS file"),
    - "method" : "_ExportSlave"},
    + {
    + "bitmap": "ExportSlave",
    + "name": _("Export slave"),
    + "tooltip": _("Export CanOpen slave to EDS file"),
    + "method": "_ExportSlave"
    + },
    ]
    def CTNTestModified(self):
    @@ -228,10 +230,10 @@
    # allow access to local OD from Slave PLC
    pointers = config_utils.LocalODPointers(locations, current_location, slave)
    res = gen_cfile.GenerateFile(Gen_OD_path, slave, pointers)
    - if res :
    + if res:
    raise Exception, res
    res = eds_utils.GenerateEDSFile(os.path.join(buildpath, "Slave_%s.eds" % prefix), slave)
    - if res :
    + if res:
    raise Exception, res
    return [(Gen_OD_path,local_canfestival_config.getCFLAGS(CanFestivalPath))],"",False
    @@ -395,10 +397,12 @@
    return self._View
    ConfNodeMethods = [
    - {"bitmap" : "ShowMaster",
    - "name" : _("Show Master"),
    - "tooltip" : _("Show Master generated by config_utils"),
    - "method" : "_ShowGeneratedMaster"}
    + {
    + "bitmap": "ShowMaster",
    + "name": _("Show Master"),
    + "tooltip": _("Show Master generated by config_utils"),
    + "method": "_ShowGeneratedMaster"
    + }
    ]
    def OnCloseEditor(self, view):
    @@ -446,7 +450,7 @@
    raise Exception, e.message
    # Do generate C file.
    res = gen_cfile.GenerateFile(Gen_OD_path, master, pointers)
    - if res :
    + if res:
    raise Exception, res
    file = open(os.path.join(buildpath, "MasterGenerated.od"), "w")
    @@ -489,7 +493,7 @@
    def GetCanDriver(self):
    res = self.CanFestivalInstance.getCAN_Driver()
    - if not res :
    + if not res:
    return ""
    return res
    @@ -497,7 +501,7 @@
    can_driver = self.GetCanDriver()
    if can_driver is not None:
    can_drivers = local_canfestival_config.DLL_LIST
    - if can_driver not in can_drivers :
    + if can_driver not in can_drivers:
    can_driver = can_drivers[0]
    can_drv_ext = self.GetCTRoot().GetBuilder().extension
    can_drv_prefix = self.GetCTRoot().GetBuilder().dlopen_prefix
    @@ -506,22 +510,22 @@
    can_driver_name = ""
    - format_dict = {"locstr" : "_".join(map(str,self.GetCurrentLocation())),
    - "candriver" : can_driver_name,
    - "nodes_includes" : "",
    - "board_decls" : "",
    - "nodes_init" : "",
    - "nodes_open" : "",
    - "nodes_stop" : "",
    - "nodes_close" : "",
    - "nodes_send_sync" : "",
    - "nodes_proceed_sync" : "",
    - "slavebootups" : "",
    - "slavebootup_register" : "",
    - "post_sync" : "",
    - "post_sync_register" : "",
    - "pre_op" : "",
    - "pre_op_register" : "",
    + format_dict = {"locstr": "_".join(map(str,self.GetCurrentLocation())),
    + "candriver": can_driver_name,
    + "nodes_includes": "",
    + "board_decls": "",
    + "nodes_init": "",
    + "nodes_open": "",
    + "nodes_stop": "",
    + "nodes_close": "",
    + "nodes_send_sync": "",
    + "nodes_proceed_sync": "",
    + "slavebootups": "",
    + "slavebootup_register": "",
    + "post_sync": "",
    + "post_sync_register": "",
    + "pre_op": "",
    + "pre_op_register": "",
    }
    for child in self.IECSortedChildren():
    childlocstr = "_".join(map(str,child.GetCurrentLocation()))
    --- a/canfestival/config_utils.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/canfestival/config_utils.py Tue Aug 15 12:17:51 2017 +0300
    @@ -34,14 +34,14 @@
    RPDO = 1
    TPDO = 2
    -SlavePDOType = {"I" : TPDO, "Q" : RPDO}
    -InvertPDOType = {RPDO : TPDO, TPDO : RPDO}
    -PDOTypeBaseIndex = {RPDO : 0x1400, TPDO : 0x1800}
    -PDOTypeBaseCobId = {RPDO : 0x200, TPDO : 0x180}
    +SlavePDOType = {"I": TPDO, "Q": RPDO}
    +InvertPDOType = {RPDO: TPDO, TPDO: RPDO}
    +PDOTypeBaseIndex = {RPDO: 0x1400, TPDO: 0x1800}
    +PDOTypeBaseCobId = {RPDO: 0x200, TPDO: 0x180}
    VariableIncrement = 0x100
    -VariableStartIndex = {TPDO : 0x2000, RPDO : 0x4000}
    -VariableDirText = {TPDO : "__I", RPDO : "__Q"}
    +VariableStartIndex = {TPDO: 0x2000, RPDO: 0x4000}
    +VariableDirText = {TPDO: "__I", RPDO: "__Q"}
    VariableTypeOffset = dict(zip(["","X","B","W","D","L"], range(6)))
    TrashVariables = [(1, 0x01), (8, 0x05), (16, 0x06), (32, 0x07), (64, 0x1B)]
    @@ -179,7 +179,7 @@
    for PdoIdx in nodeRpdoIndexes + nodeTpdoIndexes:
    pdo_cobid = node.GetEntry(PdoIdx, 0x01)
    # Extract COB ID, if PDO isn't active
    - if pdo_cobid > 0x600 :
    + if pdo_cobid > 0x600:
    pdo_cobid -= 0x80000000
    # Remove COB ID from the list of available COB ID
    if pdo_cobid in self.ListCobIDAvailable:
    @@ -212,7 +212,7 @@
    RPDOnumber, TPDOnumber = self.RemoveUsedNodeCobId(self.MasterNode)
    # Store the indexes of the first RPDO and TPDO available for MasterNode
    - self.CurrentPDOParamsIdx = {RPDO : 0x1400 + RPDOnumber, TPDO : 0x1800 + TPDOnumber}
    + self.CurrentPDOParamsIdx = {RPDO: 0x1400 + RPDOnumber, TPDO: 0x1800 + TPDOnumber}
    # Prepare MasterNode with all nodelist slaves
    for idx, (nodeid, nodeinfos) in enumerate(self.NodeList.SlaveNodes.items()):
    @@ -307,8 +307,8 @@
    @param pdomapping: list od variables to map with PDO
    """
    # Add an entry to MasterMapping
    - self.MasterMapping[pdocobid] = {"type" : InvertPDOType[pdotype],
    - "mapping" : [None] + [(loc_infos["type"], name) for name, loc_infos in pdomapping]}
    + self.MasterMapping[pdocobid] = {"type": InvertPDOType[pdotype],
    + "mapping": [None] + [(loc_infos["type"], name) for name, loc_infos in pdomapping]}
    # Return the data to add to DCF
    if sync_TPDOs:
    @@ -381,7 +381,7 @@
    if location["IEC_TYPE"] != "BOOL" and subentry_infos["type"] != COlocationtype:
    raise PDOmappingException, _("Invalid type \"{a1}\"-> {a2} != {a3} for location \"{a4}\"").\
    - format(a1 = location["IEC_TYPE"], a2 = COlocationtype, a3 = subentry_infos["type"] , a4 = name)
    + format(a1 = location["IEC_TYPE"], a2 = COlocationtype, a3 = subentry_infos["type"], a4 = name)
    typeinfos = node.GetEntryInfos(COlocationtype)
    self.IECLocations[name] = {"type":COlocationtype, "pdotype":SlavePDOType[direction],
    @@ -426,7 +426,7 @@
    for value in values[1:]:
    if value != 0:
    mapping.append(value % 0x100)
    - self.MasterMapping[cobid] = {"type" : InvertPDOType[locationinfos["pdotype"]], "mapping" : mapping}
    + self.MasterMapping[cobid] = {"type": InvertPDOType[locationinfos["pdotype"]], "mapping": mapping}
    # Indicate that this PDO entry must be saved
    if locationinfos["bit"] is not None:
    @@ -440,7 +440,7 @@
    else:
    # Add location to those that haven't been mapped yet
    if locationinfos["nodeid"] not in self.LocationsNotMapped.keys():
    - self.LocationsNotMapped[locationinfos["nodeid"]] = {TPDO : [], RPDO : []}
    + self.LocationsNotMapped[locationinfos["nodeid"]] = {TPDO: [], RPDO: []}
    self.LocationsNotMapped[locationinfos["nodeid"]][locationinfos["pdotype"]].append((name, locationinfos))
    #-------------------------------------------------------------------------------
    @@ -582,8 +582,8 @@
    self.Manager.AddSubentriesToCurrent(mapvariableidx, 1, self.MasterNode)
    nbsubentries += 1
    # Add informations to the new subentry created
    - self.MasterNode.SetMappingEntry(mapvariableidx, nbsubentries, values = {"name" : subindexname})
    - self.MasterNode.SetMappingEntry(mapvariableidx, nbsubentries, values = {"type" : typeidx})
    + self.MasterNode.SetMappingEntry(mapvariableidx, nbsubentries, values = {"name": subindexname})
    + self.MasterNode.SetMappingEntry(mapvariableidx, nbsubentries, values = {"type": typeidx})
    # Set value of the PDO mapping
    typeinfos = self.Manager.GetEntryInfos(typeidx)
    @@ -647,7 +647,7 @@
    subentry_infos = slave.GetSubentryInfos(index, subindex)
    if subentry_infos["type"] != COlocationtype:
    raise PDOmappingException, _("Invalid type \"{a1}\"-> {a2} != {a3} for location \"{a4}\"").\
    - format( a1 = location["IEC_TYPE"], a2 = COlocationtype, a3 = subentry_infos["type"] , a4 = name)
    + format( a1 = location["IEC_TYPE"], a2 = COlocationtype, a3 = subentry_infos["type"], a4 = name)
    IECLocations[name] = COlocationtype
    pointers[(index, subindex)] = name
    --- a/connectors/WAMP/__init__.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/connectors/WAMP/__init__.py Tue Aug 15 12:17:51 2017 +0300
    @@ -52,10 +52,10 @@
    _WampSession = None
    print 'WAMP session left'
    -PLCObjDefaults = { "StartPLC": False,
    - "GetTraceVariables" : ("Broken",None),
    - "GetPLCstatus" : ("Broken",None),
    - "RemoteExec" : (-1, "RemoteExec script failed!")}
    +PLCObjDefaults = { "StartPLC": False,
    + "GetTraceVariables": ("Broken", None),
    + "GetPLCstatus": ("Broken", None),
    + "RemoteExec": (-1, "RemoteExec script failed!")}
    def WAMP_connector_factory(uri, confnodesroot):
    @@ -106,7 +106,7 @@
    wampfuncname = '.'.join((ID,funcname))
    def catcher_func(*args,**kwargs):
    global _WampSession
    - if _WampSession is not None :
    + if _WampSession is not None:
    try:
    return threads.blockingCallFromThread(
    reactor, _WampSession.call, wampfuncname,
    @@ -148,7 +148,7 @@
    return member
    # Try to get the proxy object
    - try :
    + try:
    return WampPLCObjectProxy()
    except Exception, msg:
    confnodesroot.logger.write_error(_("WAMP connection to '%s' failed.\n") % location)
    --- a/controls/CustomStyledTextCtrl.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/controls/CustomStyledTextCtrl.py Tue Aug 15 12:17:51 2017 +0300
    @@ -27,17 +27,17 @@
    if wx.Platform == '__WXMSW__':
    faces = { 'times': 'Times New Roman',
    - 'mono' : 'Courier New',
    - 'helv' : 'Arial',
    + 'mono': 'Courier New',
    + 'helv': 'Arial',
    'other': 'Comic Sans MS',
    - 'size' : 10,
    + 'size': 10,
    }
    else:
    faces = { 'times': 'Times',
    - 'mono' : 'Courier',
    - 'helv' : 'Helvetica',
    + 'mono': 'Courier',
    + 'helv': 'Helvetica',
    'other': 'new century schoolbook',
    - 'size' : 12,
    + 'size': 12,
    }
    NAVIGATION_KEYS = [
    --- a/controls/LibraryPanel.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/controls/LibraryPanel.py Tue Aug 15 12:17:51 2017 +0300
    @@ -212,7 +212,7 @@
    # Set data associated to tree item (only save that item is a
    # category)
    - self.Tree.SetPyData(category_item, {"type" : CATEGORY})
    + self.Tree.SetPyData(category_item, {"type": CATEGORY})
    # Iterate over functions and function blocks defined in library
    # category add a tree item to category tree item for each of
    @@ -239,16 +239,16 @@
    # Define data to associate to block tree item
    comment = blocktype["comment"]
    - block_data = {"type" : BLOCK,
    - "block_type" : blocktype["type"],
    - "inputs" : tuple([type
    - for name, type, modifier
    - in blocktype["inputs"]]),
    - "extension" : (len(blocktype["inputs"])
    - if blocktype["extensible"]
    - else None),
    - "comment": _(comment) +
    - blocktype.get("usage", "")}
    + block_data = {
    + "type": BLOCK,
    + "block_type": blocktype["type"],
    + "inputs": tuple([type
    + for name, type, modifier
    + in blocktype["inputs"]]),
    + "extension": (len(blocktype["inputs"])
    + if blocktype["extensible"] else None),
    + "comment": _(comment) + blocktype.get("usage", "")
    + }
    self.Tree.SetPyData(blocktype_item, block_data)
    # Select block tree item in tree if it corresponds to
    --- a/controls/SearchResultPanel.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/controls/SearchResultPanel.py Tue Aug 15 12:17:51 2017 +0300
    @@ -219,7 +219,7 @@
    child_name = GenerateName(infos[3:])
    child_infos = {"name": child_name,
    "type": child_type,
    - "data": (infos, start, end ,None),
    + "data": (infos, start, end, None),
    "text": text,
    "matches": 1,
    "children": [],
    --- a/controls/VariablePanel.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/controls/VariablePanel.py Tue Aug 15 12:17:51 2017 +0300
    @@ -49,14 +49,14 @@
    def GetVariableTableColnames(location):
    - _ = lambda x : x
    + _ = lambda x: x
    if location:
    return ["#", _("Name"), _("Class"), _("Type"), _("Location"), _("Initial Value"), _("Option"), _("Documentation")]
    return ["#", _("Name"), _("Class"), _("Type"), _("Initial Value"), _("Option"), _("Documentation")]
    def GetOptions(constant=True, retain=True, non_retain=True):
    - _ = lambda x : x
    + _ = lambda x: x
    options = [""]
    if constant:
    options.append(_("Constant"))
    @@ -69,7 +69,7 @@
    def GetFilterChoiceTransfer():
    - _ = lambda x : x
    + _ = lambda x: x
    return {_("All"): _("All"), _("Interface"): _("Interface"),
    _(" Input"): _("Input"), _(" Output"): _("Output"), _(" InOut"): _("InOut"),
    _(" External"): _("External"), _("Variables"): _("Variables"), _(" Local"): _("Local"),
    @@ -122,7 +122,7 @@
    value = getattr(self.data[row], colname, "")
    if colname == "Type" and isinstance(value, TupleType):
    if value[0] == "array":
    - return "ARRAY [%s] OF %s" % (",".join(map(lambda x : "..".join(x), value[2])), value[1])
    + return "ARRAY [%s] OF %s" % (",".join(map(lambda x: "..".join(x), value[2])), value[1])
    if not isinstance(value, (StringType, UnicodeType)):
    value = str(value)
    if colname in ["Class", "Option"]:
    @@ -389,7 +389,7 @@
    if element_type in ["functionBlock","program"]:
    var_infos.Class = "Local"
    var_infos.InitialValue = values[0]
    - else :
    + else:
    return
    else:
    var_infos.Class = "External"
    @@ -491,9 +491,9 @@
    self.DefaultValue = _VariableInfos("", "", "", "", "", True, "", DefaultType, ([], []), 0)
    if element_type in ["config", "resource"]:
    - self.DefaultTypes = {"All" : "Global"}
    + self.DefaultTypes = {"All": "Global"}
    else:
    - self.DefaultTypes = {"All" : "Local", "Interface" : "Input", "Variables" : "Local"}
    + self.DefaultTypes = {"All": "Local", "Interface": "Input", "Variables": "Local"}
    if element_type in ["config", "resource"] \
    or element_type in ["program", "transition", "action"]:
    --- a/dialogs/ArrayTypeDialog.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/dialogs/ArrayTypeDialog.py Tue Aug 15 12:17:51 2017 +0300
    @@ -83,7 +83,7 @@
    if isinstance(infos, TupleType) and infos[0] == "array":
    self.BaseType.SetStringSelection(infos[1])
    - self.Dimensions.SetStrings(map(lambda x : "..".join(x), infos[2]))
    + self.Dimensions.SetStrings(map(lambda x: "..".join(x), infos[2]))
    elif infos in datatypes:
    self.BaseType.SetStringSelection(infos)
    --- a/dialogs/BrowseLocationsDialog.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/dialogs/BrowseLocationsDialog.py Tue Aug 15 12:17:51 2017 +0300
    @@ -37,7 +37,7 @@
    def GetDirFilterChoiceOptions():
    - _ = lambda x : x
    + _ = lambda x: x
    return [(_("All"), [LOCATION_VAR_INPUT, LOCATION_VAR_OUTPUT, LOCATION_VAR_MEMORY]),
    (_("Input"), [LOCATION_VAR_INPUT]),
    (_("Output"), [LOCATION_VAR_OUTPUT]),
    @@ -46,7 +46,7 @@
    def GetTypeFilterChoiceOptions():
    - _ = lambda x : x
    + _ = lambda x: x
    return [_("All"),
    _("Type and derivated"),
    _("Type strict")]
    --- a/dialogs/DiscoveryDialog.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/dialogs/DiscoveryDialog.py Tue Aug 15 12:17:51 2017 +0300
    @@ -139,11 +139,11 @@
    self.LatestSelection=None
    def __del__(self):
    - if self.Browser is not None : self.Browser.cancel()
    + if self.Browser is not None: self.Browser.cancel()
    self.ZeroConfInstance.close()
    def RefreshList(self):
    - if self.Browser is not None : self.Browser.cancel()
    + if self.Browser is not None: self.Browser.cancel()
    self.Browser = ServiceBrowser(self.ZeroConfInstance, service_type, self)
    def OnRefreshButton(self, event):
    @@ -157,7 +157,7 @@
    def OnIpButton(self, event):
    if self.LatestSelection is not None:
    - l = lambda col : self.getColumnText(self.LatestSelection,col)
    + l = lambda col: self.getColumnText(self.LatestSelection,col)
    self.URI = "%s://%s:%s" % tuple(map(l,(1,2,3)))
    self.EndModal(wx.ID_OK)
    event.Skip()
    --- a/dialogs/FBDVariableDialog.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/dialogs/FBDVariableDialog.py Tue Aug 15 12:17:51 2017 +0300
    @@ -35,9 +35,12 @@
    # Dictionaries containing correspondence between variable block class and string
    # to be shown in Class combo box in both sense
    -VARIABLE_CLASSES_DICT = {INPUT : _("Input"),
    - INOUT : _("InOut"),
    - OUTPUT : _("Output")}
    +VARIABLE_CLASSES_DICT = {
    + INPUT: _("Input"),
    + INOUT: _("InOut"),
    + OUTPUT: _("Output")
    +}
    +
    VARIABLE_CLASSES_DICT_REVERSE = dict(
    [(value, key) for key, value in VARIABLE_CLASSES_DICT.iteritems()])
    --- a/dialogs/ForceVariableDialog.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/dialogs/ForceVariableDialog.py Tue Aug 15 12:17:51 2017 +0300
    @@ -30,11 +30,11 @@
    # Helpers
    #-------------------------------------------------------------------------------
    -LOCATIONDATATYPES = {"X" : ["BOOL"],
    - "B" : ["SINT", "USINT", "BYTE", "STRING"],
    - "W" : ["INT", "UINT", "WORD", "WSTRING"],
    - "D" : ["DINT", "UDINT", "REAL", "DWORD"],
    - "L" : ["LINT", "ULINT", "LREAL", "LWORD"]}
    +LOCATIONDATATYPES = {"X": ["BOOL"],
    + "B": ["SINT", "USINT", "BYTE", "STRING"],
    + "W": ["INT", "UINT", "WORD", "WSTRING"],
    + "D": ["DINT", "UDINT", "REAL", "DWORD"],
    + "L": ["LINT", "ULINT", "LREAL", "LWORD"]}
    def gen_get_function(f):
    --- a/dialogs/PouActionDialog.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/dialogs/PouActionDialog.py Tue Aug 15 12:17:51 2017 +0300
    @@ -29,7 +29,7 @@
    def GetActionLanguages():
    - _ = lambda x : x
    + _ = lambda x: x
    return [_("IL"), _("ST"), _("LD"), _("FBD")]
    ACTION_LANGUAGES_DICT = dict([(_(language), language) for language in GetActionLanguages()])
    --- a/dialogs/PouDialog.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/dialogs/PouDialog.py Tue Aug 15 12:17:51 2017 +0300
    @@ -29,13 +29,13 @@
    def GetPouTypes():
    - _ = lambda x : x
    + _ = lambda x: x
    return [_("function"), _("functionBlock"), _("program")]
    POU_TYPES_DICT = dict([(_(pou_type), pou_type) for pou_type in GetPouTypes()])
    def GetPouLanguages():
    - _ = lambda x : x
    + _ = lambda x: x
    return [_("IL"), _("ST"), _("LD"), _("FBD"), _("SFC")]
    --- a/dialogs/PouTransitionDialog.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/dialogs/PouTransitionDialog.py Tue Aug 15 12:17:51 2017 +0300
    @@ -33,7 +33,7 @@
    def GetTransitionLanguages():
    - _ = lambda x : x
    + _ = lambda x: x
    return [_("IL"), _("ST"), _("LD"), _("FBD")]
    TRANSITION_LANGUAGES_DICT = dict([(_(language), language) for language in GetTransitionLanguages()])
    --- a/dialogs/SFCTransitionDialog.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/dialogs/SFCTransitionDialog.py Tue Aug 15 12:17:51 2017 +0300
    @@ -161,7 +161,7 @@
    Return SFC transition parameters defined in dialog
    @return: {parameter_name: parameter_value,...}
    """
    - values = {"priority" : self.Priority.GetValue()}
    + values = {"priority": self.Priority.GetValue()}
    values["type"], values["value"] = self.GetTransitionType()
    values["width"], values["height"] = self.Element.GetSize()
    return values
    --- a/docutil/docpdf.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/docutil/docpdf.py Tue Aug 15 12:17:51 2017 +0300
    @@ -48,14 +48,14 @@
    def open_win_pdf(readerexepath, pdffile, pagenum = None):
    - if pagenum != None :
    + if pagenum != None:
    os.spawnl(os.P_DETACH, readerexepath, "AcroRd32.exe", "/A", "page=%d=OpenActions" % pagenum, '"%s"' % pdffile)
    else:
    os.spawnl(os.P_DETACH, readerexepath, "AcroRd32.exe", '"%s"' % pdffile)
    def open_lin_pdf(readerexepath, pdffile, pagenum = None):
    - if pagenum == None :
    + if pagenum == None:
    os.system("%s -remote DS301 %s &" % (readerexepath, pdffile))
    else:
    print "Open pdf %s at page %d" % (pdffile, pagenum)
    @@ -63,7 +63,7 @@
    def open_pdf(pdffile, pagenum = None):
    - if wx.Platform == '__WXMSW__' :
    + if wx.Platform == '__WXMSW__':
    try:
    readerpath = get_acroversion()
    except:
    --- a/docutil/docsvg.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/docutil/docsvg.py Tue Aug 15 12:17:51 2017 +0300
    @@ -39,7 +39,7 @@
    def open_win_svg(svgexepath, svgfile):
    """ Open Inkscape on Windows platform """
    popenargs = [svgexepath]
    - if svgfile is not None :
    + if svgfile is not None:
    popenargs.append(svgfile)
    subprocess.Popen(popenargs).pid
    @@ -47,12 +47,12 @@
    def open_lin_svg(svgexepath, svgfile):
    """ Open Inkscape on Linux platform """
    if os.path.isfile("/usr/bin/inkscape"):
    - os.system("%s %s &" % (svgexepath , svgfile))
    + os.system("%s %s &" % (svgexepath, svgfile))
    def open_svg(svgfile):
    """ Generic function to open SVG file """
    - if wx.Platform == '__WXMSW__' :
    + if wx.Platform == '__WXMSW__':
    try:
    open_win_svg(get_inkscape_path(), svgfile)
    except:
    --- a/editors/CodeFileEditor.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/editors/CodeFileEditor.py Tue Aug 15 12:17:51 2017 +0300
    @@ -677,7 +677,7 @@
    self.ParentWindow = window
    self.Controler = controler
    - self.VariablesDefaultValue = {"Name" : "", "Type" : DefaultType, "Initial": "",
    + self.VariablesDefaultValue = {"Name": "", "Type": DefaultType, "Initial": "",
    "Description":"", "OnChange":"", "Options":""}
    self.Table = VariablesTable(self, [], self.GetVariableTableColnames())
    self.ColAlignements = [wx.ALIGN_RIGHT] + \
    @@ -736,7 +736,7 @@
    self.Table.ResetView(self.VariablesGrid)
    def GetVariableTableColnames(self):
    - _ = lambda x : x
    + _ = lambda x: x
    return ["#", _("Name"),_("Type"), _("Initial"), _("Description"), _("OnChange"), _("Options")]
    def RefreshModel(self):
    --- a/editors/ConfTreeNodeEditor.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/editors/ConfTreeNodeEditor.py Tue Aug 15 12:17:51 2017 +0300
    @@ -38,17 +38,17 @@
    if wx.Platform == '__WXMSW__':
    faces = { 'times': 'Times New Roman',
    - 'mono' : 'Courier New',
    - 'helv' : 'Arial',
    + 'mono': 'Courier New',
    + 'helv': 'Arial',
    'other': 'Comic Sans MS',
    - 'size' : 16,
    + 'size': 16,
    }
    else:
    faces = { 'times': 'Times',
    - 'mono' : 'Courier',
    - 'helv' : 'Helvetica',
    + 'mono': 'Courier',
    + 'helv': 'Helvetica',
    'other': 'new century schoolbook',
    - 'size' : 18,
    + 'size': 18,
    }
    SCROLLBAR_UNIT = 10
    --- a/editors/DataTypeEditor.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/editors/DataTypeEditor.py Tue Aug 15 12:17:51 2017 +0300
    @@ -48,12 +48,12 @@
    def GetElementsTableColnames():
    - _ = lambda x : x
    + _ = lambda x: x
    return ["#", _("Name"), _("Type"), _("Initial Value")]
    def GetDatatypeTypes():
    - _ = lambda x : x
    + _ = lambda x: x
    return [_("Directly"), _("Subrange"), _("Enumerated"), _("Array"), _("Structure")]
    DATATYPE_TYPES_DICT = dict([(_(datatype), datatype) for datatype in GetDatatypeTypes()])
    @@ -81,7 +81,7 @@
    if colname == "Type" and isinstance(value, TupleType):
    if value[0] == "array":
    - return "ARRAY [%s] OF %s" % (",".join(map(lambda x : "..".join(x), value[2])), value[1])
    + return "ARRAY [%s] OF %s" % (",".join(map(lambda x: "..".join(x), value[2])), value[1])
    return value
    def SetValue(self, row, col, value):
    @@ -379,7 +379,7 @@
    def __init__(self, parent, tagname, window, controler):
    EditorPanel.__init__(self, parent, tagname, window, controler)
    - self.StructureElementDefaultValue = {"Name" : "", "Type" : DefaultType, "Initial Value" : ""}
    + self.StructureElementDefaultValue = {"Name": "", "Type": DefaultType, "Initial Value": ""}
    self.StructureElementsTable = ElementsTable(self, [], GetElementsTableColnames())
    self.StructureColSizes = [40, 150, 100, 250]
    self.StructureColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT]
    @@ -501,7 +501,7 @@
    self.EnumeratedInitialValue.SetStringSelection(type_infos["initial"])
    elif type_infos["type"] == "Array":
    self.ArrayBaseType.SetStringSelection(type_infos["base_type"])
    - self.ArrayDimensions.SetStrings(map(lambda x : "..".join(x), type_infos["dimensions"]))
    + self.ArrayDimensions.SetStrings(map(lambda x: "..".join(x), type_infos["dimensions"]))
    self.ArrayInitialValue.SetValue(type_infos["initial"])
    elif type_infos["type"] == "Structure":
    self.StructureElementsTable.SetData(type_infos["elements"])
    @@ -723,7 +723,7 @@
    def RefreshTypeInfos(self):
    selected = DATATYPE_TYPES_DICT[self.DerivationType.GetStringSelection()]
    - infos = {"type" : selected}
    + infos = {"type": selected}
    if selected == "Directly":
    infos["base_type"] = self.DirectlyBaseType.GetStringSelection()
    infos["initial"] = self.DirectlyInitialValue.GetValue()
    @@ -795,7 +795,7 @@
    self.StructureElementsTable.ClearHighlights(highlight_type)
    self.RefreshView()
    - def AddHighlight(self, infos, start, end ,highlight_type):
    + def AddHighlight(self, infos, start, end, highlight_type):
    self.Highlights.append((infos, start, end, highlight_type))
    self.RefreshHighlightsTimer.Start(int(REFRESH_HIGHLIGHT_PERIOD * 1000), oneShot=True)
    --- a/editors/ResourceEditor.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/editors/ResourceEditor.py Tue Aug 15 12:17:51 2017 +0300
    @@ -65,16 +65,16 @@
    #-------------------------------------------------------------------------------
    def GetTasksTableColnames():
    - _ = lambda x : x
    + _ = lambda x: x
    return [_("Name"), _("Triggering"), _("Single"), _("Interval"), _("Priority")]
    def GetTaskTriggeringOptions():
    - _ = lambda x : x
    + _ = lambda x: x
    return [_("Interrupt"), _("Cyclic")]
    TASKTRIGGERINGOPTIONS_DICT = dict([(_(option), option) for option in GetTaskTriggeringOptions()])
    -SingleCellEditor = lambda *x : wx.grid.GridCellChoiceEditor()
    +SingleCellEditor = lambda *x: wx.grid.GridCellChoiceEditor()
    def CheckSingle(single, varlist):
    @@ -82,7 +82,7 @@
    def GetInstancesTableColnames():
    - _ = lambda x : x
    + _ = lambda x: x
    return [_("Name"), _("Type"), _("Task")]
    @@ -292,7 +292,7 @@
    self.RefreshHighlightsTimer = wx.Timer(self, -1)
    self.Bind(wx.EVT_TIMER, self.OnRefreshHighlightsTimer, self.RefreshHighlightsTimer)
    - self.TasksDefaultValue = {"Name" : "", "Triggering" : "", "Single" : "", "Interval" : "", "Priority" : 0}
    + self.TasksDefaultValue = {"Name": "", "Triggering": "", "Single": "", "Interval": "", "Priority": 0}
    self.TasksTable = ResourceTable(self, [], GetTasksTableColnames())
    self.TasksTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_RIGHT, wx.ALIGN_RIGHT])
    self.TasksTable.SetColSizes([200, 100, 100, 150, 100])
    @@ -327,7 +327,7 @@
    self.TasksTable.ResetView(self.TasksGrid)
    self.TasksGrid.RefreshButtons()
    - self.InstancesDefaultValue = {"Name" : "", "Type" : "", "Task" : ""}
    + self.InstancesDefaultValue = {"Name": "", "Type": "", "Task": ""}
    self.InstancesTable = ResourceTable(self, [], GetInstancesTableColnames())
    self.InstancesTable.SetColAlignements([wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT])
    self.InstancesTable.SetColSizes([200, 150, 150])
    @@ -486,7 +486,7 @@
    message = _("\"%s\" is not a valid identifier!") % value
    elif value.upper() in IEC_KEYWORDS:
    message = _("\"%s\" is a keyword. It can't be used!") % value
    - elif value.upper() in [var["Name"].upper() for i ,var in enumerate(self.InstancesTable.data) if i!=row]:
    + elif value.upper() in [var["Name"].upper() for i, var in enumerate(self.InstancesTable.data) if i!=row]:
    message = _("An instance with the same name already exists!")
    if message is not None:
    event.Veto()
    --- a/editors/Viewer.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/editors/Viewer.py Tue Aug 15 12:17:51 2017 +0300
    @@ -66,17 +66,17 @@
    if wx.Platform == '__WXMSW__':
    faces = { 'times': 'Times New Roman',
    - 'mono' : 'Courier New',
    - 'helv' : 'Arial',
    + 'mono': 'Courier New',
    + 'helv': 'Arial',
    'other': 'Comic Sans MS',
    - 'size' : 10,
    + 'size': 10,
    }
    else:
    faces = { 'times': 'Times',
    - 'mono' : 'Courier',
    - 'helv' : 'Helvetica',
    + 'mono': 'Courier',
    + 'helv': 'Helvetica',
    'other': 'new century schoolbook',
    - 'size' : 12,
    + 'size': 12,
    }
    if wx.Platform == '__WXMSW__':
    @@ -1359,7 +1359,7 @@
    def loadInstance(self, instance, remaining_instances, selection):
    self.current_id = max(self.current_id, instance.id)
    creation_function = ElementCreationFunctions.get(instance.type, None)
    - connectors = {"inputs" : [], "outputs" : []}
    + connectors = {"inputs": [], "outputs": []}
    specific_values = instance.specific_values
    if creation_function is not None:
    element = creation_function(self, instance.id, specific_values)
    @@ -2005,7 +2005,7 @@
    if element is None or element.TestHandle(event) == (0, 0):
    connector = self.FindBlockConnector(pos, self.SelectedElement.GetConnectionDirection())
    if connector is not None:
    - event.Dragging = lambda : True
    + event.Dragging = lambda: True
    self.SelectedElement.OnMotion(event, dc, self.Scaling)
    if self.SelectedElement.EndConnected is not None:
    self.SelectedElement.ResetPoints()
    @@ -2797,12 +2797,14 @@
    dialog = FBDBlockDialog(self.ParentWindow, self.Controler, self.TagName)
    dialog.SetPreviewFont(self.GetFont())
    dialog.SetMinElementSize(block.GetSize())
    - old_values = {"name" : block.GetName(),
    - "type" : block.GetType(),
    - "extension" : block.GetExtension(),
    - "inputs" : block.GetInputTypes(),
    - "executionControl" : block.GetExecutionControl(),
    - "executionOrder" : block.GetExecutionOrder()}
    + old_values = {
    + "name": block.GetName(),
    + "type": block.GetType(),
    + "extension": block.GetExtension(),
    + "inputs": block.GetInputTypes(),
    + "executionControl": block.GetExecutionControl(),
    + "executionOrder": block.GetExecutionOrder()
    + }
    dialog.SetValues(old_values)
    if dialog.ShowModal() == wx.ID_OK:
    new_values = dialog.GetValues()
    @@ -2831,8 +2833,11 @@
    dialog = FBDVariableDialog(self.ParentWindow, self.Controler, self.TagName)
    dialog.SetPreviewFont(self.GetFont())
    dialog.SetMinElementSize(variable.GetSize())
    - old_values = {"expression" : variable.GetName(), "class" : variable.GetType(),
    - "executionOrder" : variable.GetExecutionOrder()}
    + old_values = {
    + "expression": variable.GetName(),
    + "class": variable.GetType(),
    + "executionOrder": variable.GetExecutionOrder()
    + }
    dialog.SetValues(old_values)
    if dialog.ShowModal() == wx.ID_OK:
    new_values = dialog.GetValues()
    @@ -2860,7 +2865,7 @@
    dialog = ConnectionDialog(self.ParentWindow, self.Controler, self.TagName, True)
    dialog.SetPreviewFont(self.GetFont())
    dialog.SetMinElementSize(connection.GetSize())
    - values = {"name" : connection.GetName(), "type" : connection.GetType()}
    + values = {"name": connection.GetName(), "type": connection.GetType()}
    dialog.SetValues(values)
    result = dialog.ShowModal()
    dialog.Destroy()
    @@ -2892,8 +2897,8 @@
    dialog = LDElementDialog(self.ParentWindow, self.Controler, self.TagName, "contact")
    dialog.SetPreviewFont(self.GetFont())
    dialog.SetMinElementSize(contact.GetSize())
    - dialog.SetValues({"variable" : contact.GetName(),
    - "modifier" : contact.GetType()})
    + dialog.SetValues({"variable": contact.GetName(),
    + "modifier": contact.GetType()})
    if dialog.ShowModal() == wx.ID_OK:
    values = dialog.GetValues()
    rect = contact.GetRedrawRect(1, 1)
    @@ -2912,8 +2917,8 @@
    dialog = LDElementDialog(self.ParentWindow, self.Controler, self.TagName, "coil")
    dialog.SetPreviewFont(self.GetFont())
    dialog.SetMinElementSize(coil.GetSize())
    - dialog.SetValues({"variable" : coil.GetName(),
    - "modifier" : coil.GetType()})
    + dialog.SetValues({"variable": coil.GetName(),
    + "modifier": coil.GetType()})
    if dialog.ShowModal() == wx.ID_OK:
    values = dialog.GetValues()
    rect = coil.GetRedrawRect(1, 1)
    @@ -2960,7 +2965,7 @@
    dialog.SetMinElementSize(step.GetSize())
    connectors = step.GetConnectors()
    dialog.SetValues({
    - "name" : step.GetName(),
    + "name": step.GetName(),
    "input": len(connectors["inputs"]) > 0,
    "output": len(connectors["outputs"]) > 0,
    "action": step.GetActionConnector() != None})
    --- a/graphics/FBD_Objects.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/graphics/FBD_Objects.py Tue Aug 15 12:17:51 2017 +0300
    @@ -220,7 +220,7 @@
    # Returns all the block connectors
    def GetConnectors(self):
    - return {"inputs" : self.Inputs, "outputs" : self.Outputs}
    + return {"inputs": self.Inputs, "outputs": self.Outputs}
    # Test if point given is on one of the block connectors
    def TestConnector(self, pt, direction = None, exclude = True):
    @@ -420,7 +420,7 @@
    return self.Description
    # Adds an highlight to the block
    - def AddHighlight(self, infos, start, end ,highlight_type):
    + def AddHighlight(self, infos, start, end, highlight_type):
    if infos[0] in ["type", "name"] and start[0] == 0 and end[0] == 0:
    highlights = self.Highlights.setdefault(infos[0], [])
    AddHighlight(highlights, (start, end, highlight_type))
    @@ -843,7 +843,7 @@
    return connection
    def GetConnectorTranslation(self, element):
    - return {self.Connector : element.Connector}
    + return {self.Connector: element.Connector}
    # Unconnect connector
    def Clean(self):
    --- a/graphics/GraphicCommons.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/graphics/GraphicCommons.py Tue Aug 15 12:17:51 2017 +0300
    @@ -105,14 +105,14 @@
    REFRESH_HIGHLIGHT_PERIOD = 0.1
    HANDLE_CURSORS = {
    - (1, 1) : 2,
    - (3, 3) : 2,
    - (1, 3) : 3,
    - (3, 1) : 3,
    - (1, 2) : 4,
    - (3, 2) : 4,
    - (2, 1) : 5,
    - (2, 3) : 5
    + (1, 1): 2,
    + (3, 3): 2,
    + (1, 3): 3,
    + (3, 1): 3,
    + (1, 2): 4,
    + (3, 2): 4,
    + (2, 1): 5,
    + (2, 3): 5
    }
    --- a/graphics/LD_Objects.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/graphics/LD_Objects.py Tue Aug 15 12:17:51 2017 +0300
    @@ -249,7 +249,7 @@
    position = connector.GetRelPosition()
    self.RealConnectors.append(max(0., min(float(position.y - self.Extensions[0]) / float(height), 1.)))
    elif len(self.Connectors) > 1:
    - self.RealConnectors = map(lambda x : x * 1 / (len(self.Connectors) - 1), xrange(len(self.Connectors)))
    + self.RealConnectors = map(lambda x: x * 1 / (len(self.Connectors) - 1), xrange(len(self.Connectors)))
    else:
    self.RealConnectors = [0.5]
    Graphic_Element.OnLeftDown(self, event, dc, scaling)
    @@ -428,7 +428,7 @@
    return contact
    def GetConnectorTranslation(self, element):
    - return {self.Input : element.Input, self.Output : element.Output}
    + return {self.Input: element.Input, self.Output: element.Output}
    # Returns the RedrawRect
    def GetRedrawRect(self, movex = 0, movey = 0):
    @@ -743,7 +743,7 @@
    return coil
    def GetConnectorTranslation(self, element):
    - return {self.Input : element.Input, self.Output : element.Output}
    + return {self.Input: element.Input, self.Output: element.Output}
    # Returns the RedrawRect
    def GetRedrawRect(self, movex = 0, movey = 0):
    --- a/graphics/SFC_Objects.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/graphics/SFC_Objects.py Tue Aug 15 12:17:51 2017 +0300
    @@ -646,7 +646,7 @@
    return transition
    def GetConnectorTranslation(self, element):
    - connectors = {self.Input : element.Input, self.Output : element.Output}
    + connectors = {self.Input: element.Input, self.Output: element.Output}
    if self.Type == "connection" and self.Condition is not None:
    connectors[self.Condition] = element.Condition
    return connectors
    @@ -953,7 +953,7 @@
    self.Output.RefreshWires()
    # Adds an highlight to the block
    - def AddHighlight(self, infos, start, end ,highlight_type):
    + def AddHighlight(self, infos, start, end, highlight_type):
    if infos[0] in ["reference", "inline", "priority"] and start[0] == 0 and end[0] == 0:
    highlights = self.Highlights.setdefault(infos[0], [])
    AddHighlight(highlights, (start, end, highlight_type))
    @@ -1544,7 +1544,7 @@
    return jump
    def GetConnectorTranslation(self, element):
    - return {self.Input : element.Input}
    + return {self.Input: element.Input}
    # Returns the RedrawRect
    def GetRedrawRect(self, movex = 0, movey = 0):
    @@ -1822,7 +1822,7 @@
    return action_block
    def GetConnectorTranslation(self, element):
    - return {self.Input : element.Input}
    + return {self.Input: element.Input}
    # Returns the RedrawRect
    def GetRedrawRect(self, movex = 0, movey = 0):
    --- a/i18n/mki18n.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/i18n/mki18n.py Tue Aug 15 12:17:51 2017 +0300
    @@ -141,7 +141,7 @@
    # m a k e P O ( ) -- Build the Portable Object file for the application --
    # ^^^^^^^^^^^^^^^
    #
    -def makePO(applicationDirectoryPath, applicationDomain=None, verbose=0) :
    +def makePO(applicationDirectoryPath, applicationDomain=None, verbose=0):
    """Build the Portable Object Template file for the application.
    makePO builds the .pot file for the application stored inside
    @@ -204,7 +204,7 @@
    if langCode == 'en':
    pass
    else:
    - langPOfileName = "%s_%s.po" % (applicationName , langCode)
    + langPOfileName = "%s_%s.po" % (applicationName, langCode)
    if os.path.exists(langPOfileName):
    cmd = 'msgmerge -s --no-wrap "%s" %s > "%s.new"' % (langPOfileName, fileout, langPOfileName)
    if verbose: print cmd
    @@ -212,7 +212,7 @@
    os.chdir(currentDir)
    -def catPO(applicationDirectoryPath, listOf_extraPo, applicationDomain=None, targetDir=None, verbose=0) :
    +def catPO(applicationDirectoryPath, listOf_extraPo, applicationDomain=None, targetDir=None, verbose=0):
    """Concatenate one or several PO files with the application domain files.
    """
    @@ -229,7 +229,7 @@
    if langCode == 'en':
    pass
    else:
    - langPOfileName = "%s_%s.po" % (applicationName , langCode)
    + langPOfileName = "%s_%s.po" % (applicationName, langCode)
    if os.path.exists(langPOfileName):
    fileList = ''
    for fileName in listOf_extraPo:
    @@ -247,7 +247,7 @@
    os.chdir(currentDir)
    -def makeMO(applicationDirectoryPath,targetDir='./locale',applicationDomain=None, verbose=0, forceEnglish=0) :
    +def makeMO(applicationDirectoryPath,targetDir='./locale',applicationDomain=None, verbose=0, forceEnglish=0):
    """Compile the Portable Object files into the Machine Object stored in the right location.
    makeMO converts all translated language-specific PO files located inside
    @@ -282,7 +282,7 @@
    if (langCode == 'en') and (forceEnglish==0):
    pass
    else:
    - langPOfileName = "%s_%s.po" % (applicationName , langCode)
    + langPOfileName = "%s_%s.po" % (applicationName, langCode)
    if os.path.exists(langPOfileName):
    mo_targetDir = "%s/%s/LC_MESSAGES" % (targetDir,langCode)
    if not os.path.exists(mo_targetDir):
    @@ -293,7 +293,7 @@
    os.chdir(currentDir)
    -def printUsage(errorMsg=None) :
    +def printUsage(errorMsg=None):
    """Displays how to use this script from the command line."""
    print """
    ##################################################################################
    @@ -330,7 +330,7 @@
    print "\n ERROR: %s" % errorMsg
    -def fileBaseOf(filename,withPath=0) :
    +def fileBaseOf(filename,withPath=0):
    """fileBaseOf(filename,withPath) ---> string
    Return base name of filename. The returned string never includes the extension.
    @@ -369,7 +369,7 @@
    return os.path.basename(filename)
    -def mkdir(directory) :
    +def mkdir(directory):
    """Create a directory (and possibly the entire tree).
    The os.mkdir() will fail to create a directory if one of the
    @@ -408,7 +408,7 @@
    theDir += '/'
    -def unixpath(thePath) :
    +def unixpath(thePath):
    r"""Return a path name that contains Unix separator.
    [Example]
    --- a/plcopen/definitions.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/plcopen/definitions.py Tue Aug 15 12:17:51 2017 +0300
    @@ -35,11 +35,11 @@
    LANGUAGES = ["IL","ST","FBD","LD","SFC"]
    -LOCATIONDATATYPES = {"X" : ["BOOL"],
    - "B" : ["SINT", "USINT", "BYTE", "STRING"],
    - "W" : ["INT", "UINT", "WORD", "WSTRING"],
    - "D" : ["DINT", "UDINT", "REAL", "DWORD"],
    - "L" : ["LINT", "ULINT", "LREAL", "LWORD"]}
    +LOCATIONDATATYPES = {"X": ["BOOL"],
    + "B": ["SINT", "USINT", "BYTE", "STRING"],
    + "W": ["INT", "UINT", "WORD", "WSTRING"],
    + "D": ["DINT", "UDINT", "REAL", "DWORD"],
    + "L": ["LINT", "ULINT", "LREAL", "LWORD"]}
    #-------------------------------------------------------------------------------
    # Function Block Types definitions
    --- a/plcopen/plcopen.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/plcopen/plcopen.py Tue Aug 15 12:17:51 2017 +0300
    @@ -34,14 +34,21 @@
    """
    Dictionary that makes the relation between var names in plcopen and displayed values
    """
    -VarTypes = {"Local" : "localVars", "Temp" : "tempVars", "Input" : "inputVars",
    - "Output" : "outputVars", "InOut" : "inOutVars", "External" : "externalVars",
    - "Global" : "globalVars", "Access" : "accessVars"}
    +VarTypes = {
    + "Local": "localVars",
    + "Temp": "tempVars",
    + "Input": "inputVars",
    + "Output": "outputVars",
    + "InOut": "inOutVars",
    + "External": "externalVars",
    + "Global": "globalVars",
    + "Access": "accessVars"
    +}
    searchResultVarTypes = {
    - "inputVars": "var_input",
    + "inputVars": "var_input",
    "outputVars": "var_output",
    - "inOutVars": "var_inout"
    + "inOutVars": "var_inout"
    }
    """
    @@ -853,7 +860,7 @@
    # Array derived directly from an elementary type
    else:
    basetype_name = base_type_name
    - return "ARRAY [%s] OF %s" % (",".join(map(lambda x : "%s..%s" % (x.getlower(), x.getupper()), vartype_content.getdimension())), basetype_name)
    + return "ARRAY [%s] OF %s" % (",".join(map(lambda x: "%s..%s" % (x.getlower(), x.getupper()), vartype_content.getdimension())), basetype_name)
    # Variable type is an elementary type
    return vartype_content_name
    setattr(cls, "gettypeAsText", gettypeAsText)
    @@ -1079,12 +1086,12 @@
    "ppx:interface/*[self::ppx:outputVars or self::ppx:inOutVars]/ppx:variable")
    def getblockInfos(self):
    block_infos = {
    - "name" : self.getname(),
    - "type" : self.getpouType(),
    - "extensible" : False,
    - "inputs" : [],
    - "outputs" : [],
    - "comment" : self.getdescription()}
    + "name": self.getname(),
    + "type": self.getpouType(),
    + "extensible": False,
    + "inputs": [],
    + "outputs": [],
    + "comment": self.getdescription()}
    if self.interface is not None:
    return_type = self.interface.getreturnType()
    if return_type is not None:
    @@ -2075,7 +2082,7 @@
    def getconditionContent(self):
    if self.condition is not None:
    content = self.condition.getcontent()
    - values = {"type" : content.getLocalTag()}
    + values = {"type": content.getLocalTag()}
    if values["type"] == "reference":
    values["value"] = content.getname()
    elif values["type"] == "inline":
    --- a/plcopen/structures.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/plcopen/structures.py Tue Aug 15 12:17:51 2017 +0300
    @@ -70,9 +70,9 @@
    - The default modifier which can be "none", "negated", "rising" or "falling"
    """
    -StdBlckLibs = {libname : LoadProject(tc6fname)[0]
    +StdBlckLibs = {libname: LoadProject(tc6fname)[0]
    for libname, tc6fname in StdTC6Libs}
    -StdBlckLst = [{"name" : libname, "list":
    +StdBlckLst = [{"name": libname, "list":
    [GetBlockInfos(pous) for pous in lib.getpous()]}
    for libname, lib in StdBlckLibs.iteritems()]
    @@ -176,8 +176,8 @@
    Current_section = None
    translate = {
    - "extensible" : lambda x: {"yes":True, "no":False}[x],
    - "inputs" : lambda x:csv_input_translate(x,variables,baseinputnumber),
    + "extensible": lambda x: {"yes":True, "no":False}[x],
    + "inputs": lambda x:csv_input_translate(x,variables,baseinputnumber),
    "outputs":lambda x:[("OUT",x,"none")]}
    for fields in table:
    @@ -189,7 +189,7 @@
    section_name = words[1]
    else:
    section_name = fields[0]
    - Current_section = {"name" : section_name, "list" : []}
    + Current_section = {"name": section_name, "list": []}
    Standard_Functions_Decl.append(Current_section)
    Function_decl_list = []
    if Current_section:
    @@ -201,7 +201,7 @@
    Function_decl[param] = translate[param](value)
    Function_decl["type"] = "function"
    - if Function_decl["name"].startswith('*') or Function_decl["name"].endswith('*') :
    + if Function_decl["name"].startswith('*') or Function_decl["name"].endswith('*'):
    input_ovrloading_types = GetSubTypes(Function_decl["inputs"][0][1])
    output_types = GetSubTypes(Function_decl["outputs"][0][1])
    else:
    @@ -230,7 +230,7 @@
    for outype in output_types:
    if outype != None:
    decl_tpl = Function_decl["outputs"][0]
    - Function_decl["outputs"] = [ (decl_tpl[0] , outype, decl_tpl[2])]
    + Function_decl["outputs"] = [ (decl_tpl[0], outype, decl_tpl[2])]
    if funcdeclname_orig.endswith('*'):
    funcdeclout = funcdeclin + '_' + outype
    else:
    @@ -244,11 +244,11 @@
    store = True
    for (InTypes, OutTypes) in ANY_TO_ANY_FILTERS.get(filter_name,[]):
    outs = reduce(lambda a,b: a or b,
    - map(lambda testtype : IsOfType(
    + map(lambda testtype: IsOfType(
    Function_decl["outputs"][0][1],
    testtype), OutTypes))
    inps = reduce(lambda a,b: a or b,
    - map(lambda testtype : IsOfType(
    + map(lambda testtype: IsOfType(
    Function_decl["inputs"][0][1],
    testtype), InTypes))
    if inps and outs and Function_decl["outputs"][0][1] != Function_decl["inputs"][0][1]:
    @@ -256,7 +256,7 @@
    break
    else:
    store = False
    - if store :
    + if store:
    # create the copy of decl dict to be appended to section
    Function_decl_copy = Function_decl.copy()
    Current_section["list"].append(Function_decl_copy)
    --- a/py_ext/PythonFileCTNMixin.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/py_ext/PythonFileCTNMixin.py Tue Aug 15 12:17:51 2017 +0300
    @@ -99,19 +99,19 @@
    configname = self.GetCTRoot().GetProjectConfigNames()[0]
    pyextname = self.CTNName()
    - varinfos = map(lambda variable : {
    + varinfos = map(lambda variable: {
    "name": variable.getname(),
    - "desc" : repr(variable.getdesc()),
    - "onchangecode" : '"'+variable.getonchange()+\
    + "desc": repr(variable.getdesc()),
    + "onchangecode": '"'+variable.getonchange()+\
    "('"+variable.getname()+"')\"" \
    if variable.getonchange() else '""',
    - "onchange" : repr(variable.getonchange()) \
    + "onchange": repr(variable.getonchange()) \
    if variable.getonchange() else None,
    - "opts" : repr(variable.getopts()),
    - "configname" : configname.upper(),
    - "uppername" : variable.getname().upper(),
    - "IECtype" : variable.gettype(),
    - "pyextname" :pyextname},
    + "opts": repr(variable.getopts()),
    + "configname": configname.upper(),
    + "uppername": variable.getname().upper(),
    + "IECtype": variable.gettype(),
    + "pyextname": pyextname},
    self.CodeFile.variables.variable)
    # python side PLC global variables access stub
    globalstubs = "\n".join(["""\
    --- a/runtime/PLCObject.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/runtime/PLCObject.py Tue Aug 15 12:17:51 2017 +0300
    @@ -110,7 +110,7 @@
    self._ResetLogCount()
    def GetLogCount(self, level):
    - if self._GetLogCount is not None :
    + if self._GetLogCount is not None:
    return int(self._GetLogCount(level))
    elif self._loading_error is not None and level==0:
    return 1
    @@ -151,7 +151,7 @@
    self.PLClibraryHandle = ctypes.CDLL(self.CurrentPLCFilename, handle=self._PLClibraryHandle)
    self.PLC_ID = ctypes.c_char_p.in_dll(self.PLClibraryHandle, "PLC_ID")
    - if len(md5) == 32 :
    + if len(md5) == 32:
    self.PLC_ID.value = md5
    self._startPLC = self.PLClibraryHandle.startPLC
    @@ -280,7 +280,7 @@
    class PLCSafeGlobals:
    def __getattr__(_self, name):
    - try :
    + try:
    t = self.python_runtime_vars["_"+name+"_ctype"]
    except KeyError:
    raise KeyError("Try to get unknown shared global variable : %s" % name)
    @@ -288,7 +288,7 @@
    r = self.python_runtime_vars["_PySafeGetPLCGlob_"+name](ctypes.byref(v))
    return self.python_runtime_vars["_"+name+"_unpack"](v)
    def __setattr__(_self, name, value):
    - try :
    + try:
    t = self.python_runtime_vars["_"+name+"_ctype"]
    except KeyError:
    raise KeyError("Try to set unknown shared global variable : %s" % name)
    @@ -296,13 +296,13 @@
    self.python_runtime_vars["_PySafeSetPLCGlob_"+name](ctypes.byref(v))
    self.python_runtime_vars.update({
    - "PLCGlobals" : PLCSafeGlobals(),
    - "WorkingDir" : self.workingdir,
    - "PLCObject" : self,
    - "PLCBinary" : self.PLClibraryHandle,
    - "PLCGlobalsDesc" : []})
    + "PLCGlobals": PLCSafeGlobals(),
    + "WorkingDir": self.workingdir,
    + "PLCObject": self,
    + "PLCBinary": self.PLClibraryHandle,
    + "PLCGlobalsDesc": []})
    - for methodname in MethodNames :
    + for methodname in MethodNames:
    self.python_runtime_vars["_runtime_%s" % methodname] = []
    try:
    @@ -341,7 +341,7 @@
    # print " -> ", cmd, blkid
    if cmd is None:
    break
    - try :
    + try:
    self.python_runtime_vars["FBID"]=FBID
    ccmd,AST =compile_cache.get(FBID, (None,None))
    if ccmd is None or ccmd!=cmd:
    @@ -386,7 +386,7 @@
    self.PLCStatus = "Stopped"
    self.StatusChange()
    self.PythonRuntimeCall("stop")
    - if self.TraceThread is not None :
    + if self.TraceThread is not None:
    self.TraceWakeup.set()
    self.TraceThread.join()
    self.TraceThread = None
    @@ -495,7 +495,7 @@
    def _TracesPush(self, trace):
    self.TraceLock.acquire()
    lT = len(self.Traces)
    - if lT != 0 and lT * len(self.Traces[0]) > 1024 * 1024 :
    + if lT != 0 and lT * len(self.Traces[0]) > 1024 * 1024:
    self.Traces.pop(0)
    self.Traces.append(trace)
    self.TraceLock.release()
    @@ -536,7 +536,7 @@
    """
    Return a list of traces, corresponding to the list of required idx
    """
    - while self.PLCStatus == "Started" :
    + while self.PLCStatus == "Started":
    tick = ctypes.c_uint32()
    size = ctypes.c_uint32()
    buff = ctypes.c_void_p()
    --- a/svgui/pyjs/build.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/svgui/pyjs/build.py Tue Aug 15 12:17:51 2017 +0300
    @@ -147,10 +147,10 @@
    return 0
    if os.path.exists (
    - os.path.join ( dest_path, mod_name + '.css' ) ) :
    + os.path.join ( dest_path, mod_name + '.css' ) ):
    css = "<link rel='stylesheet' href='" + mod_name + ".css'>"
    elif os.path.exists (
    - os.path.join ( dest_path, 'pyjamas_default.css' ) ) :
    + os.path.join ( dest_path, 'pyjamas_default.css' ) ):
    css = "<link rel='stylesheet' href='pyjamas_default.css'>"
    else:
    --- a/svgui/svgui.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/svgui/svgui.py Tue Aug 15 12:17:51 2017 +0300
    @@ -44,14 +44,18 @@
    class SVGUI(PythonFileCTNMixin):
    ConfNodeMethods = [
    - {"bitmap" : "ImportSVG",
    - "name" : _("Import SVG"),
    - "tooltip" : _("Import SVG"),
    - "method" : "_ImportSVG"},
    - {"bitmap" : "ImportSVG", # should be something different
    - "name" : _("Inkscape"),
    - "tooltip" : _("Create HMI"),
    - "method" : "_StartInkscape"},
    + {
    + "bitmap": "ImportSVG",
    + "name": _("Import SVG"),
    + "tooltip": _("Import SVG"),
    + "method": "_ImportSVG"
    + },
    + {
    + "bitmap": "ImportSVG", # should be something different
    + "name": _("Inkscape"),
    + "tooltip": _("Create HMI"),
    + "method": "_StartInkscape"
    + },
    ]
    def ConfNodePath(self):
    @@ -110,7 +114,7 @@
    runtimefile_path = os.path.join(buildpath, "runtime_%s.py" % location_str)
    runtimefile = open(runtimefile_path, 'w')
    - runtimefile.write(svguiservercode % {"svgfile" : "gui.svg"})
    + runtimefile.write(svguiservercode % {"svgfile": "gui.svg"})
    runtimefile.write("""
    def _runtime_%(location)s_start():
    website.LoadHMI(%(svgui_class)s, %(jsmodules)s)
    @@ -120,7 +124,7 @@
    """ % {"location": location_str,
    "svgui_class": "SVGUI_HMI",
    - "jsmodules" : str(jsmodules),
    + "jsmodules": str(jsmodules),
    })
    runtimefile.close()
    --- a/targets/__init__.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/targets/__init__.py Tue Aug 15 12:17:51 2017 +0300
    @@ -66,7 +66,7 @@
    targetchoices = ""
    # Get all xsd toolchains
    - for toolchainname,xsdfilename in toolchains.iteritems() :
    + for toolchainname,xsdfilename in toolchains.iteritems():
    if path.isfile(xsdfilename):
    DictXSD_toolchain["toolchain_"+toolchainname] = \
    open(xsdfilename).read()
    --- a/targets/toolchain_gcc.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/targets/toolchain_gcc.py Tue Aug 15 12:17:51 2017 +0300
    @@ -164,7 +164,7 @@
    relink = self.GetBinaryCode() is None
    for Location, CFilesAndCFLAGS, DoCalls in self.CTRInstance.LocationCFilesAndCFLAGS:
    if CFilesAndCFLAGS:
    - if Location :
    + if Location:
    self.CTRInstance.logger.write(".".join(map(str,Location))+" :\n")
    else:
    self.CTRInstance.logger.write(_("PLC :\n"))
    @@ -190,7 +190,7 @@
    (self.compiler, CFile, objectfilename, Builder_CFLAGS, CFLAGS)
    ).spin()
    - if status :
    + if status:
    self.srcmd5.pop(bn)
    self.CTRInstance.logger.write_error(_("C compilation of %s failed.\n") % bn)
    return False
    @@ -222,7 +222,7 @@
    ALLldflags)
    ).spin()
    - if status :
    + if status:
    return False
    else:
    --- a/targets/toolchain_makefile.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/targets/toolchain_makefile.py Tue Aug 15 12:17:51 2017 +0300
    @@ -104,7 +104,7 @@
    f.write(self.md5key)
    f.close()
    - if oldmd5 != self.md5key :
    + if oldmd5 != self.md5key:
    target = self.CTRInstance.GetTarget().getcontent()
    beremizcommand = {"src": ' '.join(srcfiles),
    "cflags": ' '.join(cflags),
    @@ -120,11 +120,11 @@
    # Call Makefile to build PLC code and link it with target specific code
    status, result, err_result = ProcessLogger(self.CTRInstance.logger,
    command).spin()
    - if status :
    + if status:
    self.md5key = None
    self.CTRInstance.logger.write_error(_("C compilation failed.\n"))
    return False
    return True
    - else :
    + else:
    self.CTRInstance.logger.write(_("Source didn't change, no build.\n"))
    return True
    --- a/targets/typemapping.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/targets/typemapping.py Tue Aug 15 12:17:51 2017 +0300
    @@ -55,31 +55,31 @@
    lambda t,x:t(x.days * 24 * 3600 + x.seconds, x.microseconds*1000))
    SameEndianessTypeTranslator = {
    - "BOOL" : _t(c_uint8, lambda x:x.value!=0),
    - "STEP" : _t(c_uint8),
    - "TRANSITION" : _t(c_uint8),
    - "ACTION" : _t(c_uint8),
    - "SINT" : _t(c_int8),
    - "USINT" : _t(c_uint8),
    - "BYTE" : _t(c_uint8),
    - "STRING" : (IEC_STRING,
    - lambda x:x.body[:x.len],
    - lambda t,x:t(len(x),x)),
    - "INT" : _t(c_int16),
    - "UINT" : _t(c_uint16),
    - "WORD" : _t(c_uint16),
    - "DINT" : _t(c_int32),
    - "UDINT" : _t(c_uint32),
    - "DWORD" : _t(c_uint32),
    - "LINT" : _t(c_int64),
    - "ULINT" : _t(c_uint64),
    - "LWORD" : _t(c_uint64),
    - "REAL" : _t(c_float),
    - "LREAL" : _t(c_double),
    - "TIME" : _ttime(),
    - "TOD" : _ttime(),
    - "DATE" : _ttime(),
    - "DT" : _ttime(),
    + "BOOL": _t(c_uint8, lambda x:x.value!=0),
    + "STEP": _t(c_uint8),
    + "TRANSITION": _t(c_uint8),
    + "ACTION": _t(c_uint8),
    + "SINT": _t(c_int8),
    + "USINT": _t(c_uint8),
    + "BYTE": _t(c_uint8),
    + "STRING": (IEC_STRING,
    + lambda x:x.body[:x.len],
    + lambda t,x:t(len(x),x)),
    + "INT": _t(c_int16),
    + "UINT": _t(c_uint16),
    + "WORD": _t(c_uint16),
    + "DINT": _t(c_int32),
    + "UDINT": _t(c_uint32),
    + "DWORD": _t(c_uint32),
    + "LINT": _t(c_int64),
    + "ULINT": _t(c_uint64),
    + "LWORD": _t(c_uint64),
    + "REAL": _t(c_float),
    + "LREAL": _t(c_double),
    + "TIME": _ttime(),
    + "TOD": _ttime(),
    + "DATE": _ttime(),
    + "DT": _ttime(),
    }
    SwapedEndianessTypeTranslator = {
    --- a/util/ProcessLogger.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/util/ProcessLogger.py Tue Aug 15 12:17:51 2017 +0300
    @@ -50,17 +50,17 @@
    def run(self):
    outchunk = None
    self.retval = None
    - while self.retval is None and not self.killed :
    + while self.retval is None and not self.killed:
    if self.endcallback:
    self.retval = self.Proc.poll()
    else:
    self.retval = self.Proc.returncode
    outchunk = self.fd.readline()
    - if self.callback : self.callback(outchunk)
    - while outchunk != '' and not self.killed :
    + if self.callback: self.callback(outchunk)
    + while outchunk != '' and not self.killed:
    outchunk = self.fd.readline()
    - if self.callback : self.callback(outchunk)
    + if self.callback: self.callback(outchunk)
    if self.endcallback:
    try:
    err = self.Proc.wait()
    --- a/util/Zeroconf.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/util/Zeroconf.py Tue Aug 15 12:17:51 2017 +0300
    @@ -154,32 +154,32 @@
    # Mapping constants to names
    -_CLASSES = { _CLASS_IN : "in",
    - _CLASS_CS : "cs",
    - _CLASS_CH : "ch",
    - _CLASS_HS : "hs",
    - _CLASS_NONE : "none",
    - _CLASS_ANY : "any" }
    +_CLASSES = { _CLASS_IN: "in",
    + _CLASS_CS: "cs",
    + _CLASS_CH: "ch",
    + _CLASS_HS: "hs",
    + _CLASS_NONE: "none",
    + _CLASS_ANY: "any" }
    -_TYPES = { _TYPE_A : "a",
    - _TYPE_NS : "ns",
    - _TYPE_MD : "md",
    - _TYPE_MF : "mf",
    - _TYPE_CNAME : "cname",
    - _TYPE_SOA : "soa",
    - _TYPE_MB : "mb",
    - _TYPE_MG : "mg",
    - _TYPE_MR : "mr",
    - _TYPE_NULL : "null",
    - _TYPE_WKS : "wks",
    - _TYPE_PTR : "ptr",
    - _TYPE_HINFO : "hinfo",
    - _TYPE_MINFO : "minfo",
    - _TYPE_MX : "mx",
    - _TYPE_TXT : "txt",
    - _TYPE_AAAA : "quada",
    - _TYPE_SRV : "srv",
    - _TYPE_ANY : "any" }
    +_TYPES = { _TYPE_A: "a",
    + _TYPE_NS: "ns",
    + _TYPE_MD: "md",
    + _TYPE_MF: "mf",
    + _TYPE_CNAME: "cname",
    + _TYPE_SOA: "soa",
    + _TYPE_MB: "mb",
    + _TYPE_MG: "mg",
    + _TYPE_MR: "mr",
    + _TYPE_NULL: "null",
    + _TYPE_WKS: "wks",
    + _TYPE_PTR: "ptr",
    + _TYPE_HINFO: "hinfo",
    + _TYPE_MINFO: "minfo",
    + _TYPE_MX: "mx",
    + _TYPE_TXT: "txt",
    + _TYPE_AAAA: "quada",
    + _TYPE_SRV: "srv",
    + _TYPE_ANY: "any" }
    # utility functions
    --- a/wxglade_hmi/wxglade_hmi.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/wxglade_hmi/wxglade_hmi.py Tue Aug 15 12:17:51 2017 +0300
    @@ -36,10 +36,12 @@
    class WxGladeHMI(PythonFileCTNMixin):
    ConfNodeMethods = [
    - {"bitmap" : "editWXGLADE",
    - "name" : _("WXGLADE GUI"),
    - "tooltip" : _("Edit a WxWidgets GUI with WXGlade"),
    - "method" : "_editWXGLADE"},
    + {
    + "bitmap": "editWXGLADE",
    + "name": _("WXGLADE GUI"),
    + "tooltip": _("Edit a WxWidgets GUI with WXGlade"),
    + "method": "_editWXGLADE"
    + },
    ]
    def GetIconName(self):
    @@ -97,9 +99,9 @@
    for node in wxgtree.childNodes[1].childNodes:
    if node.nodeType == wxgtree.ELEMENT_NODE:
    hmi_frames.append({
    - "name" : node.getAttribute("name"),
    - "class" : node.getAttribute("class"),
    - "handlers" : [
    + "name": node.getAttribute("name"),
    + "class": node.getAttribute("class"),
    + "handlers": [
    hnode.firstChild.data for hnode in
    node.getElementsByTagName("handler")]})
    --- a/xmlclass/xmlclass.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/xmlclass/xmlclass.py Tue Aug 15 12:17:51 2017 +0300
    @@ -84,7 +84,7 @@
    self.__offset = timedelta(minutes = 0)
    self.__name = "UTC"
    else:
    - sign = {"-" : -1, "+" : 1}[offset[0]]
    + sign = {"-": -1, "+": 1}[offset[0]]
    hours, minutes = [int(val) for val in offset[1:].split(":")]
    self.__offset = timedelta(minutes=sign * (hours * 60 + minutes))
    self.__name = ""
    @@ -1399,7 +1399,7 @@
    if facets.has_key("enumeration") and facets["enumeration"][0] is not None:
    return facets["enumeration"][0]
    elif facets.has_key("maxInclusive"):
    - limits = {"max" : None, "min" : None}
    + limits = {"max": None, "min": None}
    if facets["maxInclusive"][0] is not None:
    limits["max"] = facets["maxInclusive"][0]
    elif facets["maxExclusive"][0] is not None:
    @@ -1420,9 +1420,9 @@
    attr_list.extend(classinfos["base"].getElementAttributes(self))
    for attr in classinfos["attributes"]:
    if attr["use"] != "prohibited":
    - attr_params = {"name" : attr["name"], "use" : attr["use"],
    - "type" : gettypeinfos(attr["attr_type"]["basename"], attr["attr_type"]["facets"]),
    - "value" : getattr(self, attr["name"], "")}
    + attr_params = {"name": attr["name"], "use": attr["use"],
    + "type": gettypeinfos(attr["attr_type"]["basename"], attr["attr_type"]["facets"]),
    + "value": getattr(self, attr["name"], "")}
    attr_list.append(attr_params)
    return attr_list
    return getElementAttributes
    --- a/xmlclass/xsdschema.py Mon Aug 14 23:38:28 2017 +0300
    +++ b/xmlclass/xsdschema.py Tue Aug 15 12:17:51 2017 +0300
    @@ -668,7 +668,7 @@
    # Attribute elements
    def ReduceAnyAttribute(factory, attributes, elements):
    - return {"type" : "anyAttribute"}
    + return {"type": "anyAttribute"}
    def ReduceAttribute(factory, attributes, elements):
    @@ -1313,7 +1313,7 @@
    "reduce": ReduceComplexType
    },
    - "documentation": {"struct" : """
    + "documentation": {"struct": """
    <documentation
    source = anyURI
    xml:lang = language
    @@ -1504,7 +1504,7 @@
    "reduce": ReduceKeyRef
    },
    - "length": {"struct" : """
    + "length": {"struct": """
    <length
    fixed = boolean : false
    id = ID
    @@ -1730,7 +1730,7 @@
    "reduce": ReduceSequence
    },
    - "simpleContent": {"struct" : """
    + "simpleContent": {"struct": """
    <simpleContent
    id = ID
    {any attributes with non-schema namespace . . .}>
    @@ -1744,7 +1744,7 @@
    "reduce": ReduceSimpleContent
    },
    - "simpleType": {"struct" : """
    + "simpleType": {"struct": """
    <simpleType
    final = (#all | List of (list | union | restriction))
    id = ID
    @@ -1760,7 +1760,7 @@
    "reduce": ReduceSimpleType
    },
    - "totalDigits": {"struct" : """
    + "totalDigits": {"struct": """
    <totalDigits
    fixed = boolean : false
    id = ID
    @@ -1806,7 +1806,7 @@
    "reduce": ReduceUnique
    },
    - "whiteSpace": {"struct" : """
    + "whiteSpace": {"struct": """
    <whiteSpace
    fixed = boolean : false
    id = ID
    @@ -2112,7 +2112,7 @@
    "basename": "string",
    "extract": GetAttributeValue,
    "facets": STRING_FACETS,
    - "generate": GenerateSimpleTypeXMLText(lambda x : x),
    + "generate": GenerateSimpleTypeXMLText(lambda x: x),
    "initial": lambda: "",
    "check": lambda x: isinstance(x, (StringType, UnicodeType))
    },
    @@ -2122,7 +2122,7 @@
    "basename": "normalizedString",
    "extract": GetNormalizedString,
    "facets": STRING_FACETS,
    - "generate": GenerateSimpleTypeXMLText(lambda x : x),
    + "generate": GenerateSimpleTypeXMLText(lambda x: x),
    "initial": lambda: "",
    "check": lambda x: isinstance(x, (StringType, UnicodeType))
    },
    @@ -2132,7 +2132,7 @@
    "basename": "token",
    "extract": GetToken,
    "facets": STRING_FACETS,
    - "generate": GenerateSimpleTypeXMLText(lambda x : x),
    + "generate": GenerateSimpleTypeXMLText(lambda x: x),
    "initial": lambda: "",
    "check": lambda x: isinstance(x, (StringType, UnicodeType))
    },
    @@ -2304,7 +2304,7 @@
    "facets": NUMBER_FACETS,
    "generate": GenerateFloatXMLText(["INF", "-INF", "NaN"]),
    "initial": lambda: 0.,
    - "check": lambda x: {"INF" : True, "-INF" : True, "NaN" : True}.get(x, isinstance(x, (IntType, FloatType)))
    + "check": lambda x: {"INF": True, "-INF": True, "NaN": True}.get(x, isinstance(x, (IntType, FloatType)))
    },
    "double": {
    @@ -2314,7 +2314,7 @@
    "facets": NUMBER_FACETS,
    "generate": GenerateFloatXMLText(["INF", "-INF", "NaN"]),
    "initial": lambda: 0.,
    - "check": lambda x: {"INF" : True, "-INF" : True, "NaN" : True}.get(x, isinstance(x, (IntType, FloatType)))
    + "check": lambda x: {"INF": True, "-INF": True, "NaN": True}.get(x, isinstance(x, (IntType, FloatType)))
    },
    "boolean": {
    @@ -2322,7 +2322,7 @@
    "basename": "boolean",
    "extract": GetBoolean,
    "facets": GenerateDictFacets(["pattern", "whiteSpace"]),
    - "generate": GenerateSimpleTypeXMLText(lambda x:{True : "true", False : "false"}[x]),
    + "generate": GenerateSimpleTypeXMLText(lambda x:{True: "true", False: "false"}[x]),
    "initial": lambda: False,
    "check": lambda x: isinstance(x, BooleanType)
    },