[qtconsole] %hist doesn't show anything in qtconsole #617

Closed
reckoner opened this Issue Jul 21, 2011 · 21 comments

Comments

Projects
None yet
5 participants
@reckoner

I have built rc2 on Windows XP and while the qtconsole works fine for the most part, %hist does not show any history in the qtconsole.

@takluyver

This comment has been minimized.

Show comment
Hide comment
@takluyver

takluyver Jul 21, 2011

Member

A bare %hist will show history from the start of the session, so be sure you've entered a few commands before trying it.

Does it produce any output after you type %hist? Any error messages? Do you get the next prompt? If you start ipython qtconsole (or whatever the command is in Windows) from a command prompt, do you get any error messages there? Does %hist still work in terminal IPython?

Member

takluyver commented Jul 21, 2011

A bare %hist will show history from the start of the session, so be sure you've entered a few commands before trying it.

Does it produce any output after you type %hist? Any error messages? Do you get the next prompt? If you start ipython qtconsole (or whatever the command is in Windows) from a command prompt, do you get any error messages there? Does %hist still work in terminal IPython?

@reckoner

This comment has been minimized.

Show comment
Hide comment
@reckoner

reckoner Jul 21, 2011

Yes. I type in a few command to see if they appear in the %hist. The
terminal version shows %hist just fine.

If you start qtconsole with the following in a plain windows cmd console:

C:\Python26\python.exe c:\Python26\Scripts\ipython-qtconsole-script.pyw
--pylab

Note that I'm using python.exe not pythonw.exe, I get the following in
the cmd terminal when I try %hist in the qtconsole:

C:\Python26\python.exe c:\Python26\Scripts\ipython-qtconsole-script.pyw --pylab
--IPythonWidget.font_size=13 --no-confirm-exit --autocall=2
--no-gui-completion

[IPKernelApp] To connect another client to this kernel, use:
[IPKernelApp] --existing --shell=1158 --iopub=1159 --stdin=1160 --hb=1161
Warning: received unknown payload of type
u'IPython.zmq.zmqshell.ZMQInteractiveS
hell.auto_rewrite_input'
arange 10

Notice the "Warning: received unknown payload of type
u'IPython.zmq.zmqshell.ZMQInteractiveS
hell.auto_rewrite_input"

Thus, %hist is reporting history in the cmd terminal, not in the qtconsole.

I hope that helps.

On 7/21/2011 7:35 AM, takluyver wrote:

A bare %hist will show history from the start of the session, so be sure you've entered a few commands before trying it.

Does it produce any output after you type %hist? Any error messages? Do you get the next prompt? If you start ipython qtconsole (or whatever the command is in Windows) from a command prompt, do you get any error messages there? Does %hist still work in terminal IPython?

Yes. I type in a few command to see if they appear in the %hist. The
terminal version shows %hist just fine.

If you start qtconsole with the following in a plain windows cmd console:

C:\Python26\python.exe c:\Python26\Scripts\ipython-qtconsole-script.pyw
--pylab

Note that I'm using python.exe not pythonw.exe, I get the following in
the cmd terminal when I try %hist in the qtconsole:

C:\Python26\python.exe c:\Python26\Scripts\ipython-qtconsole-script.pyw --pylab
--IPythonWidget.font_size=13 --no-confirm-exit --autocall=2
--no-gui-completion

[IPKernelApp] To connect another client to this kernel, use:
[IPKernelApp] --existing --shell=1158 --iopub=1159 --stdin=1160 --hb=1161
Warning: received unknown payload of type
u'IPython.zmq.zmqshell.ZMQInteractiveS
hell.auto_rewrite_input'
arange 10

Notice the "Warning: received unknown payload of type
u'IPython.zmq.zmqshell.ZMQInteractiveS
hell.auto_rewrite_input"

Thus, %hist is reporting history in the cmd terminal, not in the qtconsole.

I hope that helps.

On 7/21/2011 7:35 AM, takluyver wrote:

A bare %hist will show history from the start of the session, so be sure you've entered a few commands before trying it.

