Day 9 of GSoC
With the help of my mentor, John the direction of my project is more concrete now.
Phase - 1
Spyder is a scientific IDE which I have used in some of my other projects. Although it does have a core-maintained
pylint, the plethora of bears provided by
coala would be a welcome addition. To achieve this, the following needs to be done:
First off, to introduce the difference between plugins in spyder from the ones in text editors like vim and sublime-text,
plugins in the latter category are external packages that interface with the editor through a certain set of APIs.
In Spyder, plugins are first-class modules that can do almost anything that the built-in ones
(Editor, Console, Static Code Analysis, Profiler, etc) can, since the built-in ones are actually structured as plugins
themselves. This also leads to a drawback - in spyder the plugins can’t be reloaded the same way without actually
terminating the python instance. This isn’t good news for actually testing the plugin. To resolve this issue, plugins are
structured as standalone GUI widgets which can be launched, modified and tested separately. . So, depending on what
we want to test, we can usually just launch the plugin without the whole Spyder mainwindow (which can be done almost
instantly). Only when we actually need to test the interaction with the Spyder GUI, do we need to actually launch spyder
entirely. Also another resolution to this is by
The file-hierarchy of the
coala-spyder plugin is structured as:
coalagui.py will contain the independent widget which can be tested as a stand-alone entity.
contain configuration options and
plugin.py interfaces our widget with the spyder ide.
The way that
coala can interface with the plugin is directly through python as a module using
coalib.coala, although for a more immediate response we
can use the work of another two other contributors to
coala, Boxuan Li and
Ce Gao. The usefulness lies in invoking
coala on a specific file instead of the entire
project. This also means faster and useful results delivered to the user.
More on details of testing and continuous integration in future posts, but briefly, we can use
to deal with it.
Jupyter lab is something new to me, although I have used jupyter
notebooks extensively in projects. It also paves the way for
coala to be integrated in another scientific environment.
In this case, the plugin itself will be written using
python. The former of which I have not tried
before but I am keen on using. I’ll leave this section short as there’s a lot I need to learn about before diving into
specifics which I plan to do partially before and during phase-1.
I plan on leaving this phase for maintenance or things left out in the previous two phases (if nothing, maybe including more features) or other work that can be done on other text editors. More on this later too.