Thu, 13 Jun 2019 15:49:48 +0200'Change POU Type To' becomes 'Duplicate as...', avoiding side effects of type change when POU is already instanciated. Also remove leftover returType tag in ex-function POUs, triggering exceptions at build time.
Edouard Tisserant [Thu, 13 Jun 2019 15:49:48 +0200] rev 2614
'Change POU Type To' becomes 'Duplicate as...', avoiding side effects of type change when POU is already instanciated. Also remove leftover returType tag in ex-function POUs, triggering exceptions at build time.

Thu, 06 Jun 2019 14:03:16 +0200Fix PLCObject's purge failing silently with extra_files.
Edouard Tisserant [Thu, 06 Jun 2019 14:03:16 +0200] rev 2613
Fix PLCObject's purge failing silently with extra_files.

Thu, 30 May 2019 11:53:13 +0200LogMessage shouldn't be serialized (can lead to blocking in case of exception in main thread), and do not require it.
Edouard Tisserant [Thu, 30 May 2019 11:53:13 +0200] rev 2612
LogMessage shouldn't be serialized (can lead to blocking in case of exception in main thread), and do not require it.

Thu, 30 May 2019 11:51:56 +0200Fixed typo leading to some exception in some rare corner cases in worker.py
Edouard Tisserant [Thu, 30 May 2019 11:51:56 +0200] rev 2611
Fixed typo leading to some exception in some rare corner cases in worker.py

Tue, 23 Apr 2019 11:01:35 +0200Added missing 'path' field to WAMP addresses in URI editor.
Edouard Tisserant [Tue, 23 Apr 2019 11:01:35 +0200] rev 2610
Added missing 'path' field to WAMP addresses in URI editor.

Tue, 23 Apr 2019 11:00:37 +0200Fixed exception when using URI editor for PYRO addresses
Edouard Tisserant [Tue, 23 Apr 2019 11:00:37 +0200] rev 2609
Fixed exception when using URI editor for PYRO addresses

Fri, 19 Apr 2019 13:11:42 +0200Avoid loading PLC at startup when autostart is not set in command line. As a side effect PLC status is artificially set to Stopped, and StartPLC eventually loads PLC if it is not already loaded.
Edouard Tisserant [Fri, 19 Apr 2019 13:11:42 +0200] rev 2608
Avoid loading PLC at startup when autostart is not set in command line. As a side effect PLC status is artificially set to Stopped, and StartPLC eventually loads PLC if it is not already loaded.

Fri, 19 Apr 2019 10:53:02 +0200Add Repair() to WAMP interface
Edouard Tisserant [Fri, 19 Apr 2019 10:53:02 +0200] rev 2607
Add Repair() to WAMP interface

Thu, 18 Apr 2019 14:42:23 +0200Merged fix_PLC_runtime_shutdown
Edouard Tisserant [Thu, 18 Apr 2019 14:42:23 +0200] rev 2606
Merged fix_PLC_runtime_shutdown

Thu, 18 Apr 2019 14:41:21 +0200Close fix_PLC_runtime_shutdown fix_PLC_runtime_shutdown
Edouard Tisserant [Thu, 18 Apr 2019 14:41:21 +0200] rev 2605
Close fix_PLC_runtime_shutdown

Thu, 18 Apr 2019 14:35:42 +0200Runtime worker : unblock the last waiting job and prevent any new job to wait when Main Worker is being shut down. fix_PLC_runtime_shutdown
Edouard Tisserant [Thu, 18 Apr 2019 14:35:42 +0200] rev 2604
Runtime worker : unblock the last waiting job and prevent any new job to wait when Main Worker is being shut down.

Thu, 18 Apr 2019 14:34:22 +0200Add some "pipe to self" trick in Pyro server to accelerate runtime shutdown instead of waiting for arbitrary pyro timeout. fix_PLC_runtime_shutdown
Edouard Tisserant [Thu, 18 Apr 2019 14:34:22 +0200] rev 2603
Add some "pipe to self" trick in Pyro server to accelerate runtime shutdown instead of waiting for arbitrary pyro timeout.

Thu, 18 Apr 2019 14:32:43 +0200If call to GetPLCstatus can't be executed in PLC, then obtained status is disconnected. Status on "None" is not relevant anymore, and is replaced by Disconnected. fix_PLC_runtime_shutdown
Edouard Tisserant [Thu, 18 Apr 2019 14:32:43 +0200] rev 2602
If call to GetPLCstatus can't be executed in PLC, then obtained status is disconnected. Status on "None" is not relevant anymore, and is replaced by Disconnected.

Thu, 18 Apr 2019 14:29:55 +0200Enure that all threads are joined before trying to exit fix_PLC_runtime_shutdown
Edouard Tisserant [Thu, 18 Apr 2019 14:29:55 +0200] rev 2601
Enure that all threads are joined before trying to exit

Wed, 17 Apr 2019 14:18:22 +0200Named runtime's threads to ease debugging
Edouard Tisserant [Wed, 17 Apr 2019 14:18:22 +0200] rev 2600
Named runtime's threads to ease debugging

Wed, 17 Apr 2019 14:15:39 +0200Added Repair() png icon
Edouard Tisserant [Wed, 17 Apr 2019 14:15:39 +0200] rev 2599
Added Repair() png icon

Tue, 16 Apr 2019 14:45:41 +0200pep8 again...
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 16 Apr 2019 14:45:41 +0200] rev 2598
pep8 again...
./connectors/PYRO/PSK_Adapter.py:49:1: E302 expected 2 blank lines, found 1
./connectors/PYRO/PSK_Adapter.py:57:5: E303 too many blank lines (2)

Tue, 16 Apr 2019 13:32:32 +0200PEP8 fix : ./connectors/PYRO/PSK_Adapter.py:49:1: E302 expected 2 blank lines, found 1
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 16 Apr 2019 13:32:32 +0200] rev 2597
PEP8 fix : ./connectors/PYRO/PSK_Adapter.py:49:1: E302 expected 2 blank lines, found 1

Tue, 16 Apr 2019 11:26:52 +0200Added RepairPLC() to PLCObject. For now just calling PurgePLC and quit PLC runtime.
Edouard Tisserant [Tue, 16 Apr 2019 11:26:52 +0200] rev 2596
Added RepairPLC() to PLCObject. For now just calling PurgePLC and quit PLC runtime.

Tue, 16 Apr 2019 11:26:34 +0200Ensure Beremiz_service.py quits properly when Main Worker stops and wa are using Wx and/or Twisted.
Edouard Tisserant [Tue, 16 Apr 2019 11:26:34 +0200] rev 2595
Ensure Beremiz_service.py quits properly when Main Worker stops and wa are using Wx and/or Twisted.

Mon, 15 Apr 2019 13:34:09 +0200Added PurgePLC() method to PLCObject, to be invoked when PLC Status is broken. It clears PLC shared object an extra files and force status to Empty. Added correponding Repair button to toolbar, visible only when PLC status is broken.
Edouard Tisserant [Mon, 15 Apr 2019 13:34:09 +0200] rev 2594
Added PurgePLC() method to PLCObject, to be invoked when PLC Status is broken. It clears PLC shared object an extra files and force status to Empty. Added correponding Repair button to toolbar, visible only when PLC status is broken.

Thu, 11 Apr 2019 13:45:27 +0200Background erase of debug variable panel was disabled for some reason, and it not anymore compatible with EVT_PAINT based refresh. It was leaving traces behind when removing traced variable. Fixed.
Edouard Tisserant [Thu, 11 Apr 2019 13:45:27 +0200] rev 2593
Background erase of debug variable panel was disabled for some reason, and it not anymore compatible with EVT_PAINT based refresh. It was leaving traces behind when removing traced variable. Fixed.

Thu, 11 Apr 2019 13:41:52 +0200force redraw only through EVT_PAINT event and use wxPaintDC, as described in wx documentation
Edouard Tisserant [Thu, 11 Apr 2019 13:41:52 +0200] rev 2592
force redraw only through EVT_PAINT event and use wxPaintDC, as described in wx documentation

Thu, 11 Apr 2019 11:26:47 +0200Fixed refresh problem following 9c5f835b031e, 9622418ac28c, c67488bd8134 : force redraw only through EVT_PAINT event and use wxPaintDC, as described in wx documentation
Edouard Tisserant [Thu, 11 Apr 2019 11:26:47 +0200] rev 2591
Fixed refresh problem following 9c5f835b031e, 9622418ac28c, c67488bd8134 : force redraw only through EVT_PAINT event and use wxPaintDC, as described in wx documentation

Thu, 11 Apr 2019 08:40:17 +0200merged
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 11 Apr 2019 08:40:17 +0200] rev 2590
merged

Wed, 10 Apr 2019 14:11:52 +0200Nicer name than 'var_name' for variable auto-renaming in Modbus
Edouard Tisserant [Wed, 10 Apr 2019 14:11:52 +0200] rev 2589
Nicer name than 'var_name' for variable auto-renaming in Modbus

Wed, 10 Apr 2019 21:36:12 +0200Allow starting IDE without sslpsk module installed. Fail when connecting to PYROS if sslpsk unavailable.
Edouard Tisserant <edouard.tisserant@gmail.com> [Wed, 10 Apr 2019 21:36:12 +0200] rev 2588
Allow starting IDE without sslpsk module installed. Fail when connecting to PYROS if sslpsk unavailable.

Tue, 09 Apr 2019 14:08:44 +0200Fixed preview drawing/refresh problem in sfc/ld/fbd graphical element creation dialogs on windows (introduced in 9c5f835b031e, continuation of 9622418ac28c)
Edouard Tisserant [Tue, 09 Apr 2019 14:08:44 +0200] rev 2587
Fixed preview drawing/refresh problem in sfc/ld/fbd graphical element creation dialogs on windows (introduced in 9c5f835b031e, continuation of 9622418ac28c)

Tue, 09 Apr 2019 13:18:51 +0200pep8 white spaces
Edouard Tisserant [Tue, 09 Apr 2019 13:18:51 +0200] rev 2586
pep8 white spaces

Tue, 09 Apr 2019 13:13:27 +0200Now default_evaluator is provided by runtime package
Edouard Tisserant [Tue, 09 Apr 2019 13:13:27 +0200] rev 2585
Now default_evaluator is provided by runtime package

Tue, 09 Apr 2019 13:08:03 +0200merge
Edouard Tisserant <edouard.tisserant@gmail.com> [Tue, 09 Apr 2019 13:08:03 +0200] rev 2584
merge

Tue, 09 Apr 2019 13:05:35 +0200Continue fixing deadlock of previous commit, this time occuring when waiting for 'cleanup' python runtime call to finish. Now 'init' and 'cleanup' python runtime calls are called directly from main thread, and aren't anymore invoked in the context of wxMainloop and/or twisted reactor.
Edouard Tisserant [Tue, 09 Apr 2019 13:05:35 +0200] rev 2583
Continue fixing deadlock of previous commit, this time occuring when waiting for 'cleanup' python runtime call to finish. Now 'init' and 'cleanup' python runtime calls are called directly from main thread, and aren't anymore invoked in the context of wxMainloop and/or twisted reactor.