Does it produce any output after you type %hist? Any error messages? Do you get the next prompt? If you start ipython qtconsole (or whatever the command is in Windows) from a command prompt, do you get any error messages there? Does %hist still work in terminal IPython?

@takluyver

This comment has been minimized.

Show comment
Hide comment
@takluyver

takluyver Jul 21, 2011

Member

On 21 July 2011 16:32, reckoner <
reply@reply.github.com>wrote:

Thus, %hist is reporting history in the cmd terminal, not in the qtconsole.

The warning is to do with something else, and it's harmless. But you're
right, it does look like the output is appearing at the terminal rather than
being forwarded.

@minrk: The %hist magic currently uses print(..., file=IPython.utils.io.stdout), and this gets redirected properly on Linux,
but seemingly not on Windows. Should it be printing to another object? Do we
just print to sys.stdout now?

Member

takluyver commented Jul 21, 2011

On 21 July 2011 16:32, reckoner <
reply@reply.github.com>wrote:

Thus, %hist is reporting history in the cmd terminal, not in the qtconsole.

The warning is to do with something else, and it's harmless. But you're
right, it does look like the output is appearing at the terminal rather than
being forwarded.

@minrk: The %hist magic currently uses print(..., file=IPython.utils.io.stdout), and this gets redirected properly on Linux,
but seemingly not on Windows. Should it be printing to another object? Do we
just print to sys.stdout now?

@minrk

This comment has been minimized.

Show comment
Hide comment
@minrk

minrk Jul 21, 2011

Member

utils.io.stout should be hooked up to sys.stdout (in shell.init_io). it does a different thing on Windows for pyreadline, but that should only be done with the terminal frontend, rather that always.

-MinRK

On Jul 21, 2011, at 8:52, takluyverreply@reply.github.com wrote:

On 21 July 2011 16:32, reckoner <
reply@reply.github.com>wrote:

Thus, %hist is reporting history in the cmd terminal, not in the qtconsole.

The warning is to do with something else, and it's harmless. But you're
right, it does look like the output is appearing at the terminal rather than
being forwarded.

@minrk: The %hist magic currently uses print(..., file=IPython.utils.io.stdout), and this gets redirected properly on Linux,
but seemingly not on Windows. Should it be printing to another object? Do we
just print to sys.stdout now?

Reply to this email directly or view it on GitHub:
#617 (comment)

Member

minrk commented Jul 21, 2011

utils.io.stout should be hooked up to sys.stdout (in shell.init_io). it does a different thing on Windows for pyreadline, but that should only be done with the terminal frontend, rather that always.

-MinRK

On Jul 21, 2011, at 8:52, takluyverreply@reply.github.com wrote:

On 21 July 2011 16:32, reckoner <
reply@reply.github.com>wrote:

Thus, %hist is reporting history in the cmd terminal, not in the qtconsole.

The warning is to do with something else, and it's harmless. But you're
right, it does look like the output is appearing at the terminal rather than
being forwarded.

@minrk: The %hist magic currently uses print(..., file=IPython.utils.io.stdout), and this gets redirected properly on Linux,
but seemingly not on Windows. Should it be printing to another object? Do we
just print to sys.stdout now?

Reply to this email directly or view it on GitHub:
#617 (comment)

@takluyver

This comment has been minimized.

Show comment
Hide comment
@takluyver

takluyver Jul 21, 2011

Member

OK, looking at the code, it looks like it's happening an all cases on Windows where pyreadline is in use. I think the ZMQshell should have readline_use default to False (which will also speed up launching it a bit). Pull request coming up.

Member

takluyver commented Jul 21, 2011

OK, looking at the code, it looks like it's happening an all cases on Windows where pyreadline is in use. I think the ZMQshell should have readline_use default to False (which will also speed up launching it a bit). Pull request coming up.

@takluyver

This comment has been minimized.

Show comment
Hide comment
@takluyver

takluyver Jul 21, 2011

Member

@reckoner: Can you try my i617 branch from here: https://github.com/takluyver/ipython/tree/i617

