Tuesday, August 26, 2014

PyDev 3.7.0, PyDev/PyCharm Debugger merge, Crowdfunding

PyDev 3.7.0 was just released.

There are some interesting things to talk about in this release...

The first is that the PyDev debugger was merged with the fork which was used in PyCharm. The final code for the debugger (and the interactive console) now lives at: https://github.com/fabioz/PyDev.Debugger. This effort was backed-up by Intellij, and from now on, work on the debugger from either front (PyDev or PyCharm) should benefit both -- pull requests are also very welcome :)

With this merge, PyDev users will gain GEvent debugging and breakpoints at Django templates (but note that the breakpoints can only be added through the LiClipse HTML/Django Templates editor), and in the interactive console front (which was also part of this merge), the asynchronous output and console interrupt are new.

This release also changed the default UI for the PyDev editor (and for LiClipse editors too), so, the minimap (which had a bunch of enhancements) is now turned on by default and the scrollbars are hidden by default -- those that prefer the old behavior must change the settings on the minimap preferences to match the old style.

Also noteworthy is that the code-completion for all letter chars is turned on by default (again, users that want the old behavior have to uncheck that setting from the code completion preferences page), and this release also has a bunch of bugfixes.

Now, I haven't talked about the crowdfunding for keeping the support on PyDev and a new profiler UI (https://sw-brainwy.rhcloud.com/support/pydev-2014) after it finished... well, it didn't reach its full goal -- in practice that means the profiler UI will still be done and users which supported it will receive a license to use it, but it won't be open source... all in all, it wasn't that bad either, it got halfway through its target and many people seemed to like the idea -- in the end I'll know if keeping it on even if not having the full target reached was a good idea or not only after it's commercially available (as the idea is that new licenses will be what will cover for its development expenses and will keep it going afterwards).

A note for profiler contributors is that I still haven't released an early-release version, but I'm working on it :)

As for PyDev, the outcome of the funding also means I have fewer resources to support it than I'd like, but given that LiClipse (http://brainwy.github.io/liclipse/) provides a share of its earnings to support PyDev and latecomers can still contribute through http://pydev.org/, I still hope that I won't need to lower its support (which'd mean taking on other projects in the time I currently have for PyDev), and I think it'll still be possible to do the things outlined in the crowdfunding regarding it.




Thursday, July 10, 2014

New Python profiler UI

So, I wanted to show what I have so far on the profiler front.

Below is its main UI (on a dark palette -- kudos to Qt which makes this pretty easy to do):



The tree shows the attached processes and the CPU tab shows data for the CPU from the process which is being analyzed.

Based on that, it's possible to select a timeframe where stack info is shown (in this case the profiler is analyzing itself). Clicking on a stack opens an internal editor (which can only view the file so far) at the proper place (but the idea is that in the future it'll open the editor in your preferred editor/IDE).

It's possible to start/stop the sampling and the stacks can be grouped either by line or by methods.

Another thing (which is also still incomplete) is provide a view which will show a profile session view graphically... Below is a snapshot of the work on that front so far.



The work is still very much in the beginning, but the sampling view should be usable already -- the plan is to release  the first builds some days after the crowdfunding finishes... thank you to all who are helping to make this possible: https://sw-brainwy.rhcloud.com/support/pydev-2014

Tuesday, June 24, 2014

PyDev 3.6.0 released

PyDev 3.6.0 was just released.

The really major change in this release is that PyDev updated its internal Jython to the latest version, which also allowed PyDev to update its support to the latest pep8.py.

Also, following this, autopep8.py was also integrated (although it seems there's still an issue dealing with non-ascii files -- see: https://sw-brainwy.rhcloud.com/tracker/PyDev/402 for a workaround). Note that unlike pep8.py, autopep8.py doesn't really use the internal Jython (it runs based on the default configured Python interpreter). This is mostly because Jython was too slow when running it (annoyingly so in this use-case), so, there's only the option of running autopep8.py externally.

Also, some 'nice to have' features were added:

Shift+F9 will run the current editor directly in debug mode -- so, no need to Alt+R+G, 1-4 for that anymore :)

Also, when selecting a unit-test to run (Ctrl+F9), if Shift is pressed when the test(s) to run is selected, it'll also run in debug mode (previously it was almost mandatory to create a regular run selecting the tests, killing it and pressing F11 just to re-run the last test in debug mode).

Besides this, there were some bug-fixes (and for those using LiClipse: http://brainwy.github.io/liclipse, it's already updated with the latest PyDev version -- and now it supports launching for other languages and Julia support was added).

Enjoy!

p.s.:  Thank you for all that are supporting the PyDev crowdfunding: https://sw-brainwy.rhcloud.com/support/pydev-2014/

Tuesday, May 20, 2014

PyDev 3.5.0 released

PyDev 3.5.0 is now available...

The main feature in this release relates to improvements to work with py.test (note: those that want to use it have to enable it in the PyUnit preferences -- besides having to install it properly in the used Python installation).

Mainly, the integration was changed so that the py.test xdist plugin can be properly used and module/session scoped fixtures should also work properly. The PyUnit UI in the preferences was also changed to show the preferences related to py.test when it's shown.

Still, there are other improvements: the Model.objects from django 1.7 is now available on code-completion again (as the static analyzer couldn't cope with it there are workarounds in the code), private attributes (those starting with '__') are now shown when hovering over it on the debugger and there's a bunch of other bug-fixes and minor features available (see http://pydev.org for details).

Also, for those that don't know, there's an ongoing crowdfunding to keep PyDev support going on: http://tiny.cc/pydev-2014...

Thursday, May 15, 2014

Crowdfunding for PyDev and new Python profiler UI (for any IDE)

Ok, I just started a crowdfunding project (at http://tiny.cc/pydev-2014) for the continued development of PyDev and the creation of a new profiler UI.

This is actually the 2nd crowdfunding for PyDev after Appcelerator stopped supporting it. Last year a similar crowdfunding allowed me to keep on developing PyDev until now, as well as creating a new PyDev/Eclipse bundle called LiClipse, which added lightweight support for several languages as well a dark theme inside Eclipse.


So, now I'm reaching out again for the PyDev community to allow me to keep on developing PyDev and shaping the Python landscape.


This year when planning what to do and filtering on existing requests, one of the things that stood up was providing proper support for profiling in PyDev.


After tinkering with the idea a bit and trying to find out how I think would be the best way for this workflow, I've settled on creating a separate tool and then integrating it properly in PyDev... not only this approach will allow Pythonistas that don't use PyDev to have a nice profiling companion, but I think it'll also yield better results than doing it all inside of Eclipse -- besides, I'll be able to do it all in Python!


So, this is the main feature I've planned for this year, but there are others too which are more focused on PyDev itself, such as having preferences per-project, migrating to a new workspace, validating docstrings for its type on a test run, external pep8 linter, vertical lines for indentation, attach debugger to running process -- besides the usual bugfixing and support.


So, please help in funding (and sharing) at http://tiny.cc/pydev-2014 to help in making the new profiler UI a reality and to keep PyDev going strong!