Tue, 09 Apr 2019 09:13:55 +0200Fix deadlock when indirectly calling PLCObject's evaluator() from twisted of wx event loops. Was freezing while transfer/start/stop through Wamp. Serialize all PLCObject's call to self.PythonRuntimeCall into the same PythonThread thread.
Edouard Tisserant [Tue, 09 Apr 2019 09:13:55 +0200] rev 2582
Fix deadlock when indirectly calling PLCObject's evaluator() from twisted of wx event loops. Was freezing while transfer/start/stop through Wamp. Serialize all PLCObject's call to self.PythonRuntimeCall into the same PythonThread thread.

Mon, 08 Apr 2019 12:53:18 +0200Fixed Wamp assertion because of unexpected type
Edouard Tisserant [Mon, 08 Apr 2019 12:53:18 +0200] rev 2581
Fixed Wamp assertion because of unexpected type

Thu, 28 Mar 2019 13:09:11 +0100Enhanced statistics display code, used it and saw no more noticable leak while editing. Closing branch. wx.NewID_abuse_fix
Edouard Tisserant [Thu, 28 Mar 2019 13:09:11 +0100] rev 2580
Enhanced statistics display code, used it and saw no more noticable leak while editing. Closing branch.

Sun, 07 Apr 2019 21:08:07 +0200Conform to pep8 and pylint :
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 07 Apr 2019 21:08:07 +0200] rev 2579
Conform to pep8 and pylint :

pep8 version: 2.3.1
./ConfigTreeNode.py:130:49: E231 missing whitespace after ','
./editors/Viewer.py:643:24: E128 continuation line under-indented for visual indent
./editors/Viewer.py:670:12: E221 multiple spaces before operator
./editors/Viewer.py:671:13: E221 multiple spaces before operator
./editors/Viewer.py:2138:52: E203 whitespace before ':'
./editors/Viewer.py:2139:66: W291 trailing whitespace
./controls/VariablePanel.py:154:25: E231 missing whitespace after ','
./controls/LocationCellEditor.py:88:1: W293 blank line contains whitespace
./controls/LocationCellEditor.py:191:25: E221 multiple spaces before operator
./controls/LocationCellEditor.py:200:17: E128 continuation line under-indented for visual indent

pylint 1.8.3,
************* Module controls.LocationCellEditor
controls/LocationCellEditor.py:200: [C0330(bad-continuation), ] Wrong continued indentation (add 9 spaces).
_("Selected location is identical to previous one"))
^ |
************* Module controls.VariablePanel
controls/VariablePanel.py:154: [E1601(print-statement), VariableTable.SetValue] print statement used
************* Module editors.Viewer
editors/Viewer.py:643: [C0330(bad-continuation), ] Wrong continued indentation (add 1 space).
self.GetAddMenuCallBack(self.AddNewComment))
^|
editors/Viewer.py:598: [W0612(unused-variable), Viewer.AddDivergenceMenuItems] Unused variable 'add_branch'
editors/Viewer.py:1655: [E0602(undefined-variable), Viewer.PopupConnectionMenu] Undefined variable 'variable_type'
editors/Viewer.py:1649: [W0612(unused-variable), Viewer.PopupConnectionMenu] Unused variable 'connection_type'
************* Module connectors.PYRO.PSK_Adapter

Sun, 07 Apr 2019 16:23:49 +0200Merged
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 07 Apr 2019 16:23:49 +0200] rev 2578
Merged

Wed, 03 Apr 2019 06:31:34 +0000Fix typo in README.md
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 03 Apr 2019 06:31:34 +0000] rev 2577
Fix typo in README.md

Closes #80

Thu, 04 Apr 2019 14:00:17 +0200merged rename_on_location_change branch
Edouard Tisserant [Thu, 04 Apr 2019 14:00:17 +0200] rev 2576
merged rename_on_location_change branch

Thu, 04 Apr 2019 13:59:22 +0200Rename checkbox and immediately apply. rename_on_location_change
Edouard Tisserant [Thu, 04 Apr 2019 13:59:22 +0200] rev 2575
Rename checkbox and immediately apply.
Added a checkbox in Location selection dialog (saved as user settings) to let user choose if variable is being renamed.
Also forced closing celle editor once new location is selected.

Wed, 03 Apr 2019 13:20:28 +0200LocationCellEditor use better source for variable name replacement, and validate variable name before applying it or complains otherwise. rename_on_location_change
Edouard Tisserant [Wed, 03 Apr 2019 13:20:28 +0200] rev 2574
LocationCellEditor use better source for variable name replacement, and validate variable name before applying it or complains otherwise.

Tue, 02 Apr 2019 09:46:58 +0200LocationCellEditor now systematically change variable name according to name given by CTN, calls VariablePanel' OnVariableNameChange to update POU accordingly. rename_on_location_change
Edouard Tisserant [Tue, 02 Apr 2019 09:46:58 +0200] rev 2573
LocationCellEditor now systematically change variable name according to name given by CTN, calls VariablePanel' OnVariableNameChange to update POU accordingly.

Thu, 28 Mar 2019 14:06:53 +0100Fix problem introduced in 9c5f835b031e : Exception in LDPowerRailDialog.py because of change in OnPaint/RefreshView/DrawPreview.
Edouard Tisserant [Thu, 28 Mar 2019 14:06:53 +0100] rev 2572
Fix problem introduced in 9c5f835b031e : Exception in LDPowerRailDialog.py because of change in OnPaint/RefreshView/DrawPreview.

Thu, 28 Mar 2019 13:39:58 +0100Fixed RecentProjectMenu in BeremizIDE.py broken by untested changes in wx.NewID_abuse_fix.
Edouard Tisserant [Thu, 28 Mar 2019 13:39:58 +0100] rev 2571
Fixed RecentProjectMenu in BeremizIDE.py broken by untested changes in wx.NewID_abuse_fix.

Thu, 28 Mar 2019 13:10:26 +0100Merged wx.NewID_abuse_fix branch
Edouard Tisserant [Thu, 28 Mar 2019 13:10:26 +0100] rev 2570
Merged wx.NewID_abuse_fix branch

Thu, 28 Mar 2019 13:08:20 +0100More wx.NewID abuse removal. This time BeremizIDE.py was cleaned. wx.NewID_abuse_fix
Edouard Tisserant [Thu, 28 Mar 2019 13:08:20 +0100] rev 2569
More wx.NewID abuse removal. This time BeremizIDE.py was cleaned.

Thu, 28 Mar 2019 09:19:30 +0100Merged more of wx.NewID_abuse_fix branch
Edouard Tisserant [Thu, 28 Mar 2019 09:19:30 +0100] rev 2568
Merged more of wx.NewID_abuse_fix branch

Wed, 27 Mar 2019 14:10:39 +0100More wx.NewID abuse removal. All Viewer.py got cured. wx.NewID_abuse_fix
Edouard Tisserant [Wed, 27 Mar 2019 14:10:39 +0100] rev 2567
More wx.NewID abuse removal. All Viewer.py got cured.

Wed, 27 Mar 2019 13:08:51 +0100More wx.NewID abuse removal. This one was apparently silently unbinding toolbar butons when running out of mew wx IDs. wx.NewID_abuse_fix
Edouard Tisserant [Wed, 27 Mar 2019 13:08:51 +0100] rev 2566
More wx.NewID abuse removal. This one was apparently silently unbinding toolbar butons when running out of mew wx IDs.

Tue, 26 Mar 2019 13:54:36 +0100Dyslectic typos
Edouard Tisserant [Tue, 26 Mar 2019 13:54:36 +0100] rev 2565
Dyslectic typos

Mon, 07 Jan 2019 20:32:40 +0000Close branch py3-fix. py3-fix
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 07 Jan 2019 20:32:40 +0000] rev 2564
Close branch py3-fix.

Thu, 27 Jul 2017 20:34:38 +0000Close branch 1.1 Korean release. 1.1 Korean release
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 27 Jul 2017 20:34:38 +0000] rev 2563
Close branch 1.1 Korean release.

Mon, 18 Mar 2019 09:12:44 +0000Close branch generate-button. generate-button
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 18 Mar 2019 09:12:44 +0000] rev 2562
Close branch generate-button.

Mon, 07 Jan 2019 23:55:05 +0300close #2486 head #2486
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 07 Jan 2019 23:55:05 +0300] rev 2561
close #2486 head

Mon, 07 Jan 2019 20:33:11 +0000Close branch nevow_service_rework. nevow_service_rework
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 07 Jan 2019 20:33:11 +0000] rev 2560
Close branch nevow_service_rework.

Mon, 07 Jan 2019 20:32:32 +0000Close branch wx3-fix. wx3-fix
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 07 Jan 2019 20:32:32 +0000] rev 2559
Close branch wx3-fix.

Tue, 26 Mar 2019 11:08:32 +0100Intermediate merge of wx.NewID_abuse_fix branch but kept debug code in the branch. This is still work in progress, banch is NOT closed.
Edouard Tisserant [Tue, 26 Mar 2019 11:08:32 +0100] rev 2558
Intermediate merge of wx.NewID_abuse_fix branch but kept debug code in the branch. This is still work in progress, banch is NOT closed.

Tue, 26 Mar 2019 11:03:57 +0100Continued wx.NewID abuse removal in Viewer.py : Added AppendItem to use instead of AppendMenu, made examples with AddBlockPinMenuItems and AddAlignmentMenuItems wx.NewID_abuse_fix
Edouard Tisserant [Tue, 26 Mar 2019 11:03:57 +0100] rev 2557
Continued wx.NewID abuse removal in Viewer.py : Added AppendItem to use instead of AppendMenu, made examples with AddBlockPinMenuItems and AddAlignmentMenuItems

Tue, 26 Mar 2019 09:43:51 +0100Continued wx.NewID abuse removal in Viewer.py : get rid of one call to AppendMenu method, having no real purpose apparently. To be continued. wx.NewID_abuse_fix
Edouard Tisserant [Tue, 26 Mar 2019 09:43:51 +0100] rev 2556
Continued wx.NewID abuse removal in Viewer.py : get rid of one call to AppendMenu method, having no real purpose apparently. To be continued.

Tue, 26 Mar 2019 09:41:09 +0100Start fixing wx.NewId abuse in viewer.py. This shows how to avoid using AppendMenu() function, definitely useless. wx.NewID_abuse_fix
Edouard Tisserant [Tue, 26 Mar 2019 09:41:09 +0100] rev 2555
Start fixing wx.NewId abuse in viewer.py. This shows how to avoid using AppendMenu() function, definitely useless.

Mon, 25 Mar 2019 14:59:54 +0100VariablePanel's menu do not waste Wx IDs anymore (directly binds wx objects rather than crating new ID wit wx.NewId) wx.NewID_abuse_fix
Edouard Tisserant [Mon, 25 Mar 2019 14:59:54 +0100] rev 2554
VariablePanel's menu do not waste Wx IDs anymore (directly binds wx objects rather than crating new ID wit wx.NewId)

Tue, 26 Mar 2019 09:48:45 +0100Instrument IDE code to find code abusing wx.NewId. wx.NewID_abuse_fix
Edouard Tisserant [Tue, 26 Mar 2019 09:48:45 +0100] rev 2553
Instrument IDE code to find code abusing wx.NewId.