It may raise further problems, but I've just tested it here, and it doesn't obviously go wrong.

Member

takluyver commented Jul 21, 2011

@reckoner: Can you try my i617 branch from here: https://github.com/takluyver/ipython/tree/i617

It may raise further problems, but I've just tested it here, and it doesn't obviously go wrong.

@reckoner

This comment has been minimized.

Show comment
Hide comment
@reckoner

reckoner Jul 21, 2011

OK. I'll try. What're the relevent git commands to use?

On 7/21/2011 10:32 AM, takluyver wrote:

@reckoner: Can you try my i617 branch from here: https://github.com/takluyver/ipython/tree/i617

It may raise further problems, but I've just tested it here, and it doesn't obviously go wrong.

OK. I'll try. What're the relevent git commands to use?

On 7/21/2011 10:32 AM, takluyver wrote:

@reckoner: Can you try my i617 branch from here: https://github.com/takluyver/ipython/tree/i617

It may raise further problems, but I've just tested it here, and it doesn't obviously go wrong.

@takluyver

This comment has been minimized.

Show comment
Hide comment
@takluyver

takluyver Jul 21, 2011

Member
git remote add takluyver git://github.com/takluyver/ipython.git
git fetch takluyver
git checkout i617

That should do it. I install in a virtualenv for testing, but you can run the source however you want, so long as it's definitely importing the correct modules.

Member

takluyver commented Jul 21, 2011

git remote add takluyver git://github.com/takluyver/ipython.git
git fetch takluyver
git checkout i617

That should do it. I install in a virtualenv for testing, but you can run the source however you want, so long as it's definitely importing the correct modules.

@reckoner

This comment has been minimized.

Show comment
Hide comment
@reckoner

reckoner Jul 21, 2011

Works! Except the history items are not numbered.

Also, how do I undo the git commands below to return to what I
previously had.

Thanks!

On 7/21/2011 10:58 AM, takluyver wrote:

git remote add takluyver git://github.com/takluyver/ipython.git
git fetch takluyver
git checkout i617

That should do it. I install in a virtualenv for testing, but you can run the source however you want, so long as it's definitely importing the correct modules.

Works! Except the history items are not numbered.

Also, how do I undo the git commands below to return to what I
previously had.

Thanks!

On 7/21/2011 10:58 AM, takluyver wrote:

git remote add takluyver git://github.com/takluyver/ipython.git
git fetch takluyver
git checkout i617

That should do it. I install in a virtualenv for testing, but you can run the source however you want, so long as it's definitely importing the correct modules.

@takluyver

This comment has been minimized.

Show comment
Hide comment
@takluyver

takluyver Jul 21, 2011

Member

OK, great. -g doesn't automatically number the items, although it probably should. I'll tweak that.

Assuming you're working from a clone of the main codebase, git checkout master should take you back to the main branch.

Member

takluyver commented Jul 21, 2011

OK, great. -g doesn't automatically number the items, although it probably should. I'll tweak that.

Assuming you're working from a clone of the main codebase, git checkout master should take you back to the main branch.

@reckoner

This comment has been minimized.

Show comment
Hide comment
@reckoner

reckoner Jul 21, 2011

great! If you get the numbering going, without which I don't see how you
can use %rep or %macro, I'll test again for you on windows.

On 7/21/2011 11:25 AM, takluyver wrote:

OK, great. -g doesn't automatically number the items, although it probably should. I'll tweak that.

Assuming you're working from a clone of the main codebase, git checkout master should take you back to the main branch.

great! If you get the numbering going, without which I don't see how you
can use %rep or %macro, I'll test again for you on windows.

On 7/21/2011 11:25 AM, takluyver wrote:

OK, great. -g doesn't automatically number the items, although it probably should. I'll tweak that.

Assuming you're working from a clone of the main codebase, git checkout master should take you back to the main branch.

@takluyver

This comment has been minimized.

Show comment
Hide comment
@takluyver

takluyver Jul 21, 2011

Member

