Ok, release 1.0.6 is out. I hope you enjoy it. This one had only few features added, and centered more on bug-fixes.
There was one bug found that should be corrected by those that got version 1.0.6. It is a simple fix, but could save you some headache until the next release comes out:
Go to org.python.pydev/pysrc/importsTipper.py -- line 191 on:
doc = inspect.getdoc( obj )
and make
try:
doc = inspect.getdoc( obj )
except:
doc = ''
Yeah, didn't know that could throw an exception (I guess that's one of the difference between checked vs unchecked exceptions... Altough I surely don't miss declaring them in python -- even in java, I'm currently using almost only RuntimeExceptions, and only make checked Exceptions on a few selected cases).
This fix is because when trying to get some info on compiled modules, inspect.getdoc could go nuts ;-)
So, basically the target for 1.1 will be on making what pydev has so far as stable as possible, as well as adding support to Eclipse 3.2. So, probably in the next 1-2 months, the releases should be centered on bug-fixes and profiling (to make what we have faster...), and maybe some minor features.
I'll probably have to swell onto the grammar, as I believe that's one of the most used parts of pydev...
-- so, does anyone have any decent profiler to reccomend? I've already evaluated JProbe, which I thought did a good job (I've been able to do some nice enhancements based on its reports), but did not buy it after the evaluation period ended (I've gone to their website and was not even able to see how much it was... I've found a 'buy' link at the top of the page, but it didn't show info about JProbe, and then after about more 5 minutes browsing in their page to find how much it was my patience ended and I decided to go looking for something else).
Monday, April 24, 2006
Tuesday, April 18, 2006
Hierarchy view
I've been playing with a hierarchy view recently, and got some interesting results already... In python an interesting aspect is that you have multiple inheritance, so given some class you can have a Tree of superclasses as well as a Tree of subclasses.
So, instead of using a Tree View as JDT does, I decided to try something such as showing it similar to a class diagram. After a long search in the net for 2d drawing toolkits, I've decided for Piccolo. It's a nice library, and I've had only few problems using it. A point that favored it a lot over other choices is that it supports SWT natively, without the need for any other library, and besides, its abstractions are pretty easy to follow.
The results I got so far are in the image below...
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_s1PMjC6E88qKwW_QhozPuMDXKcKuCcM0SFV6MhXBMhl10lX4-wGTfdx3YP5_mktx3fP9rwk2pt01e2KhfOqrWxttsXVnC9zUpnvB8=s0-d)
Note that the graphic part is actually the 'easy' part... doing a search for references (to get the subclasses) is the difficult thing, but it seems to be shaping up nicely. I hope to release it (at least in a beta state) for the next release of pydev extensions.
So, instead of using a Tree View as JDT does, I decided to try something such as showing it similar to a class diagram. After a long search in the net for 2d drawing toolkits, I've decided for Piccolo. It's a nice library, and I've had only few problems using it. A point that favored it a lot over other choices is that it supports SWT natively, without the need for any other library, and besides, its abstractions are pretty easy to follow.
The results I got so far are in the image below...
Note that the graphic part is actually the 'easy' part... doing a search for references (to get the subclasses) is the difficult thing, but it seems to be shaping up nicely. I hope to release it (at least in a beta state) for the next release of pydev extensions.
Monday, April 17, 2006
Debugging the pydev debugger
Yeap, the debugger keeps appearing now and then... I guess it shows that many people use it ;-)
So, this time the updates are:
1. Not caching all frames: This is mostly because the debugger currently stores all the frames in a cache, but not as weak-refs (you can't make a weak-ref to a frame), and this could make some applications not work as expected. So, that's just been fixed: pydev keeps a weak-ref to the thread and adds the 'last' frame to that thread, so, if the thread dies, the frame should die too, and we will only have one strong reference to the executing frame (which can be used to find its parents when needed).
2. Synchronization: Yeap, the debugger NEEDS to handle multi-threads, so, this is something pretty important, as some halts were reported before... while I've not been able to reproduce those halts, I believe that the synchronization plus not keeping frames (and therefore all the locals) alive SHOULD solve some halting problems reported (it is always difficult to solve something you can't actually reproduce, especially in highly complex things as the debugger).
3. The F7 (step-return) now stops in the caller call for something (instead of stopping in the next line). This one is hard to explain, so, let' me give an example:
call2(call1())
Entering call1, and making a step-return, would make it miss call2 and stop on the next line of code. Now it stops in the last line of the call1 context, enabling you to keep on stepping into call2 (you could do that before, but you'd have to know you were in the last scope and make a step-in, so, sometimes you could miss that and it could be pretty annoying).
So, that's it for what's going on in the debugger... I'll leave other news for the next post ;-)
So, this time the updates are:
1. Not caching all frames: This is mostly because the debugger currently stores all the frames in a cache, but not as weak-refs (you can't make a weak-ref to a frame), and this could make some applications not work as expected. So, that's just been fixed: pydev keeps a weak-ref to the thread and adds the 'last' frame to that thread, so, if the thread dies, the frame should die too, and we will only have one strong reference to the executing frame (which can be used to find its parents when needed).
2. Synchronization: Yeap, the debugger NEEDS to handle multi-threads, so, this is something pretty important, as some halts were reported before... while I've not been able to reproduce those halts, I believe that the synchronization plus not keeping frames (and therefore all the locals) alive SHOULD solve some halting problems reported (it is always difficult to solve something you can't actually reproduce, especially in highly complex things as the debugger).
3. The F7 (step-return) now stops in the caller call for something (instead of stopping in the next line). This one is hard to explain, so, let' me give an example:
call2(call1())
Entering call1, and making a step-return, would make it miss call2 and stop on the next line of code. Now it stops in the last line of the call1 context, enabling you to keep on stepping into call2 (you could do that before, but you'd have to know you were in the last scope and make a step-in, so, sometimes you could miss that and it could be pretty annoying).
So, that's it for what's going on in the debugger... I'll leave other news for the next post ;-)
Thursday, April 06, 2006
Release 1.0.5
Ok, 1.0.5 was released yesterday... I've released it again in such a short time because the indentation engine had some minor quirks (and when it is something you use as much as indenting, even little things can become a major nuisance).
And besides, there were some other nice things such as being able to add vm arguments when running a module and a way to kill the python shells pydev has running for code-completion/refactoring purposes.
Most people probably will never use the 'kill shells' feature, but if you're doing compiled modules, you might be interested... When you're doing compiled modules, you'll not be able to link the library if it is currently being used from a python shell (as the code-completion shell), so, this was added so that you don't need to use the task manager (in windows) or to a shell in unix to kill those processes.
Pydev Extensions didn't have any major change -- I did only some minor changes to the time the pop-up pops for non-licensed versions -- removing it altogether or making it softer than what it is now beats the whole concept of having it anyway... Which as most should know is not annoying users, but raising money to keep pydev (open source and commercial) alive... So, if you don't like it, you can either license it (and see it vanish) or stay with the open source version -- both versions have been growing a lot lately ;-)
Fabio
And besides, there were some other nice things such as being able to add vm arguments when running a module and a way to kill the python shells pydev has running for code-completion/refactoring purposes.
Most people probably will never use the 'kill shells' feature, but if you're doing compiled modules, you might be interested... When you're doing compiled modules, you'll not be able to link the library if it is currently being used from a python shell (as the code-completion shell), so, this was added so that you don't need to use the task manager (in windows) or to a shell in unix to kill those processes.
Pydev Extensions didn't have any major change -- I did only some minor changes to the time the pop-up pops for non-licensed versions -- removing it altogether or making it softer than what it is now beats the whole concept of having it anyway... Which as most should know is not annoying users, but raising money to keep pydev (open source and commercial) alive... So, if you don't like it, you can either license it (and see it vanish) or stay with the open source version -- both versions have been growing a lot lately ;-)
Fabio
Monday, April 03, 2006
Pydev Release 1.0.4
Just released!
The 'major problem I had in this release is that the cvs at sourceforge is down (for some days already), so, I had to set up the code in a local cvs, and will sync it as soon as they the service is up again. Unfortunatelly, they have no dates or estimates on when will it be fixed (and so, the code will not be available until then).
On the good side, this release had some major features for both versions.
The major features added are:
- In Pydev Extensions, you can have a shell binded to the editor (and I dedicated my 1st screencast to it: http://www.fabioz.com/pydev/manual_screencasts_presentation1.html)
- In the Open source version, there is the new indentation engine and the possibility of scripting pydev with jython (I've created an article for it at: http://www.fabioz.com/pydev/manual_articles_scripting.html)
So, I'm expecting feedback on the scripting engine. Also, I intend on doing some place so that anyone can contribute its own scripts to pydev -- currently, pydev-code is the place to go for that, and for help on how to create your own scripts.
Hope you enjoy,
Fabio
p.s. I've also changed some things in the layout of the blog -- mainly, the relevant links where put in the start of the page, as well as the RSS link (which was something that popped up once in a while).
The 'major problem I had in this release is that the cvs at sourceforge is down (for some days already), so, I had to set up the code in a local cvs, and will sync it as soon as they the service is up again. Unfortunatelly, they have no dates or estimates on when will it be fixed (and so, the code will not be available until then).
On the good side, this release had some major features for both versions.
The major features added are:
- In Pydev Extensions, you can have a shell binded to the editor (and I dedicated my 1st screencast to it: http://www.fabioz.com/pydev/manual_screencasts_presentation1.html)
- In the Open source version, there is the new indentation engine and the possibility of scripting pydev with jython (I've created an article for it at: http://www.fabioz.com/pydev/manual_articles_scripting.html)
So, I'm expecting feedback on the scripting engine. Also, I intend on doing some place so that anyone can contribute its own scripts to pydev -- currently, pydev-code is the place to go for that, and for help on how to create your own scripts.
Hope you enjoy,
Fabio
p.s. I've also changed some things in the layout of the blog -- mainly, the relevant links where put in the start of the page, as well as the RSS link (which was something that popped up once in a while).