Fri, 22 Mar 2019 14:00:35 +0100Fix error when searching accross project. Collection of result wasn't initialized and was failing in case some CTN was returning no result.
Edouard Tisserant [Fri, 22 Mar 2019 14:00:35 +0100] rev 2552
Fix error when searching accross project. Collection of result wasn't initialized and was failing in case some CTN was returning no result.

Fri, 22 Mar 2019 13:45:19 +0100Make spaghetti-code-quality great again.
Edouard Tisserant [Fri, 22 Mar 2019 13:45:19 +0100] rev 2551
Make spaghetti-code-quality great again.

Fri, 22 Mar 2019 13:26:31 +0100Merged
Edouard Tisserant [Fri, 22 Mar 2019 13:26:31 +0100] rev 2550
Merged

Mon, 18 Mar 2019 12:20:46 +0300Add Docker files to build containers to run automated tests
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 18 Mar 2019 12:20:46 +0300] rev 2549
Add Docker files to build containers to run automated tests

Mon, 18 Mar 2019 12:10:36 +0300merge
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 18 Mar 2019 12:10:36 +0300] rev 2548
merge

Mon, 18 Mar 2019 12:09:41 +0300check_source.sh: fix sed error: -e expression #1, char 25: Invalid range end
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 18 Mar 2019 12:09:41 +0300] rev 2547
check_source.sh: fix sed error: -e expression #1, char 25: Invalid range end

Warning happen only if old sed (4.4) is used.

Mon, 18 Mar 2019 12:07:49 +0300Fix pylint warning [C0325(superfluous-parens), ] Unnecessary parens after u'if' keyword
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 18 Mar 2019 12:07:49 +0300] rev 2546
Fix pylint warning [C0325(superfluous-parens), ] Unnecessary parens after u'if' keyword

************* Module runtime.PLCObject
runtime/PLCObject.py:609: [C0325(superfluous-parens), ] Unnecessary parens after u'if' keyword

Wed, 13 Mar 2019 15:58:34 +0300Update Beremiz dependencies because of added PYROS:// support
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 15:58:34 +0300] rev 2545
Update Beremiz dependencies because of added PYROS:// support

Wed, 13 Mar 2019 15:54:17 +0300Fix header and convert comments to docstrings in PSK_Adapter
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 15:54:17 +0300] rev 2544
Fix header and convert comments to docstrings in PSK_Adapter

Wed, 13 Mar 2019 15:43:45 +0300Fix Pyro work with SSL wrapper (sslpsk)
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 15:43:45 +0300] rev 2543
Fix Pyro work with SSL wrapper (sslpsk)

Following error was shown in Beremiz console:
PYRO connecting to URI : PYROS://127.0.0.1:3001#beremiz
Exception while connecting to 'PYROS://127.0.0.1:3001#beremiz': non-zero flags not allowed in calls to recv() on <class 'ssl.SSLSocket'>
Connection failed to PYROS://127.0.0.1:3001#beremiz!

Reason is that Pyro calls socket recv() with MSGWAITALL flag, that causes ValueError exception.

https://docs.python.org/2/library/ssl.html
recv(), recv_into() (but passing a non-zero flags argument is not allowed)

Wed, 13 Mar 2019 14:27:24 +0300Fix crash in runtime if PSK secret is missing
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 14:27:24 +0300] rev 2542
Fix crash in runtime if PSK secret is missing

./Beremiz_service.py -s $PWD/psk2.txt -n beremiz /tmp/beremiz
Beremiz_service: 1.2-1378c18402c3+

Traceback (most recent call last):
File "./Beremiz_service.py", line 511, in <module>
ensurePSK(servicename, PSKpath)
File "/home/developer/WorkData/PLC/beremiz/beremiz/runtime/Stunnel.py", line 32, in ensurePSK
PSKgen(ID, PSKpath)
File "/home/developer/WorkData/PLC/beremiz/beremiz/runtime/Stunnel.py", line 23, in PSKgen
call(restart_stunnel_cmdline)
File "/home/developer/WorkData/PLC/beremiz/beremiz/runtime/spawn_subprocess.py", line 116, in call
pid = posix_spawn.posix_spawnp(cmd[0], cmd)
File "/home/developer/.local/lib/python2.7/site-packages/posix_spawn/_impl.py", line 120, in posix_spawnp
return _posix_spawn(lib.posix_spawnp, *args, **kwargs)
File "/home/developer/.local/lib/python2.7/site-packages/posix_spawn/_impl.py", line 111, in _posix_spawn
_check_error(res, path)
File "/home/developer/.local/lib/python2.7/site-packages/posix_spawn/_impl.py", line 10, in _check_error
raise OSError(errno, os.strerror(errno), path)
OSError: [Errno 2] No such file or directory: '/etc/init.d/S50stunnel'

Wed, 13 Mar 2019 14:14:31 +0300Update build instruction for BACNet in README
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 14:14:31 +0300] rev 2541
Update build instruction for BACNet in README

in r3189 Steve added new feature to bacnet-stack: network port - to
access configuration and properties of network ports of a device.
https://sourceforge.net/p/bacnet/code/3189/

It's not implemented by Beremiz.

Wed, 13 Mar 2019 14:11:13 +0300Replace md5 module with hashlib
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 14:11:13 +0300] rev 2540
Replace md5 module with hashlib

fix following pylint error:

************* Module connectors.ConnectorBase
connectors/ConnectorBase.py:7: [W1648(bad-python3-import), ] Module moved in Python 3
************* Module runtime.PLCObject
runtime/PLCObject.py:33: [W1648(bad-python3-import), ] Module moved in Python 3

Wed, 13 Mar 2019 11:51:40 +0300Remove execute attributes from runtime/PLCObject.py
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 11:51:40 +0300] rev 2539
Remove execute attributes from runtime/PLCObject.py

Wed, 13 Mar 2019 11:49:46 +0300Fix typo
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 11:49:46 +0300] rev 2538
Fix typo

Wed, 13 Mar 2019 11:47:03 +0300Fix various pylint and pep8 errors
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 11:47:03 +0300] rev 2537
Fix various pylint and pep8 errors

Check basic code-style problems for PEP-8
pep8 version: 2.4.0
./connectors/PYRO/__init__.py:57:43: E261 at least two spaces before inline comment
./connectors/SchemeEditor.py:29:21: E128 continuation line under-indented for visual indent
./controls/IDBrowser.py:101:23: E127 continuation line over-indented for visual indent
./controls/IDBrowser.py:102:23: E127 continuation line over-indented for visual indent

Check for problems using pylint ...
No config file found, using default configuration
pylint 1.9.4,
astroid 1.6.5
Python 2.7.16rc1 (default, Feb 18 2019, 11:05:09)
[GCC 8.2.0]
Use multiple threads for pylint
Using config file /home/developer/WorkData/PLC/beremiz/beremiz/.pylint
************* Module connectors.PYRO_dialog
connectors/PYRO_dialog.py:9: [W0611(unused-import), ] Unused import wx
************* Module connectors
connectors/__init__.py:32: [W1652(deprecated-types-field), ] Accessing a deprecated fields on the types module
connectors/__init__.py:32: [C0411(wrong-import-order), ] standard import "from types import ClassType" should be placed before "from connectors.ConnectorBase import ConnectorBase"
************* Module connectors.PYRO.PSK_Adapter
connectors/PYRO/PSK_Adapter.py:7: [C0411(wrong-import-order), ] standard import "import ssl" should be placed before "import sslpsk"
************* Module connectors.SchemeEditor
connectors/SchemeEditor.py:29: [C0330(bad-continuation), ] Wrong continued indentation (add 1 space).
wx.ALIGN_CENTER_VERTICAL),
^|
connectors/SchemeEditor.py:42: [W0631(undefined-loop-variable), SchemeEditor.__init__] Using possibly undefined loop variable 'tag'
************* Module runtime.WampClient
runtime/WampClient.py:138: [W1612(unicode-builtin), WampSession.onJoin] unicode built-in referenced
runtime/WampClient.py:154: [W1612(unicode-builtin), WampSession.publishWithOwnID] unicode built-in referenced
runtime/WampClient.py:346: [W1612(unicode-builtin), PublishEvent] unicode built-in referenced
runtime/WampClient.py:351: [W1612(unicode-builtin), PublishEventWithOwnID] unicode built-in referenced
runtime/WampClient.py:31: [W0611(unused-import), ] Unused str imported from builtins as text
************* Module runtime.PLCObject
runtime/PLCObject.py:35: [W1648(bad-python3-import), ] Module moved in Python 3
runtime/PLCObject.py:35: [C0411(wrong-import-order), ] standard import "import md5" should be placed before "from six.moves import xrange"
runtime/PLCObject.py:36: [C0411(wrong-import-order), ] standard import "from tempfile import mkstemp" should be placed before "from six.moves import xrange"
runtime/PLCObject.py:37: [C0411(wrong-import-order), ] standard import "import shutil" should be placed before "from six.moves import xrange"
runtime/PLCObject.py:38: [C0411(wrong-import-order), ] standard import "from functools import wraps, partial" should be placed before "from six.moves import xrange"
************* Module runtime.Worker
runtime/Worker.py:12: [W1648(bad-python3-import), ] Module moved in Python 3
************* Module runtime.spawn_subprocess
runtime/spawn_subprocess.py:125: [C0325(superfluous-parens), ] Unnecessary parens after 'print' keyword
runtime/spawn_subprocess.py:130: [C0325(superfluous-parens), ] Unnecessary parens after 'print' keyword
runtime/spawn_subprocess.py:125: [E1601(print-statement), ] print statement used
runtime/spawn_subprocess.py:130: [E1601(print-statement), ] print statement used
************* Module controls.IDBrowser
controls/IDBrowser.py:101: [C0330(bad-continuation), ] Wrong continued indentation (remove 5 spaces).
if self.isManager
| ^
controls/IDBrowser.py:102: [C0330(bad-continuation), ] Wrong continued indentation (remove 5 spaces).
else dv.DATAVIEW_CELL_INERT),
| ^
************* Module Beremiz_service
Beremiz_service.py:34: [W0611(unused-import), ] Unused import __builtin__

Wed, 13 Mar 2019 10:19:30 +0300Fix invalid python3 syntax
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 10:19:30 +0300] rev 2536
Fix invalid python3 syntax

Syntax checking using python3 ...
Python 3.7.2+
File "./connectors/PYRO/__init__.py", line 76
except Exception, e:
^
SyntaxError: invalid syntax

Syntax error in ./connectors/PYRO/__init__.py
File "./connectors/PYRO/PSK_Adapter.py", line 40
except ProtocolError, x:
^
SyntaxError: invalid syntax

Syntax error in ./s.py
File "./runtime/Worker.py", line 67
raise _job.exc_info[0], _job.exc_info[1], _job.exc_info[2]
^
SyntaxError: invalid syntax

Wed, 13 Mar 2019 10:02:11 +0300Exclude pyjslib.py from python3 syntax correction check
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 10:02:11 +0300] rev 2535
Exclude pyjslib.py from python3 syntax correction check

pyjs doesn't support python3 and it's unmaintained.
async is a new keyword introduced in python 3.7.

