Thread: [Pydev-code] asynchonous output on console
Brought to you by:
fabioz
From: Jonah G. <jo...@ki...> - 2011-03-19 14:01:12
|
Hello, I am using PyDev and I would like to implement an improvement to the PyDev console related to the asynchonous behaviour. In particular I want to remove this limitation (from http://pydev.org/manual_adv_interactive_console.html) Limitation: Output is not asynchonous (stdout and stderr are only shown after a new command is sent to the console) A simplified example of what I want to work is: for i in range(10): print 'You can see this as it runs', i; time.sleep(0.5) I had a look through the bug lists and email lists and other than a couple of places re-stating that this is a limitation, I couldn't find record of why it was a limitation, or what could be done about it. Before I get too buried in this code, I thought I would ask what the issues are. Please feel free to point me at a bug if I have missed it. Thank you, Jonah |
From: Fabio Z. <fa...@gm...> - 2011-03-20 11:44:16
|
Hi Jonah, The problem lies in the actual design, which does not account for that. There are a number of things to be changed. Probably you want to start looking at org.python.pydev.dltk.console.ui.internal.ScriptConsoleDocumentListener.execCommand, which will create a local callback for onResponseReceived (this is the place that'll start a command and make it be execute in the python backend). Also, in the python backend you'll probably also want to change pydevconsole.InterpreterInterface.addExec which does the actual exec to create a Thread to gather the output while things are happening (note that the command itself must be executed on the main Thread). If you have more doubts, just ask (I'm not sure if you'll have issues in the document synchronization for input/output in this case as the command will be running, so, you should not accept another input while the current doesn't end). Cheers, Fabio On Sat, Mar 19, 2011 at 10:44 AM, Jonah Graham <jo...@ki...> wrote: > Hello, > > I am using PyDev and I would like to implement an improvement to the > PyDev console related to the asynchonous behaviour. > > In particular I want to remove this limitation (from > http://pydev.org/manual_adv_interactive_console.html) > > Limitation: Output is not asynchonous (stdout and stderr are only > shown after a new command is sent to the console) > > A simplified example of what I want to work is: > for i in range(10): print 'You can see this as it runs', i; time.sleep(0.5) > > I had a look through the bug lists and email lists and other than a > couple of places re-stating that this is a limitation, I couldn't find > record of why it was a limitation, or what could be done about it. > > Before I get too buried in this code, I thought I would ask what the > issues are. Please feel free to point me at a bug if I have missed it. > > Thank you, > Jonah > > ------------------------------------------------------------------------------ > Colocation vs. Managed Hosting > A question and answer guide to determining the best fit > for your organization - today and in the future. > http://p.sf.net/sfu/internap-sfd2d > _______________________________________________ > pydev-code mailing list > pyd...@li... > https://lists.sourceforge.net/lists/listinfo/pydev-code > |
From: Jonah G. <jo...@ki...> - 2011-03-21 14:37:53
|
Hi Fabio, Thank you for the feedback. I have had a look at the code you mentioned and I think it is not the best first project. I have some enhancements for the command completion within the interactive console that I will complete first. That should make me more familiar with the code so I can better implement the asynchronous features. BTW The features I am looking into adding are: * a preference to hide completions that start with _, unless the underscore is typed. This is so that private members are hidden by default. * add completions of file system path names so that commands like open(...) are easier to type. Thank you, Jonah On 20 March 2011 11:43, Fabio Zadrozny <fa...@gm...> wrote: > Hi Jonah, > > The problem lies in the actual design, which does not account for > that. There are a number of things to be changed. Probably you want to > start looking at > > org.python.pydev.dltk.console.ui.internal.ScriptConsoleDocumentListener.execCommand, > which will create a local callback for onResponseReceived (this is the > place that'll start a command and make it be execute in the python > backend). > > Also, in the python backend you'll probably also want to change > pydevconsole.InterpreterInterface.addExec which does the actual exec > to create a Thread to gather the output while things are happening > (note that the command itself must be executed on the main Thread). > > If you have more doubts, just ask (I'm not sure if you'll have issues > in the document synchronization for input/output in this case as the > command will be running, so, you should not accept another input while > the current doesn't end). > > Cheers, > > Fabio > > On Sat, Mar 19, 2011 at 10:44 AM, Jonah Graham <jo...@ki...> wrote: >> Hello, >> >> I am using PyDev and I would like to implement an improvement to the >> PyDev console related to the asynchonous behaviour. >> >> In particular I want to remove this limitation (from >> http://pydev.org/manual_adv_interactive_console.html) >> >> Limitation: Output is not asynchonous (stdout and stderr are only >> shown after a new command is sent to the console) >> >> A simplified example of what I want to work is: >> for i in range(10): print 'You can see this as it runs', i; time.sleep(0.5) >> >> I had a look through the bug lists and email lists and other than a >> couple of places re-stating that this is a limitation, I couldn't find >> record of why it was a limitation, or what could be done about it. >> >> Before I get too buried in this code, I thought I would ask what the >> issues are. Please feel free to point me at a bug if I have missed it. >> >> Thank you, >> Jonah >> >> ------------------------------------------------------------------------------ >> Colocation vs. Managed Hosting >> A question and answer guide to determining the best fit >> for your organization - today and in the future. >> http://p.sf.net/sfu/internap-sfd2d >> _______________________________________________ >> pydev-code mailing list >> pyd...@li... >> https://lists.sourceforge.net/lists/listinfo/pydev-code >> > |