Edouard Tisserant [Fri, 23 Feb 2018 11:16:25 +0100] rev 1957
GetEditedElementInstancesInfos now optimized as well. Forgotten because not using [R.I.P]LibraryResolver, but still XSLT compiling was hapenning on each call.
Edouard Tisserant [Tue, 20 Feb 2018 15:09:01 +0100] rev 1956
Another attempt to make BitBuket's version of pylint happy.
Edouard Tisserant [Tue, 20 Feb 2018 14:46:12 +0100] rev 1955
Attempt to make BitBuket's version of pep8 and pylint happy.
Edouard Tisserant [Tue, 20 Feb 2018 14:24:30 +0100] rev 1954
Removed dead slow code
Edouard Tisserant [Tue, 20 Feb 2018 14:16:51 +0100] rev 1953
PEP8 and PyLint conformance: whitespaces and stuff
Edouard Tisserant [Tue, 20 Feb 2018 11:24:40 +0100] rev 1952
Copy pasted, no time wasted !
Edouard Tisserant [Tue, 20 Feb 2018 11:24:10 +0100] rev 1951
GetVariableDictionary and GetPouInterfaceReturnType optimized with new VariableInfoCollector based on XSLTModelQuery. Moved corresponding definitions out of PLCControler.py.
Edouard Tisserant [Mon, 19 Feb 2018 15:46:50 +0100] rev 1950
GetPouInstanceTagName optimized with XSLTModelQuery.
Edouard Tisserant [Mon, 19 Feb 2018 15:15:36 +0100] rev 1949
Better writing of some xpath added in previous commits about XSLT optimization.
Edouard Tisserant [Mon, 19 Feb 2018 15:14:30 +0100] rev 1948
Moved some definitions away from controller class, and adaped references them through all code.
Edouard Tisserant [Mon, 19 Feb 2018 13:24:57 +0100] rev 1947
Hook Beremiz Launcher AppStart to AdvancedSplash OnPaint event in order to ensure image is beeing displayed before loading.
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 18 Feb 2018 22:29:35 +0100] rev 1946
Avoid endline escaping in multiline xpath epressions in xslt. ' ' Is apparently ignored but never know...
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 18 Feb 2018 21:51:33 +0100] rev 1945
Fixed earlier XSLT optimizations. Some/most results were missing.
Edouard Tisserant <edouard.tisserant@gmail.com> [Sun, 18 Feb 2018 21:30:48 +0100] rev 1944
Moved some code from PLCController.py to other modules. Added necessary imports.
Edouard Tisserant <edouard.tisserant@gmail.com> [Sat, 17 Feb 2018 23:58:47 +0100] rev 1943
GetPouVariables optimized with XSLTModelQuery
Edouard Tisserant <edouard.tisserant@gmail.com> [Sat, 17 Feb 2018 16:42:56 +0100] rev 1942
Added /plcopen/InstancesPathCollector.py, to move more model xslt querying code away from PLCController.py.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 16 Feb 2018 18:38:30 +0100] rev 1941
Fixed Exception dialog disapearing after a view second when exception occurs during app startup.
Problem was caused by splashscreen timeout, wx closing averything else if there is no more main frame.
Changes:
- no more timeout for splashscreen
- use wx.App OnInit method to give first operation to mainloop, object are then now created in mainloop
- main loop is then created _before_ showing splash screen
- no more wxyield or wx processevent tricks needed to display splash screen
- exception handler not blocking anymore on dialog (callafter)
- because of mainloop being there before everything, exit must be called explicitely if exception caught during startup -> exit parameter in handle_exception + try/except around startup calls
UNTESTED ON WINDOWS
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 16 Feb 2018 18:24:55 +0100] rev 1940
Moved XSLTModelQuery class to own module in plcopen package.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 16 Feb 2018 13:00:06 +0100] rev 1939
Added a class to speedup all XSLT queries. WIP, now only for instances_path.xslt / GetInstanceList()
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 16 Feb 2018 03:24:11 +0100] rev 1938
Stripped useless node creation in instances_path stylesheet.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 16 Feb 2018 02:29:10 +0100] rev 1937
This should really help GetInstanceList to perform better: resolver removed, no more deepcopy, no more useless xml serialization, no more node-set() calls.
Edouard Tisserant <edouard.tisserant@gmail.com> [Fri, 16 Feb 2018 01:48:48 +0100] rev 1936
YSLT auto indent trick is useless here, added yslt_noindent.yml2, regenerated XSLT files
Edouard Tisserant [Fri, 16 Feb 2018 01:38:34 +0100] rev 1935
Prevent compiling XSLT on each call of GetInstanceList. To be continued. More optimization needed here. 100x would be fine...
Edouard Tisserant [Wed, 14 Feb 2018 15:39:27 +0100] rev 1934
Changed meaning of -c commandline argument for Beremiz service : only gives DEFAULT wamp config.
If existing project already has a wamp config, it is taken instead.
Edouard Tisserant [Wed, 14 Feb 2018 14:50:10 +0100] rev 1933
Factorized duplicated code
Edouard Tisserant [Wed, 14 Feb 2018 14:48:40 +0100] rev 1932
Better variable naming, and small optimization.
Edouard Tisserant [Tue, 13 Feb 2018 14:01:20 +0100] rev 1931
Unclutter graphics package scope.
Moved some import statements from "graphics" package to "viewer" module.
It also avoid systematic import of everything in graphics when we only need one submodule.
Edouard Tisserant [Tue, 13 Feb 2018 13:57:53 +0100] rev 1930
Removed dead code
Edouard Tisserant [Mon, 12 Feb 2018 13:18:53 +0100] rev 1929
Fixed pyro timeout for runtime, was set too short and runtime was disconnecting when building PLC
Edouard Tisserant [Mon, 12 Feb 2018 11:34:07 +0100] rev 1928
Ask to stop PLC before transfer if it is running
Edouard Tisserant [Mon, 12 Feb 2018 11:32:48 +0100] rev 1927
Factorized some repeated refresh code into a method, to allow customisation.
Edouard Tisserant [Mon, 05 Feb 2018 16:23:51 +0100] rev 1926
Launcher : add a debug attribute, instead of BMZ_DBG, so that customization can use it.
Edouard Tisserant [Fri, 02 Feb 2018 16:25:32 +0100] rev 1925
Stripped old dead code.
Edouard Tisserant [Fri, 02 Feb 2018 16:24:56 +0100] rev 1924
More changes in Launcher. Modules to be loaded in the background are given in a list, and assigned as object attributes. Also splitted CreateUI into CloseSplashScreen and CreatueUI.
Edouard Tisserant [Fri, 02 Feb 2018 16:22:25 +0100] rev 1923
ClassImporter now accepts string, callable or class, for compatibility with some old extensions.
Edouard Tisserant [Fri, 02 Feb 2018 11:12:03 +0100] rev 1922
Launcher: ShowUI call moves from preStart to start. ShowUI() split into CreateUI() and ShowUI(). Start()'s arguments are passed to CreateUI()
This is meant to allow customizations to pass own pre-instanciated controller to UI at startup.
Edouard Tisserant [Fri, 02 Feb 2018 11:07:39 +0100] rev 1921
Launcher: allows customizations to specify what globals passed to extensions
Edouard Tisserant [Fri, 02 Feb 2018 11:06:41 +0100] rev 1920
Documentation
Edouard Tisserant [Thu, 01 Feb 2018 14:51:18 +0100] rev 1919
Another set of meaningless changes to satisfy PEP8 and PyLint.
Edouard Tisserant [Wed, 31 Jan 2018 15:25:30 +0100] rev 1918
PEP8 conformity for modbus. Most of it done by autopep8, plus some easy refactoring.
Edouard Tisserant [Wed, 31 Jan 2018 15:22:43 +0100] rev 1917
Add some class factory function to ease declaration of simple POU libraries in customizations (i.e. TC6 XML file only, no special C code generation)
Edouard Tisserant [Wed, 31 Jan 2018 15:20:42 +0100] rev 1916
Small pep8 conformity enforcement.
Edouard Tisserant [Wed, 31 Jan 2018 11:29:17 +0100] rev 1915
Better have globals passed to python extensions (-e) than locals.
Edouard Tisserant [Wed, 31 Jan 2018 11:21:08 +0100] rev 1914
launcher : move call to ShowSplashScreen and BackgroundInitialization to PreStart()
It doesn't change behaviour of launcher in beremiz, but may have some impact on some customizations.
Some customizations need to squeeze some bitmap folder init in between app creation and ShowSplashScreen
Edouard Tisserant [Tue, 30 Jan 2018 16:23:50 +0100] rev 1913
modbus extension code cleanup, from smarteh's patch
Edouard Tisserant [Tue, 30 Jan 2018 16:06:58 +0100] rev 1912
Merged Mario's modbus branch. Fixed line endings.
Mario de Sousa <msousa@fe.up.pt> [Fri, 24 Mar 2017 12:07:47 +0000] rev 1911
merge
Mario de Sousa <msousa@fe.up.pt> [Sun, 05 Mar 2017 00:38:25 +0000] rev 1910
Ignore bug report files.
Mario de Sousa <msousa@fe.up.pt> [Sun, 05 Mar 2017 00:37:54 +0000] rev 1909
Add support for Modbus (TCP and RTU) working as master & slave
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 29 Jan 2018 13:31:14 +0100] rev 1908
merge
Edouard Tisserant [Wed, 24 Jan 2018 16:12:49 +0100] rev 1907
fixed erro introduced 2 commits ago (-e) : tuples have no reverse() method
Edouard Tisserant [Wed, 24 Jan 2018 15:44:36 +0100] rev 1906
Trying to get better logging/display of exceptions at runtime's startup
Edouard Tisserant [Wed, 24 Jan 2018 14:48:49 +0100] rev 1905
Changed way to deal with extensions arguments (-e) so that path and filename are stored independently and accessible for extensions themselves.
Edouard Tisserant <edouard.tisserant@gmail.com> [Mon, 29 Jan 2018 12:56:49 +0100] rev 1904
Textviewer : moved call to Colourise in a better place, so that ST highlighting gets also updated when typing in some case, not only IL
Edouard Tisserant [Fri, 19 Jan 2018 15:12:23 +0100] rev 1903
Main runtime template C code : Added HAVE_RETAIN preprocessor definition for customized build to signal it provides IEC-61131 Retain memory handling function. Removed targets/Xenomai/plc_Xenomai_noretain.c, now useless.
Edouard Tisserant [Mon, 15 Jan 2018 14:43:53 +0100] rev 1902
Clarify licensing, and packaging of runtime only files :
- moved and split targets/typemapping.py into runtime/typemapping.py and runtime/loglevels.py
- added runtime_files.list pointing to files necessary for runtime, and referring to runtime license
Edouard Tisserant [Thu, 11 Jan 2018 15:41:20 +0100] rev 1901
Enforced check_source.sh pep8 and pylint rules.
Edouard Tisserant [Thu, 11 Jan 2018 15:39:58 +0100] rev 1900
runtime/WAMP: Fixed secret loading into configuration. Fixed secret commandline switch handling.
Edouard Tisserant [Thu, 11 Jan 2018 13:02:09 +0100] rev 1899
runtime/WAMP : was 'Added time print on session left.' from dporopat. Purpose is to log (dis/re)connection, to help debugging connection problem
Edouard Tisserant [Thu, 11 Jan 2018 12:48:49 +0100] rev 1898
runtime/Wamp : adapt to unicode being enforced in latest crossbar API. Updated some documentation, to explain why there is unused definitions like SubscribedEvents or DoOnJoin.
Edouard Tisserant [Wed, 10 Jan 2018 15:36:03 +0100] rev 1897
Extend python<->PLC global variable description "GlobalDesc" to support Initial value setting.
Rebased from dporopat change "add initial value to runtime.py file", which means :
- GlobalDesc is used by some customized beremiz python runtime
- Those runtimes need to know what is initial value of these special variables
Edouard Tisserant [Wed, 10 Jan 2018 14:35:04 +0100] rev 1896
update tests/wamp README file, based on changes from dporopat.
Edouard Tisserant [Wed, 10 Jan 2018 13:23:40 +0100] rev 1895
Fixed WAMP test (crossbar confile upgrade and use same ID on both PLC and IDE side)
Edouard Tisserant [Wed, 10 Jan 2018 13:21:42 +0100] rev 1894
Fixed changes from dporopat and agregorcic about WAMP CRA and config.
Edouard Tisserant [Tue, 09 Jan 2018 15:08:08 +0100] rev 1893
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
- added Challenge Response Authentication,
- use -s commandline switch to give the shared secret.
- WAMP configuration now either given as -c commandline switch
or taken as default wampconf.json in project files.
Edouard Tisserant [Tue, 09 Jan 2018 14:52:56 +0100] rev 1892
Set WAMP registration option so that reconnecting while earlier session still didn't timeout is possible (in case of connection lost, for example).
Edouard Tisserant [Tue, 09 Jan 2018 14:50:41 +0100] rev 1891
More canonical overload of ReconnectingClientFactory (according twisted doc)
Edouard Tisserant [Tue, 09 Jan 2018 14:42:23 +0100] rev 1890
non significant print syntax change. ready for py3.
Edouard Tisserant [Tue, 09 Jan 2018 14:38:45 +0100] rev 1889
whitespace cosmetic for pep8
Edouard Tisserant [Mon, 08 Jan 2018 11:09:02 +0100] rev 1888
Added arbitrary timeout on Pyro, to force it to free memory after disconnect.
Edouard Tisserant [Fri, 05 Jan 2018 15:39:02 +0100] rev 1887
Moved code from to Beremiz_service.py Server class Start method to Loop method to allow customisation by hot patching. Also renamed Stop method as _stop and use Restart instead of Stop from everywhere else to make it clear that _stop actually does restart...
Edouard Tisserant [Thu, 04 Jan 2018 16:00:35 +0100] rev 1886
enforce PEP8 in previous commit
dporopat <denis.poropat@smarteh.si> [Fri, 20 Jan 2017 13:22:31 +0100] rev 1885
replaced normal panel with scrolled panel under project properties
Surkov Sergey <surkovsv93@gmail.com> [Tue, 05 Dec 2017 12:38:04 +0300] rev 1884
fix missing root in empty search results panel
Surkov Sergey <surkovsv93@gmail.com> [Mon, 04 Dec 2017 19:35:31 +0300] rev 1883
add possibility to specify subprocess stdout encoding
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 04 Dec 2017 11:20:46 +0300] rev 1882
fix deadlock if method kill() is called after process is already finished
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 25 Oct 2017 13:50:26 +0300] rev 1881
fix pylint py3k conversion warning: "(no-absolute-import) import missing `from __future__ import absolute_import`"
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 23 Oct 2017 18:25:45 +0300] rev 1880
make CanFestival to be at the expected place in bitbucket pipelines container
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 19 Oct 2017 13:33:01 +0300] rev 1879
fix pylint error '(unsubscriptable-object) Value 'X' is unsubscriptable'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 19 Oct 2017 11:03:03 +0300] rev 1878
fix pylint warning '(bad-continuation) Wrong hanging indentation before block'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 19 Oct 2017 10:57:35 +0300] rev 1877
force all python source code to have LF line ending
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 18 Oct 2017 12:23:19 +0300] rev 1876
fix pylint warning '(expression-not-assigned) Expression "X" is assigned to nothing'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 17 Oct 2017 11:29:20 +0300] rev 1875
fix pylint warning '(redefine-in-handler) Redefining name 'X' from outer scope (line Y) in exception handler'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 17 Oct 2017 11:09:01 +0300] rev 1874
fix displaying result of update check during Beremiz startup
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 17 Oct 2017 09:51:43 +0300] rev 1873
fix pylint warning '(no-init) Class has no __init__ method'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 16 Oct 2017 17:20:31 +0300] rev 1872
fix pylint error "(undefined-variable) Undefined variable 'X'"
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 13 Oct 2017 13:17:42 +0300] rev 1871
fix problem happend when tests are running under python-coverage
$ python-coverage run ./tests/tools/test_application.py
Exception while connecting LOCAL://!
Traceback (most recent call last):
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1753, in _Connect
self._SetConnector(connectors.ConnectorFactory(uri, self)
File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1702, in _SetConnector
if connector is not None:
PyAssertionError: C++ assertion "m_window" failed at ../src/gtk/dcclient.cpp(2043) in DoGetSize(): GetSize() doesn't work without window
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 12 Oct 2017 16:18:05 +0300] rev 1870
fix pylint error '(too-many-function-args) Too many positional arguments for function call'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 11 Oct 2017 13:55:56 +0300] rev 1869
fix pylint error '(import-error) Unable to import X'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 11 Oct 2017 13:15:21 +0300] rev 1868
fix pylint error '(no-self-argument) Method should have "self" as first argument'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 11 Oct 2017 11:54:55 +0300] rev 1867
fix pylint error "(no-name-in-module) No name 'X' in module 'Y'"
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 11 Oct 2017 11:41:32 +0300] rev 1866
fix pylint error '(bad-except-order) Bad except clauses order (X is an ancestor class of Y)'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 11 Oct 2017 11:35:19 +0300] rev 1865
fix pylint warning "(no-value-for-parameter) No value for argument 'X' in function call"
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Wed, 11 Oct 2017 10:34:45 +0300] rev 1864
fix problems with unconnected input of InOut function variables and
enfoce InOut variables to be connected for functions and function blocks
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 10 Oct 2017 16:38:57 +0300] rev 1863
fix error for functions with VAR_IN_OUT
The problem was found by pylint '(used-before-assignment) Using variable "X" before assignment'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 10 Oct 2017 14:01:46 +0300] rev 1862
fix pylint warning '(unidiomatic-typecheck) Using type() instead of isinstance() for a typecheck'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 10 Oct 2017 13:49:13 +0300] rev 1861
fix pylint warning '(misplaced-bare-raise) The raise statement is not inside an except clause'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 10 Oct 2017 13:43:55 +0300] rev 1860
fix format string argument error found by pylint '(too-many-format-args) Too many arguments for format string'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 10 Oct 2017 13:33:46 +0300] rev 1859
fix pylint warning '(wrong-import-position) Import "import X" should be placed at the top of the module'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 10 Oct 2017 13:21:48 +0300] rev 1858
fix pylint warning '(import-self) Module import itself'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 10 Oct 2017 12:50:10 +0300] rev 1857
remove old code useless code found by pylint "(unnecessary-pass) Unnecessary pass statement"
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 10 Oct 2017 12:34:50 +0300] rev 1856
fix error found by pylint 'W0104(pointless-statement) Statement seems to have no effect'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 10 Oct 2017 12:21:46 +0300] rev 1855
fix pylint warning "(undefined-loop-variable) Using possibly undefined loop variable 'X'"
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 10 Oct 2017 11:58:30 +0300] rev 1854
fix pylint warning 'C0112(empty-docstring) Empty function docstring'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 09 Oct 2017 18:13:26 +0300] rev 1853
fix pylint warning "(relative-import) Relative import 'Y', should be 'X.Y'"
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 09 Oct 2017 16:04:39 +0300] rev 1852
fix pylint warning '(dangerous-default-value) Dangerous default value {} as argument'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 09 Oct 2017 12:30:14 +0300] rev 1851
fix pylint warning '(old-style-class) Old-style class defined.'
This warning is ignored for classes from PyJSLib, because library
overrides base object class.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 06 Oct 2017 17:52:34 +0300] rev 1850
fix pylint warning '(unused-import), Unused import connectors'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 05 Oct 2017 16:46:29 +0300] rev 1849
fix typos
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 05 Oct 2017 16:41:31 +0300] rev 1848
comment out unused code SFC_Step.RefreshBoundingBox()
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Thu, 05 Oct 2017 16:38:49 +0300] rev 1847
explicitly mark unused variables found by pylint with _ or dummy
pylint don't ignores unused variables with '_' in the name, even when
they are started with '_'. This bug is already fixed upstream, to fix
this in all versions of pylint custom dummy-variables-rgx is used
'_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 03 Oct 2017 16:31:31 +0300] rev 1846
remove unused variables found by pylint
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 03 Oct 2017 16:12:55 +0300] rev 1845
update .PHONE target in Makefile for mki18n.py
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 03 Oct 2017 16:08:40 +0300] rev 1844
make mki18n return 0 on success
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 03 Oct 2017 16:08:00 +0300] rev 1843
update list with files for internatialization, app.fil
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Tue, 03 Oct 2017 16:07:02 +0300] rev 1842
move README content to Makefile
It's not necessary to copy commands from README anymore. Just use
'make source_list', 'make template' or 'make locales'.
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 02 Oct 2017 13:19:06 +0300] rev 1841
fix pylint warning '(global-variable-not-assigned) Using global for 'X' but no assignment is done'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Mon, 02 Oct 2017 12:43:01 +0300] rev 1840
fix pylint error '(function-redefined) method already defined'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 29 Sep 2017 16:48:42 +0300] rev 1839
fix pylint warning '(unreachable) Unreachable code'
Andrey Skvortsov <andrej.skvortzov@gmail.com> [Fri, 29 Sep 2017 16:39:52 +0300] rev 1838
fix pylint warning (bad-indentation) Bad indentation. Found X spaces, expected Y