./tests/tools/check_source.sh
Syntax checking using python3 ...
Python 3.7.2+

Syntax error in ./runtime/Worker.py
File "./svgui/pyjs/lib/pyjslib.py", line 24
def import_module(path, parent_module, module_name, dynamic=1, async=False):
^
SyntaxError: invalid syntax

Wed, 13 Mar 2019 09:56:37 +0300revert occasionally committed changed first_steps project.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 13 Mar 2019 09:56:37 +0300] rev 2534
revert occasionally committed changed first_steps project.

project was changed by commit:
update translations from https://www.transifex.com/beremiz/beremiz-ide (756d02cf78db)

Mon, 18 Mar 2019 07:13:04 +0000Merged in masterschlumpf/beremiz/generate-button (pull request #38)
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 18 Mar 2019 07:13:04 +0000] rev 2533
Merged in masterschlumpf/beremiz/generate-button (pull request #38)

"Generate Prgram" button

Approved-by: Andrey Skvortsov <andrej.skvortzov@gmail.com>

Fri, 15 Mar 2019 18:27:43 +0100Create a "Generate Program As..." menu to make the "Generate Program" toolbutton even more useful. generate-button
Schlumpf <schlumpf@kr-ll.de> [Fri, 15 Mar 2019 18:27:43 +0100] rev 2532
Create a "Generate Program As..." menu to make the "Generate Program" toolbutton even more useful.

The behaviour is the same as "Save" and "Save As...". Now "Generate Program" uses the last filename
if known and "Generate Progam As..." asks every time.

Fri, 15 Mar 2019 17:34:24 +0100Add "Generate Program" to toolbar in PLCOpenEditor standalone mode. generate-button
Schlumpf <schlumpf@kr-ll.de> [Fri, 15 Mar 2019 17:34:24 +0100] rev 2531
Add "Generate Program" to toolbar in PLCOpenEditor standalone mode.

Currently you can find the "Generate Program" action only in the file menu,
but this action is very often used in standalone mode, so I added toolbuffon.

Fri, 22 Mar 2019 11:10:37 +0100Merged search in CTN branch
Edouard Tisserant [Fri, 22 Mar 2019 11:10:37 +0100] rev 2530
Merged search in CTN branch

Fri, 22 Mar 2019 11:09:41 +0100Finished adding search in python and C files. Stripped debug code and useless comments. Close branch search_in_CTN
Edouard Tisserant [Fri, 22 Mar 2019 11:09:41 +0100] rev 2529
Finished adding search in python and C files. Stripped debug code and useless comments. Close branch

Fri, 22 Mar 2019 10:57:04 +0100WIP adding searching capabilities in python files. was done : search_in_CTN
Edouard Tisserant [Fri, 22 Mar 2019 10:57:04 +0100] rev 2528
WIP adding searching capabilities in python files. was done :
- added search in body of Code File Tree Nodes (moved editor code so that we CTN search can have the same sections text layout as editor to search in)

Thu, 21 Mar 2019 14:00:26 +0100WIP adding searching capabilities in python files. was done : search_in_CTN
Edouard Tisserant [Thu, 21 Mar 2019 14:00:26 +0100] rev 2527
WIP adding searching capabilities in python files. was done :
- added search in global variables used by Code File Tree Nodes

Thu, 21 Mar 2019 13:10:49 +0100WIP adding searching capabilities in python files. was done : search_in_CTN
Edouard Tisserant [Thu, 21 Mar 2019 13:10:49 +0100] rev 2526
WIP adding searching capabilities in python files. was done :
- fixed highlighting search result in text body of CTN code editor.

Thu, 21 Mar 2019 13:04:26 +0100WIP adding searching capabilities in python files. was done : search_in_CTN
Edouard Tisserant [Thu, 21 Mar 2019 13:04:26 +0100] rev 2525
WIP adding searching capabilities in python files. was done :
- change stub search results to trigger highlighting un variable panel
- trying to highlight in CTN code file editors -> problem with EditorPanel not having self.VariableEditor set...
- added highlight capability to CTN's CodeFileEditor's VariablePanel

Wed, 20 Mar 2019 11:34:41 +0100WIP adding searching capabilities in python files. was done : search_in_CTN
Edouard Tisserant [Wed, 20 Mar 2019 11:34:41 +0100] rev 2524
WIP adding searching capabilities in python files. was done :
- fixed stub CTN search results so that they can be accepted by search result panel
- worked on search result panel so that it can display those CTN results
- made search result panel display correctly stub search result, for variables and body matches
- EditProjectElement now opens CTN node as well as PlcOpen project nodes

Fri, 15 Mar 2019 14:11:49 +0100WIP adding searching capabilities in python files: search_in_CTN
Edouard Tisserant [Fri, 15 Mar 2019 14:11:49 +0100] rev 2523
WIP adding searching capabilities in python files:
- Added recursive Search capability to config tree nodes
- Added stub search to code editors, for test

Mon, 11 Mar 2019 17:20:15 +0100Fixed more pylint reports :
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 11 Mar 2019 17:20:15 +0100] rev 2522
Fixed more pylint reports :
connectors/__init__.py:31: [W1652(deprecated-types-field), ] Accessing a deprecated fields on the types module
in fact, it should have been unused import.

Mon, 11 Mar 2019 13:51:07 +0100Long due merge
Edouard Tisserant [Mon, 11 Mar 2019 13:51:07 +0100] rev 2521
Long due merge

Tue, 05 Mar 2019 11:43:20 +0300Fix backtrace on printing localized (non-ascii) error message in PLCGenerator.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 05 Mar 2019 11:43:20 +0300] rev 2520
Fix backtrace on printing localized (non-ascii) error message in PLCGenerator.

traceback:
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\BeremizIDE.py", line 811, in OnMenu
getattr(self.CTR, method)()
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 1134, in _Build
IECGenRes = self._Generate_SoftPLC()
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 746, in _Generate_SoftPLC
if self._Generate_PLC_ST():
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 763, in _Generate_PLC_ST
self._getIECgeneratedcodepath())
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\PLCControler.py", line 466, in GenerateProgram
errors.append(str(ex))
<type 'exceptions.UnicodeEncodeError'>: 'ascii' codec can't encode characters in position 0-9: ordinal not in range(128)
Fix backtrace on printing localized (non-ascii) error message in PLCGenerator.

traceback:
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\BeremizIDE.py", line 811, in OnMenu
getattr(self.CTR, method)()
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 1134, in _Build
IECGenRes = self._Generate_SoftPLC()
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 746, in _Generate_SoftPLC
if self._Generate_PLC_ST():
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\ProjectController.py", line 763, in _Generate_PLC_ST
self._getIECgeneratedcodepath())
File "C:\Beremiz\targets\st\beremiz\..\..\..\beremiz\beremiz\PLCControler.py", line 466, in GenerateProgram
errors.append(str(ex))
<type 'exceptions.UnicodeEncodeError'>: 'ascii' codec can't encode characters in position 0-9: ordinal not in range(128)


Close #67

Tue, 05 Mar 2019 11:19:36 +0300Fix crash if LD input contact isn't connected
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 05 Mar 2019 11:19:36 +0300] rev 2519
Fix crash if LD input contact isn't connected

Traceback (most recent call last):
File "/home/developer/WorkData/PLC/beremiz/beremiz/BeremizIDE.py", line 339, in OnMethod
obj.CTR.CallMethod('_'+meth)
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1996, in CallMethod
getattr(self, method)()
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1134, in _Build
IECGenRes = self._Generate_SoftPLC()
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 746, in _Generate_SoftPLC
if self._Generate_PLC_ST():
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 763, in _Generate_PLC_ST
self._getIECgeneratedcodepath())
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCControler.py", line 456, in GenerateProgram
self.ProgramChunks = GenerateCurrentProgram(self, self.Project, errors, warnings)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1762, in GenerateCurrentProgram
generator.GenerateProgram()
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 478, in GenerateProgram
self.GeneratePouProgram(pou_name)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 260, in GeneratePouProgram
program = pou_program.GenerateProgram(pou)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1718, in GenerateProgram
self.ComputeProgram(pou)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1028, in ComputeProgram
self.GenerateBlock(instance, block_infos, body, None)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1144, in GenerateBlock
expression = self.ComputeExpression(body, connections, executionOrderId > 0)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1373, in ComputeExpression
paths = self.GeneratePaths(connections, body, order, to_inout)
File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1344, in GeneratePaths
elif isinstance(result[0], list):
IndexError: list index out of range


Close #70

Fri, 01 Mar 2019 16:55:16 +0300Fix section styling in code editor (python and c extensions) if non-latin symbols are used in the code
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 01 Mar 2019 16:55:16 +0300] rev 2518
Fix section styling in code editor (python and c extensions) if non-latin symbols are used in the code

Problem exists even if non-latin characters are placed in comments.
Close #76

Thu, 21 Feb 2019 11:39:50 +0300update localization template
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 11:39:50 +0300] rev 2517
update localization template

Thu, 21 Feb 2019 11:27:16 +0300merge
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 11:27:16 +0300] rev 2516
merge

Thu, 21 Feb 2019 11:25:58 +0300updated list of translators
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 11:25:58 +0300] rev 2515
updated list of translators

Thu, 21 Feb 2019 11:25:03 +0300update translations from https://www.transifex.com/beremiz/beremiz-ide
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 11:25:03 +0300] rev 2514
update translations from https://www.transifex.com/beremiz/beremiz-ide

added Basque (eu) and Vietnamese (Viet Nam) (vi_VN) translations

Thu, 21 Feb 2019 10:58:37 +0300Add SpinButtons for integer and floating point variables in ForceVariableDialog
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 10:58:37 +0300] rev 2513
Add SpinButtons for integer and floating point variables in ForceVariableDialog

it allows to change variable value using only mouse.

Thu, 21 Feb 2019 10:17:38 +0300Fix non-marking as manually forced floating point variable if the value isn't integer
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 21 Feb 2019 10:17:38 +0300] rev 2512
Fix non-marking as manually forced floating point variable if the value isn't integer

For example, if user in debug variable panel set any floating point
variable to 34.3, then it's not shown as forced (blue color) and user
can't release this enforcement.

If user changes the value to 34.0, then enforcement shows
correctly. This is done because binary representation of floating point
numbers in IDE and runtime can be slightly different (double vs float)
and as a result values aren't equal.

Thu, 14 Feb 2019 10:27:24 +0300Don't close ForceVariableDialog if user entered wrong new value
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 14 Feb 2019 10:27:24 +0300] rev 2511
Don't close ForceVariableDialog if user entered wrong new value

return back to edit field in this case

Thu, 14 Feb 2019 10:19:30 +0300Additional fix for rewrite ForceVariableDialog commit (9076249f)
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 14 Feb 2019 10:19:30 +0300] rev 2510
Additional fix for rewrite ForceVariableDialog commit (9076249f)

fix following backtrace:

Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk3/wx/_core.py", line 16765, in <lambda>
lambda event: event.callable(*event.args, **event.kw) )
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/DebugVariablePanel/DebugVariableViewer.py", line 232, in HandleButton
button.ProcessCallback()
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/DebugVariablePanel/GraphButton.py", line 156, in ProcessCallback
self.Callback()
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/DebugVariablePanel/DebugVariableViewer.py", line 350, in OnForceButton
self.ForceValue(self.ItemsDict.values()[0])
File "/home/developer/WorkData/PLC/beremiz/beremiz/controls/DebugVariablePanel/DebugVariableViewer.py", line 428, in ForceValue
dialog.GetValue())
File "/home/developer/WorkData/PLC/beremiz/beremiz/dialogs/ForceVariableDialog.py", line 232, in GetValue
return GetTypeValue[self.IEC_Type](wx.TextEntryDialog.GetValue(self))
TypeError: unbound method GetValue() must be called with TextEntryDialog instance as first argument (got ForceVariableDialog instance instead)

Thu, 14 Feb 2019 10:02:58 +0300Fix redraw problems in preview frames and debug panel
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 14 Feb 2019 10:02:58 +0300] rev 2509
Fix redraw problems in preview frames and debug panel

The problem was that direct call of RefreshView (now DrawView) doesn't
generate EVT_PAINT (at least on GNU/Linux with Wayland and wxgtk build
with gtk3+ support).
Now RefreshView simply triggers EVT_PAINT and EVT_PAINT handler does actual work.

Thu, 14 Feb 2019 09:44:19 +0300Rewrite ForceVariableDialog. It's not based on wx.TextEntryDialog
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 14 Feb 2019 09:44:19 +0300] rev 2508
Rewrite ForceVariableDialog. It's not based on wx.TextEntryDialog

Don't customize standard wx.TextEntryDialog on the fly, implement your
own dialog for that with expected behavior and without any hacks.

Wed, 13 Feb 2019 13:35:48 +0000merge updates to modbus/mb_runtime.c
Mario de Sousa <msousa@fe.up.pt> [Wed, 13 Feb 2019 13:35:48 +0000] rev 2507
merge updates to modbus/mb_runtime.c

Mon, 14 Jan 2019 12:30:32 +0300fix 'SaveAs' in case of overwriting existing project
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 14 Jan 2019 12:30:32 +0300] rev 2506
fix 'SaveAs' in case of overwriting existing project

Traceback (most recent call last):
File "/home/developer/WorkData/PLC/beremiz/beremiz/BeremizIDE.py", line 959, in OnSaveProjectAsMenu
self.CTR.SaveProjectAs()
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 600, in SaveProjectAs
self.SaveProject(old_project_path)
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 579, in SaveProject
self._getProjectFilesPath(self.ProjectPath))
File "/usr/lib/python2.7/shutil.py", line 200, in copytree
os.makedirs(dst)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 17] File exists: '/tmp/tests/project_files'

Mon, 14 Jan 2019 12:17:48 +0300fix 'SaveAs' to non-empty directory and directory without write permissions
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 14 Jan 2019 12:17:48 +0300] rev 2505
fix 'SaveAs' to non-empty directory and directory without write permissions

Sat, 12 Jan 2019 15:02:17 +0300fix problems with recursive beremiz.h inclusion
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 12 Jan 2019 15:02:17 +0300] rev 2504
fix problems with recursive beremiz.h inclusion

Sat, 12 Jan 2019 13:57:16 +0300remove LogMessage prototype from plc_main_head.c
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 12 Jan 2019 13:57:16 +0300] rev 2503
remove LogMessage prototype from plc_main_head.c

it's not needed, because prototype is included in beremiz.h
But it caused problems with TARGET_LOGGING_DISABLE.

Mon, 07 Jan 2019 23:28:28 +0300merge
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 07 Jan 2019 23:28:28 +0300] rev 2502
merge

Sun, 06 Jan 2019 03:11:39 +0300Make online debug optional
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sun, 06 Jan 2019 03:11:39 +0300] rev 2501
Make online debug optional

It could be useful for very small targets like Atmega (Arduino) and
for target bring-up there developer want to have running PLC program,
but has not implemented runtime communication yet.


TARGET_DEBUG_AND_RETAIN_DISABLE - completely disable debug and retain
functionality. Previously named TARGET_DEBUG_DISABLE.

TARGET_ONLINE_DEBUG_DISABLE - can be used to enable retain
functionality (no define TARGET_DEBUG_AND_RETAIN_DISABLE is used), but disable
online debug with corresponding RAM/FLASH overhead.

TARGET_LOGGING_DISABLE - disables logging functionality from runtime and PLC program

TARGET_EXT_SYNC_DISABLE - disables PLC program synchronization with
external events. For example, it could be used to synchronize several
PLCs that control motors for different axes.

By default all these options are off.

To test generate program for Generic target, put following files in
project files directory and run build.sh after generating PLC program.
This is very easy to integrate into makefile (Generic target).

[------------- build.sh --------------------------]
files=$(find $PWD/../build -iname '*.c' | grep -v POUS.c)
arm-none-eabi-gcc \
-DTARGET_DEBUG_AND_RETAIN_DISABLE \
-DTARGET_ONLINE_DEBUG_DISABLE \
-DTARGET_LOGGING_DISABLE \
-DTARGET_EXT_SYNC_DISABLE \
-flto -ffunction-sections -fdata-sections -I../../../../matiec/lib/C \
$files \
main.c \
-Wl,--Map=./program.map,--cref \
-nodefaultlibs --specs=nano.specs -Wl,--static -Wl,--gc-section -Wl,--start-group -lc -lm -lnosys -lgcc -Wl,--end-group
[------------------------------------------------]

[------------- main.c --------------------------]
#ifndef TARGET_DEBUG_AND_RETAIN_DISABLE
void Retain(void){}
void InValidateRetainBuffer(void){}
void ValidateRetainBuffer(void){}
#endif

extern void __run(void);
int main(void)
{
for(;;) {
__run();
// sleep common_ticktime__ ns
// add common_ticktime__ ns to __CURRENT_TIME
}
return 0;
}
[------------------------------------------------]

Sun, 06 Jan 2019 02:00:07 +0300Disable Python extension in First steps example
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sun, 06 Jan 2019 02:00:07 +0300] rev 2500
Disable Python extension in First steps example

Sun, 06 Jan 2019 01:22:46 +0300use pregenerated CRC32 lookup tables for retain on Win32 and GNU/Linux
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sun, 06 Jan 2019 01:22:46 +0300] rev 2499
use pregenerated CRC32 lookup tables for retain on Win32 and GNU/Linux

This code could be possible reused on low-end targets with limited RAM.

code to generate lookup table:
[---------------------------------------------------------------------]

/* CRC lookup table and initial state. */
uint32_t crc32_table[256];

/* Generate CRC32 lookup table. */
void GenerateCRC32Table(void)
{
unsigned int i, j;
/* Use CRC-32-IEEE 802.3 polynomial 0x04C11DB7 (bit reflected). */
uint32_t poly = 0xEDB88320;

for (i = 0; i <= 0xFF; i++)
{
uint32_t c = i;
for (j = 0 ; j < 8 ; j++)
c = (c & 1) ? (c >> 1 ) ^ poly : (c >> 1);
crc32_table[i] = c;
}
}

void main(void)
{
GenerateCRC32Table();
int j=0;
for(int i=0; i<256; i++) {
printf("0x%08X, ", crc32_table[i]);
if (++j >= 8) {
j = 0;
printf("\n");
}
}
}
[---------------------------------------------------------------------]

Mon, 07 Jan 2019 20:24:49 +0000Merged in masterschlumpf/beremiz/wx3-fix (pull request #37)
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 07 Jan 2019 20:24:49 +0000] rev 2498
Merged in masterschlumpf/beremiz/wx3-fix (pull request #37)

Fix an exception with wx-3.0-gtk3 in PLCOpenEditor when generating ST files

Approved-by: Andrey Skvortsov <andrej.skvortzov@gmail.com>

Mon, 07 Jan 2019 18:32:03 +0100Fix an exception on wx-3.0-gtk3 in PLCOpenEditor when generating ST files. wx3-fix
Schlumpf <schlumpf@kr-ll.de> [Mon, 07 Jan 2019 18:32:03 +0100] rev 2497
Fix an exception on wx-3.0-gtk3 in PLCOpenEditor when generating ST files.

On Python2.7 with WX3.0 and GTK3, an assertionError rises on generating a ST file if the name is already set. The first generation works without problems, if you generate the file a second one, PLCOpenEditor tries to open the file
save dialog with the pre entered name from last run. Then the following assertion pops up:

PyAssertionError: C++ assertion "volDummy.empty() && pathDummy.empty()" failed at ./src/common/filename.cpp(568) in Assign(): the file name shouldn't contain the path

This fix reduces the filepath of the ST file the to the filename. Now it works fine.

Mon, 24 Dec 2018 16:44:06 +0300Fix typos in function names
Dmitriy Kuzmin <z644813828@gmail.com> [Mon, 24 Dec 2018 16:44:06 +0300] rev 2496
Fix typos in function names

Mon, 24 Dec 2018 16:22:28 +0300update links to matiec and beremiz repos in README
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 24 Dec 2018 16:22:28 +0300] rev 2495
update links to matiec and beremiz repos in README

Mon, 24 Dec 2018 16:20:20 +0300fix zoom-in/zoom-out using mouse wheel
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 24 Dec 2018 16:20:20 +0300] rev 2494
fix zoom-in/zoom-out using mouse wheel

regression introduced by 2393:235f847be37e "python3 support: pylint, W1619 #(old-division) division w/o __future__ statement"

Mon, 11 Mar 2019 09:18:58 +0100better pylint complain workaround
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 11 Mar 2019 09:18:58 +0100] rev 2493
better pylint complain workaround

Mon, 11 Mar 2019 01:03:32 +0100check_sources.sh makes me become even less productive
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 11 Mar 2019 01:03:32 +0100] rev 2492
check_sources.sh makes me become even less productive

Thu, 07 Mar 2019 21:57:18 +0100Added stub axis_s type in EtherLAB CiA402 support code, until Motion Contol Library comes back
Edouard Tisserant <edouard.tisserant@gmail.com> [Thu, 07 Mar 2019 21:57:18 +0100] rev 2491
Added stub axis_s type in EtherLAB CiA402 support code, until Motion Contol Library comes back

Tue, 19 Feb 2019 11:27:29 +0100Allow using one XSD based target description for many targets. Target description XSD can now use %(target_name)s to refer to target name.
Edouard Tisserant [Tue, 19 Feb 2019 11:27:29 +0100] rev 2490
Allow using one XSD based target description for many targets. Target description XSD can now use %(target_name)s to refer to target name.

Thu, 14 Feb 2019 10:06:43 +0100Fix previous commit : Using wx.CallAfter shouldn't have been necessary, and was a symptom of failing evaluator's deadlock detection.
Edouard Tisserant [Thu, 14 Feb 2019 10:06:43 +0100] rev 2489
Fix previous commit : Using wx.CallAfter shouldn't have been necessary, and was a symptom of failing evaluator's deadlock detection.

Wed, 13 Feb 2019 13:08:26 +0100Fix startup of wxGlade base HMI. Wx calls were issued from non-wx thread (main).
Edouard Tisserant [Wed, 13 Feb 2019 13:08:26 +0100] rev 2488
Fix startup of wxGlade base HMI. Wx calls were issued from non-wx thread (main).

Wed, 13 Feb 2019 09:41:35 +0100Reworked chunk based transfer to support duplicated files (i.e. files with same content, but different names)
Edouard Tisserant [Wed, 13 Feb 2019 09:41:35 +0100] rev 2487
Reworked chunk based transfer to support duplicated files (i.e. files with same content, but different names)

Fri, 01 Feb 2019 14:14:13 +0100Fixed deadlock in runtime's Worker. Was discovered while using WAMP and PYRO simultaneously.
Edouard Tisserant [Fri, 01 Feb 2019 14:14:13 +0100] rev 2486
Fixed deadlock in runtime's Worker. Was discovered while using WAMP and PYRO simultaneously.

Thu, 31 Jan 2019 14:10:06 +0100Add a debugger token to SetTraceVariables and GetTraceVariables to prevent crash an inconsistant data in case of multiple connections. Last connection now takes over existing connections's debug, and first connected IDE gets a wrning.
Edouard Tisserant [Thu, 31 Jan 2019 14:10:06 +0100] rev 2485
Add a debugger token to SetTraceVariables and GetTraceVariables to prevent crash an inconsistant data in case of multiple connections. Last connection now takes over existing connections's debug, and first connected IDE gets a wrning.

Tue, 29 Jan 2019 09:14:47 +0100Fixed deadlock when using Wx together with Twisted in runtime.
Edouard Tisserant [Tue, 29 Jan 2019 09:14:47 +0100] rev 2484
Fixed deadlock when using Wx together with Twisted in runtime.

Fri, 25 Jan 2019 14:06:11 +0100Split IDE's frame OnCloseFrame() into TryCloseFrame() and OnCloseFrame(), to help further customization
Edouard Tisserant [Fri, 25 Jan 2019 14:06:11 +0100] rev 2483
Split IDE's frame OnCloseFrame() into TryCloseFrame() and OnCloseFrame(), to help further customization

Wed, 09 Jan 2019 14:10:07 +0100fixed exception happening randomly just after showing discovery panel.
Edouard Tisserant [Wed, 09 Jan 2019 14:10:07 +0100] rev 2482
fixed exception happening randomly just after showing discovery panel.

Wed, 09 Jan 2019 14:09:02 +0100fixed exception happening when connecting to empty URI, and set URI through URI Editor Dialog popping up becaue empty.
Edouard Tisserant [Wed, 09 Jan 2019 14:09:02 +0100] rev 2481
fixed exception happening when connecting to empty URI, and set URI through URI Editor Dialog popping up becaue empty.

Mon, 07 Jan 2019 13:50:39 +0100Merged Mario's modbus fix : Modbus plugin: reset periodic activation timer when overrun occurs (delays due to communication errors, ...)
Edouard Tisserant [Mon, 07 Jan 2019 13:50:39 +0100] rev 2480
Merged Mario's modbus fix : Modbus plugin: reset periodic activation timer when overrun occurs (delays due to communication errors, ...)

Sat, 02 Jun 2018 11:56:01 +0100Modbus plugin: reset periodic activation timer when overrun occurs (delays due to communication errors, ...)
Mario de Sousa <msousa@fe.up.pt> [Sat, 02 Jun 2018 11:56:01 +0100] rev 2479
Modbus plugin: reset periodic activation timer when overrun occurs (delays due to communication errors, ...)

Mon, 07 Jan 2019 11:33:34 +0100Disable MDNS:// scheme support. Also prevent discovery pannel to produce some. For now it seems that that feature is unused, and could be a security issue.
Edouard Tisserant [Mon, 07 Jan 2019 11:33:34 +0100] rev 2478
Disable MDNS:// scheme support. Also prevent discovery pannel to produce some. For now it seems that that feature is unused, and could be a security issue.

Fri, 21 Dec 2018 13:51:33 +0100Added support to PYROS in Zeroconf discovery and publish. For now, PYRO://mdnsname._tcp.local. URI are broken, and discovery panel generate IP based URI by default.
Edouard Tisserant [Fri, 21 Dec 2018 13:51:33 +0100] rev 2477
Added support to PYROS in Zeroconf discovery and publish. For now, PYRO://mdnsname._tcp.local. URI are broken, and discovery panel generate IP based URI by default.

Fri, 21 Dec 2018 13:43:41 +0100PyroServer: fixed naming of class, and reorganized methods in order to ease subclassing, in case of customization of service publication on the local network (i.e. zeroconf)
Edouard Tisserant [Fri, 21 Dec 2018 13:43:41 +0100] rev 2476
PyroServer: fixed naming of class, and reorganized methods in order to ease subclassing, in case of customization of service publication on the local network (i.e. zeroconf)

Fri, 21 Dec 2018 13:39:41 +0100Fix exception dialog with non recognized URI schemes
Edouard Tisserant [Fri, 21 Dec 2018 13:39:41 +0100] rev 2475
Fix exception dialog with non recognized URI schemes

Wed, 19 Dec 2018 10:53:19 +0100Fixed runtime's reconnecting loop not stopping when re-configuring WAMP.
Edouard Tisserant [Wed, 19 Dec 2018 10:53:19 +0100] rev 2474
Fixed runtime's reconnecting loop not stopping when re-configuring WAMP.
In case WAMP was already trying to connect without success and user change WAMP configuration through web interface, previous ReconnectingClient wasn't stopped.

Wed, 19 Dec 2018 10:48:53 +0100Removed nonsense code, that I should have check more in details before merging m(
Edouard Tisserant [Wed, 19 Dec 2018 10:48:53 +0100] rev 2473
Removed nonsense code, that I should have check more in details before merging m(

Tue, 18 Dec 2018 14:12:16 +0100Allow easier monkey patching of WAMP connector Session class
Edouard Tisserant [Tue, 18 Dec 2018 14:12:16 +0100] rev 2472
Allow easier monkey patching of WAMP connector Session class

Tue, 18 Dec 2018 14:10:43 +0100Expose new PLCObject API members to WAMP interface.
Edouard Tisserant [Tue, 18 Dec 2018 14:10:43 +0100] rev 2471
Expose new PLCObject API members to WAMP interface.

Tue, 18 Dec 2018 14:08:11 +0100Use another way to ensure compatibility with Py3 about text type.
Edouard Tisserant [Tue, 18 Dec 2018 14:08:11 +0100] rev 2470
Use another way to ensure compatibility with Py3 about text type.

Mon, 10 Dec 2018 11:22:43 +0100Make easier to read console error message in case of connection problem.
Edouard Tisserant [Mon, 10 Dec 2018 11:22:43 +0100] rev 2469
Make easier to read console error message in case of connection problem.

Wed, 05 Dec 2018 14:05:35 +0100PYRO(S): Added timeout on client side to allow unfreezing IDE after some time when communication with target dropped
Edouard Tisserant [Wed, 05 Dec 2018 14:05:35 +0100] rev 2468
PYRO(S): Added timeout on client side to allow unfreezing IDE after some time when communication with target dropped

Wed, 05 Dec 2018 13:05:51 +0100Enure that autostart blocks other @RunInMain PLCObject methods, and _unblocks_ them once autostart is done...
Edouard Tisserant [Wed, 05 Dec 2018 13:05:51 +0100] rev 2467
Enure that autostart blocks other @RunInMain PLCObject methods, and _unblocks_ them once autostart is done...

Wed, 05 Dec 2018 13:04:37 +0100Fixed Discovery panel in URI Editor dialog : double click works back again, and avoid setting URI to unicode type.
Edouard Tisserant [Wed, 05 Dec 2018 13:04:37 +0100] rev 2466
Fixed Discovery panel in URI Editor dialog : double click works back again, and avoid setting URI to unicode type.

Wed, 05 Dec 2018 13:03:09 +0100Bigger chunks, from 16k to 1M
Edouard Tisserant [Wed, 05 Dec 2018 13:03:09 +0100] rev 2465
Bigger chunks, from 16k to 1M

Wed, 05 Dec 2018 11:35:18 +0100Empirically reverted calls done just after NewPLC back to the order as it was before chunked transfer. Apparently I broke something... To be continued
Edouard Tisserant [Wed, 05 Dec 2018 11:35:18 +0100] rev 2464
Empirically reverted calls done just after NewPLC back to the order as it was before chunked transfer. Apparently I broke something... To be continued

Tue, 04 Dec 2018 11:31:58 +0100Chunk based transfer for PLC binary and extra files, and some collateral code refactoring.
Edouard Tisserant [Tue, 04 Dec 2018 11:31:58 +0100] rev 2463
Chunk based transfer for PLC binary and extra files, and some collateral code refactoring.

Tue, 27 Nov 2018 13:34:14 +0100Fix failing PLC build when building freshly created project that use default libraries blocks. When controller loads libraries according to attibutes in project files (BeremizRoot/Enable_{libname}_Library), use known default if attribute is missing.
Edouard Tisserant [Tue, 27 Nov 2018 13:34:14 +0100] rev 2462
Fix failing PLC build when building freshly created project that use default libraries blocks. When controller loads libraries according to attibutes in project files (BeremizRoot/Enable_{libname}_Library), use known default if attribute is missing.

Tue, 27 Nov 2018 10:54:13 +0100Cosmetic change in PSKManagement.py
Edouard Tisserant [Tue, 27 Nov 2018 10:54:13 +0100] rev 2461
Cosmetic change in PSKManagement.py

Mon, 26 Nov 2018 15:12:18 +0100Fixed ID,last URI, or last connection date not being updated when connnecting to target.
Edouard Tisserant [Mon, 26 Nov 2018 15:12:18 +0100] rev 2460
Fixed ID,last URI, or last connection date not being updated when connnecting to target.

Fri, 23 Nov 2018 12:13:24 +0100Merged. Some changes that should already have been incuded during previous merge (mostly about PlcStatus) have been included this time.
Edouard Tisserant [Fri, 23 Nov 2018 12:13:24 +0100] rev 2459
Merged. Some changes that should already have been incuded during previous merge (mostly about PlcStatus) have been included this time.

Fri, 23 Nov 2018 11:01:20 +0100IDManager : small cosmetic fixes and cleanup.
Edouard Tisserant [Fri, 23 Nov 2018 11:01:20 +0100] rev 2458
IDManager : small cosmetic fixes and cleanup.

Fri, 12 Oct 2018 13:24:47 +0300python3 support: pylint, W1633 # (round-builtin) round built-in referenced
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 12 Oct 2018 13:24:47 +0300] rev 2457
python3 support: pylint, W1633 # (round-builtin) round built-in referenced

because round behavior is changed to default behavior in Python3
(Banker round). It can cause slight differences in some cases.
Mostly graphical editors are affected, there could be single pixel differences.
Now I couldn't locate any visual differences in test programs.

Fri, 12 Oct 2018 12:06:45 +0300python3 support: pylint,W1610 # (reduce-builtin) reduce built-in referenced
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 12 Oct 2018 12:06:45 +0300] rev 2456
python3 support: pylint,W1610 # (reduce-builtin) reduce built-in referenced

Fri, 12 Oct 2018 11:50:40 +0300python3 support: pylint, W1653 # (next-method-defined) next method defined
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 12 Oct 2018 11:50:40 +0300] rev 2455
python3 support: pylint, W1653 # (next-method-defined) next method defined

Fri, 12 Oct 2018 11:35:15 +0300python3 support: pylint, W1622 # (next-method-called) Called a next() method on an object
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 12 Oct 2018 11:35:15 +0300] rev 2454
python3 support: pylint, W1622 # (next-method-called) Called a next() method on an object

Fri, 12 Oct 2018 11:14:34 +0300python3 support: pylint, W1625 # (raising-string) Raising a string exception
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 12 Oct 2018 11:14:34 +0300] rev 2453
python3 support: pylint, W1625 # (raising-string) Raising a string exception

Fri, 12 Oct 2018 10:42:47 +0300python3 support: pylint, W1624 # (indexing-exception) Indexing exceptions will not work on Python 3
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 12 Oct 2018 10:42:47 +0300] rev 2452
python3 support: pylint, W1624 # (indexing-exception) Indexing exceptions will not work on Python 3

Thu, 11 Oct 2018 12:09:04 +0300python3 support: pylint, W1611 # (standarderror-builtin) StandardError built-in referenced
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 11 Oct 2018 12:09:04 +0300] rev 2451
python3 support: pylint, W1611 # (standarderror-builtin) StandardError built-in referenced

Thu, 11 Oct 2018 12:00:40 +0300python3 support: pylint, W1652 # (deprecated-types-field) Accessing a deprecated fields on the types module
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 11 Oct 2018 12:00:40 +0300] rev 2450
python3 support: pylint, W1652 # (deprecated-types-field) Accessing a deprecated fields on the types module

Thu, 11 Oct 2018 10:25:19 +0300python3 support: pylint, W1651 (deprecated-itertools-function) Accessing a deprecated function on the itertools module
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 11 Oct 2018 10:25:19 +0300] rev 2449
python3 support: pylint, W1651 (deprecated-itertools-function) Accessing a deprecated function on the itertools module

It's even 20% faster, than previous code. On python3 zip is even much more faster.

Thu, 11 Oct 2018 10:01:12 +0300python3 support: pylint, W1649 # (deprecated-string-function) Accessing a deprecated function on the string module
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 11 Oct 2018 10:01:12 +0300] rev 2448
python3 support: pylint, W1649 # (deprecated-string-function) Accessing a deprecated function on the string module

Thu, 11 Oct 2018 09:41:15 +0300python3 support: pylint, W1645 # (exception-message-attribute) Exception.message removed in Python 3
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 11 Oct 2018 09:41:15 +0300] rev 2447
python3 support: pylint, W1645 # (exception-message-attribute) Exception.message removed in Python 3

Wed, 10 Oct 2018 10:50:00 +0300python3 support: pylint, W1646 # (invalid-str-codec) non-text encoding used in str.decode
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 10 Oct 2018 10:50:00 +0300] rev 2446
python3 support: pylint, W1646 # (invalid-str-codec) non-text encoding used in str.decode

Wed, 10 Oct 2018 10:36:07 +0300python3 support: pylint,W1602 # (basestring-builtin) basestring built-in referenced
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 10 Oct 2018 10:36:07 +0300] rev 2445
python3 support: pylint,W1602 # (basestring-builtin) basestring built-in referenced

Wed, 10 Oct 2018 10:32:57 +0300python3 support: pylint, W1629 # (nonzero-method) __nonzero__ method defined
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 10 Oct 2018 10:32:57 +0300] rev 2444
python3 support: pylint, W1629 # (nonzero-method) __nonzero__ method defined

Wed, 10 Oct 2018 10:26:27 +0300python3 support: pylint, W1606 # (execfile-builtin) execfile built-in referenced
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 10 Oct 2018 10:26:27 +0300] rev 2443
python3 support: pylint, W1606 # (execfile-builtin) execfile built-in referenced

Tue, 09 Oct 2018 14:03:44 +0300python3 support: pylint, W1607 # (file-builtin) file built-in referenced
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 09 Oct 2018 14:03:44 +0300] rev 2442
python3 support: pylint, W1607 # (file-builtin) file built-in referenced

Tue, 09 Oct 2018 13:50:29 +0300python3 support: pylint, W1659 # (xreadlines-attribute) Accessing a removed xreadlines attribute
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 09 Oct 2018 13:50:29 +0300] rev 2441
python3 support: pylint, W1659 # (xreadlines-attribute) Accessing a removed xreadlines attribute

Tue, 09 Oct 2018 12:05:43 +0300python3 support: pylint, W1601 # (apply-builtin) apply built-in referenced
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 09 Oct 2018 12:05:43 +0300] rev 2440
python3 support: pylint, W1601 # (apply-builtin) apply built-in referenced

Tue, 09 Oct 2018 11:56:45 +0300Fix pep8 warning: W605 invalid escape sequence ?x?
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 09 Oct 2018 11:56:45 +0300] rev 2439
Fix pep8 warning: W605 invalid escape sequence ?x?

Tue, 09 Oct 2018 11:43:39 +0300pep8, ignore W606 'async' and 'await' are reserved keywords starting with Python 3.7
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 09 Oct 2018 11:43:39 +0300] rev 2438
pep8, ignore W606 'async' and 'await' are reserved keywords starting with Python 3.7

This error exists in pyjs extension, but pyjs isn't going to Python3.
'noqa' isn't working for W606, so this warning is disabled completely.
'async' and 'await' are still checked by pylint.

Fri, 05 Oct 2018 14:22:01 +0300python3 support: pylint, W1619 #(old-division) division w/o __future__ statement
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 05 Oct 2018 14:22:01 +0300] rev 2437
python3 support: pylint, W1619 #(old-division) division w/o __future__ statement

Fri, 05 Oct 2018 13:48:54 +0300Make easier to run pytest on local X-server
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 05 Oct 2018 13:48:54 +0300] rev 2436
Make easier to run pytest on local X-server

Fri, 05 Oct 2018 13:11:28 +0300cleanup pyc files between running pytest
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 05 Oct 2018 13:11:28 +0300] rev 2435
cleanup pyc files between running pytest

this is need to avoid problem sometimes tests are run inside docker
container and sometimes local.

Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/_pytest/config/__init__.py", line 409, in _importconftest
mod = conftestpath.pyimport()
File "/usr/lib/python2.7/dist-packages/py/_path/local.py", line 686, in pyimport
raise self.ImportMismatchError(modname, modfile, self)
ImportMismatchError: ('conftest', '/beremiz/tests/tools/conftest.py', local('/home/developer/beremiz/tests/tools/conftest.py'))
ERROR: could not load /home/developer/beremiz/tests/tools/conftest.py

Thu, 04 Oct 2018 17:24:40 +0300python3 support: pylint, W1612 # (unicode-builtin) unicode built-in referenced
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 04 Oct 2018 17:24:40 +0300] rev 2434
python3 support: pylint, W1612 # (unicode-builtin) unicode built-in referenced

Thu, 04 Oct 2018 12:09:23 +0300Use multiple processes to speed up pylint
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 04 Oct 2018 12:09:23 +0300] rev 2433
Use multiple processes to speed up pylint

0 will auto-detect the number of processors available to use.
version 1.6.5 (Debian 9.5) hangs for some reason in multi-process mode.

Thu, 04 Oct 2018 12:07:16 +0300python3 support: pylint, W1613 # (xrange-builtin) xrange built-in referenced
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 04 Oct 2018 12:07:16 +0300] rev 2432
python3 support: pylint, W1613 # (xrange-builtin) xrange built-in referenced

Thu, 04 Oct 2018 11:25:42 +0300python3 support: pylint, W1648 # (bad-python3-import) Module moved in Python 3
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 04 Oct 2018 11:25:42 +0300] rev 2431
python3 support: pylint, W1648 # (bad-python3-import) Module moved in Python 3

Fri, 23 Nov 2018 00:45:51 +0100Fixed regression in connecting to LOCAL:// targets
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 23 Nov 2018 00:45:51 +0100] rev 2430
Fixed regression in connecting to LOCAL:// targets

Fri, 23 Nov 2018 00:33:04 +0100Merge, with surprizingly little conflicts
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 23 Nov 2018 00:33:04 +0100] rev 2429
Merge, with surprizingly little conflicts

Thu, 22 Nov 2018 23:39:54 +0100IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.
Edouard Tisserant [Thu, 22 Nov 2018 23:39:54 +0100] rev 2428
IDManager : finished Import/Export. Added merging capability to import (asks if particular ID is replaced during import). Added ESC as closing shortcut to IDManager dialog, and adjusted its size.

Wed, 03 Oct 2018 15:47:59 +0300merge
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 03 Oct 2018 15:47:59 +0300] rev 2427
merge

Wed, 03 Oct 2018 14:20:57 +0300Update localization template
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 03 Oct 2018 14:20:57 +0300] rev 2426
Update localization template

Wed, 03 Oct 2018 14:19:41 +0300Fix 'msgid' format string with unnamed arguments cannot be properly localized
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 03 Oct 2018 14:19:41 +0300] rev 2425
Fix 'msgid' format string with unnamed arguments cannot be properly localized

Wed, 03 Oct 2018 14:17:19 +0300Add automatic check for localization strings with multiple unnamed arguments
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 03 Oct 2018 14:17:19 +0300] rev 2424
Add automatic check for localization strings with multiple unnamed arguments

Wed, 03 Oct 2018 12:43:35 +0300Improve localization support in etherlab (mostly)
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 03 Oct 2018 12:43:35 +0300] rev 2423
Improve localization support in etherlab (mostly)

Wed, 03 Oct 2018 12:07:56 +0300cleanup etherlab: pylint, W0602 (global-variable-not-assigned) Using global for 'X' but no assignment is done
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 03 Oct 2018 12:07:56 +0300] rev 2422
cleanup etherlab: pylint, W0602 (global-variable-not-assigned) Using global for 'X' but no assignment is done

Wed, 03 Oct 2018 11:48:05 +0300cleanup: pylint, W0109 # (duplicate-key) Duplicate key 'X' in dictionary
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 03 Oct 2018 11:48:05 +0300] rev 2421
cleanup: pylint, W0109 # (duplicate-key) Duplicate key 'X' in dictionary

Wed, 03 Oct 2018 11:47:04 +0300Add python3 syntax checking to CI
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 03 Oct 2018 11:47:04 +0300] rev 2420
Add python3 syntax checking to CI

Wed, 03 Oct 2018 11:44:57 +0300Fix old style exception raise and exec syntax
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 03 Oct 2018 11:44:57 +0300] rev 2419
Fix old style exception raise and exec syntax

Tue, 02 Oct 2018 18:08:49 +0300Use python 3 compatible exception syntax everywhere
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 02 Oct 2018 18:08:49 +0300] rev 2418
Use python 3 compatible exception syntax everywhere

Tue, 02 Oct 2018 17:18:09 +0300cleanup: pylint, R0123 # (literal-comparison) Comparison to literal
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 02 Oct 2018 17:18:09 +0300] rev 2417
cleanup: pylint, R0123 # (literal-comparison) Comparison to literal