The numbering would already happen if you use %hist -ng pattern (n for numbers). I've updated my i617 branch so that -g implies -n as well. See also Pull request #618.

Member

takluyver commented Jul 21, 2011

The numbering would already happen if you use %hist -ng pattern (n for numbers). I've updated my i617 branch so that -g implies -n as well. See also Pull request #618.

@fperez

This comment has been minimized.

Show comment
Hide comment
@fperez

fperez Jul 21, 2011

Member

On Thu, Jul 21, 2011 at 9:07 AM, reckoner
reply@reply.github.com
wrote:

I have built rc2 on Windows XP and while the qtconsole works fine for the most part, %hist does not show any history in the qtconsole.

Mmh, can anyone confirm this, and whether the problem is
windows-specific? On linux %hist works fine in the Qt console...

Member

fperez commented Jul 21, 2011

On Thu, Jul 21, 2011 at 9:07 AM, reckoner
reply@reply.github.com
wrote:

I have built rc2 on Windows XP and while the qtconsole works fine for the most part, %hist does not show any history in the qtconsole.

Mmh, can anyone confirm this, and whether the problem is
windows-specific? On linux %hist works fine in the Qt console...

@takluyver

This comment has been minimized.

Show comment
Hide comment
@takluyver

takluyver Jul 21, 2011

Member

@fperez: If you're replying by email, do click through and read the intervening discussion. We've tracked it down to a problem related to pyreadline, and I've got a fix that apparently works (PR #618).

Member

takluyver commented Jul 21, 2011

@fperez: If you're replying by email, do click through and read the intervening discussion. We've tracked it down to a problem related to pyreadline, and I've got a fix that apparently works (PR #618).

@fperez

This comment has been minimized.

Show comment
Hide comment
@fperez

fperez Jul 21, 2011

Member

Oops, sorry :) I forgot gh only sends the first email...

Member

fperez commented Jul 21, 2011

Oops, sorry :) I forgot gh only sends the first email...

@takluyver

This comment has been minimized.

Show comment
Hide comment
@takluyver

takluyver Jul 22, 2011

Member

Closed by ff5e7cd.

Member

takluyver commented Jul 22, 2011

Closed by ff5e7cd.

@takluyver takluyver closed this Jul 22, 2011

@fperez fperez reopened this Jul 26, 2011

@fperez

This comment has been minimized.

Show comment
Hide comment
@fperez

fperez Jul 26, 2011

Member

Hi folks, I'm afraid I have to reopen this, because I'm effectively going to revert b641eb6. Unfortunately it caused %run to break in the Qt console with this error:

In [1]: run ~/scratch/error.py
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/home/fperez/ipython/ipython/tools/ in ()
----> 1 get_ipython().magic(u"run ~/scratch/error.py")

/home/fperez/usr/lib/python2.6/site-packages/IPython/core/interactiveshell.py in magic(self, arg_s, next_input)
   1892                 self._magic_locals = sys._getframe(1).f_locals
   1893             with self.builtin_trap:
-> 1894                 result = fn(magic_args)
   1895             # Ensure we're not keeping object references around:
   1896             self._magic_locals = {}

/home/fperez/usr/lib/python2.6/site-packages/IPython/core/magic.pyc in magic_run(self, parameter_s, runner, file_finder)
   1634         try:
   1635             stats = None
-> 1636             with self.readline_no_record:
   1637                 if opts.has_key('p'):
   1638                     stats = self.magic_prun('',0,opts,arg_lst,prog_ns)

AttributeError: 'ZMQInteractiveShell' object has no attribute 'readline_no_record'

but even if I try to make an 'empty' context manager to play the role of readliine_no_record, then syntax highlighting is broken. I simply don't have time right now to go into deep debugging right prior to a release.

This is why, even the most innocent-looking changes, should never be made between an RC and a final release. It was by pure accident that I caught the problem, and since we don't have any way to automatically test the magics from the Qt console, we'd only have seen this after an embarrassing public release.

Member

fperez commented Jul 26, 2011