Tue, 02 Oct 2018 16:53:14 +0300Use predefined constants for PlcStatus instead of string literals
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 02 Oct 2018 16:53:14 +0300] rev 2416
Use predefined constants for PlcStatus instead of string literals

Mon, 01 Oct 2018 15:53:34 +0300cleanup: pylint, R1704 # (redefined-argument-from-local) Redefining argument with the local name 'Y'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 01 Oct 2018 15:53:34 +0300] rev 2415
cleanup: pylint, R1704 # (redefined-argument-from-local) Redefining argument with the local name 'Y'

Mon, 01 Oct 2018 15:36:01 +0300cleanup: pylint, R1701 # (consider-merging-isinstance) Consider merging these isinstance calls to isinstance(CTNLDFLAGS, (str, unicode))
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 01 Oct 2018 15:36:01 +0300] rev 2414
cleanup: pylint, R1701 # (consider-merging-isinstance) Consider merging these isinstance calls to isinstance(CTNLDFLAGS, (str, unicode))

Mon, 01 Oct 2018 14:29:01 +0300cleanup: pylint, E1304 # (missing-format-string-key) Missing key 'X_name' in format string dictionary
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 01 Oct 2018 14:29:01 +0300] rev 2413
cleanup: pylint, E1304 # (missing-format-string-key) Missing key 'X_name' in format string dictionary

Mon, 01 Oct 2018 14:13:05 +0300cleanup: pylint, E1300 # (bad-format-character) Unsupported format character '"' (0x22) at index 17
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 01 Oct 2018 14:13:05 +0300] rev 2412
cleanup: pylint, E1300 # (bad-format-character) Unsupported format character '"' (0x22) at index 17

Mon, 01 Oct 2018 13:43:50 +0300cleanup: pylint, W0111 # (assign-to-new-keyword) Name async will become a keyword in Python 3.7
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 01 Oct 2018 13:43:50 +0300] rev 2411
cleanup: pylint, W0111 # (assign-to-new-keyword) Name async will become a keyword in Python 3.7

Mon, 01 Oct 2018 13:31:52 +0300cleanup: pylint, E1310 (bad-str-strip-call) Suspicious argument in str.strip call
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 01 Oct 2018 13:31:52 +0300] rev 2410
cleanup: pylint, E1310 (bad-str-strip-call) Suspicious argument in str.strip call

Mon, 01 Oct 2018 12:04:58 +0300Fix segmentation fault when last lines in text POUs should be highlighted
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 01 Oct 2018 12:04:58 +0300] rev 2409
Fix segmentation fault when last lines in text POUs should be highlighted

Sat, 29 Sep 2018 19:18:50 +0300enable etherlab checks
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 19:18:50 +0300] rev 2408
enable etherlab checks

resort enabled pylint check to move likely-most invasive changes to the end

Sat, 29 Sep 2018 19:10:43 +0300clean etherlab: pylint, C0330 # (bad-continuation) Wrong hanging indentation before block
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 19:10:43 +0300] rev 2407
clean etherlab: pylint, C0330 # (bad-continuation) Wrong hanging indentation before block

Sat, 29 Sep 2018 18:59:41 +0300clean etherlab: pylint, W0612 # (unused-variable) Unused variable 'X'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 18:59:41 +0300] rev 2406
clean etherlab: pylint, W0612 # (unused-variable) Unused variable 'X'

Sat, 29 Sep 2018 17:52:33 +0300clean etherlab: pylint, W1618 # (no-absolute-import) import missing `from __future__ import absolute_import`
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 17:52:33 +0300] rev 2405
clean etherlab: pylint, W1618 # (no-absolute-import) import missing `from __future__ import absolute_import`

Sat, 29 Sep 2018 17:39:21 +0300clean etherlab: pylint,E0602 # (undefined-variable) Undefined variable 'X'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 17:39:21 +0300] rev 2404
clean etherlab: pylint,E0602 # (undefined-variable) Undefined variable 'X'

Sat, 29 Sep 2018 17:12:44 +0300clean etherlab: pylint, E1136 # (unsubscriptable-object) Value 'X' is unsubscriptable
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 17:12:44 +0300] rev 2403
clean etherlab: pylint, E1136 # (unsubscriptable-object) Value 'X' is unsubscriptable

Sat, 29 Sep 2018 17:00:01 +0300ignore missing MotionLibrary
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 17:00:01 +0300] rev 2402
ignore missing MotionLibrary

to fix pylint error 'E0401 # (import-error) Unable to import 'X'

Sat, 29 Sep 2018 16:57:25 +0300clean etherlab: pylint, E0611 # (no-name-in-module) No name 'X' in module 'Y'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 16:57:25 +0300] rev 2401
clean etherlab: pylint, E0611 # (no-name-in-module) No name 'X' in module 'Y'

Sat, 29 Sep 2018 16:53:46 +0300clean etherlab: pylint, C0123 # (unidiomatic-typecheck) Using type() instead of isinstance() for a typecheck.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 16:53:46 +0300] rev 2400
clean etherlab: pylint, C0123 # (unidiomatic-typecheck) Using type() instead of isinstance() for a typecheck.

Sat, 29 Sep 2018 16:48:25 +0300clean etherlab: pylint, W0104 # (pointless-statement) Statement seems to have no effect
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 16:48:25 +0300] rev 2399
clean etherlab: pylint, W0104 # (pointless-statement) Statement seems to have no effect

Sat, 29 Sep 2018 16:46:41 +0300clean etherlab: pylint, W0631 # (undefined-loop-variable) Using possibly undefined loop variable 'X'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 16:46:41 +0300] rev 2398
clean etherlab: pylint, W0631 # (undefined-loop-variable) Using possibly undefined loop variable 'X'

Sat, 29 Sep 2018 16:40:56 +0300clean etherlab: pylint, C1001 # (old-style-class) Old-style class defined.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 16:40:56 +0300] rev 2397
clean etherlab: pylint, C1001 # (old-style-class) Old-style class defined.

Sat, 29 Sep 2018 16:39:25 +0300clean etherlab: pylint, W0611 # (unused-import) Unused import X
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 16:39:25 +0300] rev 2396
clean etherlab: pylint, W0611 # (unused-import) Unused import X

Sat, 29 Sep 2018 16:35:38 +0300clean etherlab: pylint, E0102 # (function-redefined) method already defined
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 16:35:38 +0300] rev 2395
clean etherlab: pylint, E0102 # (function-redefined) method already defined

Sat, 29 Sep 2018 16:33:22 +0300clean etherlab: pylint, W0105 # (pointless-string-statement) String statement has no effect
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 16:33:22 +0300] rev 2394
clean etherlab: pylint, W0105 # (pointless-string-statement) String statement has no effect

Sat, 29 Sep 2018 16:31:54 +0300clean etherlab: pylint,W0231 # (super-init-not-called) __init__ method from base class is not called
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 16:31:54 +0300] rev 2393
clean etherlab: pylint,W0231 # (super-init-not-called) __init__ method from base class is not called

Sat, 29 Sep 2018 16:29:41 +0300clean etherlab: pylint, C0412 # (ungrouped-imports) Imports from package X are not grouped
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 16:29:41 +0300] rev 2392
clean etherlab: pylint, C0412 # (ungrouped-imports) Imports from package X are not grouped

Sat, 29 Sep 2018 16:23:20 +0300clean etherlab: pylint,W0108 # (unnecessary-lambda) Lambda may not be necessary
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 16:23:20 +0300] rev 2391
clean etherlab: pylint,W0108 # (unnecessary-lambda) Lambda may not be necessary

Sat, 29 Sep 2018 16:19:15 +0300clean etherlab: pylint, C0411 # (wrong-import-order) standard import "import x" comes before "import y"
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 16:19:15 +0300] rev 2390
clean etherlab: pylint, C0411 # (wrong-import-order) standard import "import x" comes before "import y"

Sat, 29 Sep 2018 16:17:04 +0300clean etherlab: pylint, W0404 # reimported module
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 16:17:04 +0300] rev 2389
clean etherlab: pylint, W0404 # reimported module

Sat, 29 Sep 2018 15:41:20 +0300check_source.sh: add E301 check to the list of selected PEP8 errors
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 15:41:20 +0300] rev 2388
check_source.sh: add E301 check to the list of selected PEP8 errors

Sat, 29 Sep 2018 15:38:49 +0300clean etherlab: pep8, E301 expected 2 blank lines, found 1
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 15:38:49 +0300] rev 2387
clean etherlab: pep8, E301 expected 2 blank lines, found 1

Sat, 29 Sep 2018 15:35:22 +0300clean etherlab: pep8, W503 line break before binary operator
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 15:35:22 +0300] rev 2386
clean etherlab: pep8, W503 line break before binary operator

Sat, 29 Sep 2018 15:33:41 +0300clean etherlab: pep8, E266 too many leading '#' for block comment
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 15:33:41 +0300] rev 2385
clean etherlab: pep8, E266 too many leading '#' for block comment

Sat, 29 Sep 2018 15:31:50 +0300clean etherlab: pep8, E122 continuation line missing indentation or outdented
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 15:31:50 +0300] rev 2384
clean etherlab: pep8, E122 continuation line missing indentation or outdented

Sat, 29 Sep 2018 15:24:07 +0300clean etherlab: pep8, W191 indentation contains tabs
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 15:24:07 +0300] rev 2383
clean etherlab: pep8, W191 indentation contains tabs

Sat, 29 Sep 2018 15:21:06 +0300clean etherlab: pep8, E211 whitespace before '['
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 15:21:06 +0300] rev 2382
clean etherlab: pep8, E211 whitespace before '['

Sat, 29 Sep 2018 15:16:21 +0300clean etherlab: pep8, E129 visually indented line with same indent as next logical line
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 15:16:21 +0300] rev 2381
clean etherlab: pep8, E129 visually indented line with same indent as next logical line

Sat, 29 Sep 2018 15:03:17 +0300clean etherlab: pep8, E127 continuation line over-indented for visual indent
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 15:03:17 +0300] rev 2380
clean etherlab: pep8, E127 continuation line over-indented for visual indent

Sat, 29 Sep 2018 14:57:15 +0300clean etherlab: pep8, E129 visually indented line with same indent as next logical line
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 14:57:15 +0300] rev 2379
clean etherlab: pep8, E129 visually indented line with same indent as next logical line

Sat, 29 Sep 2018 13:44:02 +0300clean etherlab: pep8, W602 deprecated form of raising exception
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 13:44:02 +0300] rev 2378
clean etherlab: pep8, W602 deprecated form of raising exception

Sat, 29 Sep 2018 13:34:06 +0300clean etherlab: pep8, W601 .has_key() is deprecated, use 'in'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 13:34:06 +0300] rev 2377
clean etherlab: pep8, W601 .has_key() is deprecated, use 'in'

Sat, 29 Sep 2018 13:30:41 +0300clean etherlab: pep8, E731 do not assign a lambda expression, use a def
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 13:30:41 +0300] rev 2376
clean etherlab: pep8, E731 do not assign a lambda expression, use a def

Sat, 29 Sep 2018 13:29:20 +0300clean etherlab: pep8, E203 whitespace before ','
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Sat, 29 Sep 2018 13:29:20 +0300] rev 2375
clean etherlab: pep8, E203 whitespace before ','