Hi folks, I'm afraid I have to reopen this, because I'm effectively going to revert b641eb6. Unfortunately it caused %run to break in the Qt console with this error:

In [1]: run ~/scratch/error.py
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/home/fperez/ipython/ipython/tools/ in ()
----> 1 get_ipython().magic(u"run ~/scratch/error.py")

/home/fperez/usr/lib/python2.6/site-packages/IPython/core/interactiveshell.py in magic(self, arg_s, next_input)
   1892                 self._magic_locals = sys._getframe(1).f_locals
   1893             with self.builtin_trap:
-> 1894                 result = fn(magic_args)
   1895             # Ensure we're not keeping object references around:
   1896             self._magic_locals = {}

/home/fperez/usr/lib/python2.6/site-packages/IPython/core/magic.pyc in magic_run(self, parameter_s, runner, file_finder)
   1634         try:
   1635             stats = None
-> 1636             with self.readline_no_record:
   1637                 if opts.has_key('p'):
   1638                     stats = self.magic_prun('',0,opts,arg_lst,prog_ns)

AttributeError: 'ZMQInteractiveShell' object has no attribute 'readline_no_record'

but even if I try to make an 'empty' context manager to play the role of readliine_no_record, then syntax highlighting is broken. I simply don't have time right now to go into deep debugging right prior to a release.

This is why, even the most innocent-looking changes, should never be made between an RC and a final release. It was by pure accident that I caught the problem, and since we don't have any way to automatically test the magics from the Qt console, we'd only have seen this after an embarrassing public release.

@fperez fperez closed this in fe44943 Jul 26, 2011

@takluyver

This comment has been minimized.

Show comment
Hide comment
@takluyver

takluyver Jul 26, 2011

Member

Ouch, well spotted. Your commit message seems to have automatically closed it again, so I'll re-reopen it.

Member

takluyver commented Jul 26, 2011

Ouch, well spotted. Your commit message seems to have automatically closed it again, so I'll re-reopen it.

@takluyver takluyver reopened this Jul 26, 2011

@epatters epatters closed this in 14ae4c0 Sep 14, 2011

@fperez

This comment has been minimized.

Show comment
Hide comment
@fperez

fperez Sep 14, 2011

Member

OK, it looks like we finally got this one. If anyone stlll sees problems on win32 please let us know and reopen, but now it looks like we have a good solution.

Member

fperez commented Sep 14, 2011

OK, it looks like we finally got this one. If anyone stlll sees problems on win32 please let us know and reopen, but now it looks like we have a good solution.

@reckoner

This comment has been minimized.

Show comment
Hide comment
@reckoner

reckoner Sep 14, 2011

I just tested it. It works great! This was a big feature IMHO. Glad to
have it back.

Great work!

On 9/14/2011 12:37 PM, Fernando Perez wrote:

OK, it looks like we finally got this one. If anyone stlll sees problems on win32 please let us know and reopen, but now it looks like we have a good solution.

I just tested it. It works great! This was a big feature IMHO. Glad to
have it back.

Great work!

On 9/14/2011 12:37 PM, Fernando Perez wrote:

OK, it looks like we finally got this one. If anyone stlll sees problems on win32 please let us know and reopen, but now it looks like we have a good solution.

@fperez

This comment has been minimized.

Show comment
Hide comment
@fperez

fperez Sep 14, 2011

Member

Glad to hear that, thanks for confirming the fix worked indeed.

Member

fperez commented Sep 14, 2011

Glad to hear that, thanks for confirming the fix worked indeed.

@takluyver takluyver referenced this issue Jul 22, 2011

Merged

I617 #618

mattvonrocketstein pushed a commit to mattvonrocketstein/ipython that referenced this issue Nov 3, 2014

Revert commit that fixed gh-617 as it broke %run in the Qt console.
Unfortunately b641eb6 caused %run to
stop working in the Qt console, so for now we must disable it (too
close to a release).  See gh-617 for further details, and restore once
the other issues have been addressed.

mattvonrocketstein pushed a commit to mattvonrocketstein/ipython that referenced this issue Nov 3, 2014

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment