Opened 4 years ago

Last modified 6 days ago

#10295 new enhancement

Upgrading pexpect

Reported by: SimonKing Owned by: was
Priority: major Milestone: sage-6.4
Component: interfaces Keywords: pexpect upgrade
Cc: drkirkby, leif Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description (last modified by rws)

We use pexpect version 2.0. Shouldn't we upgrade to the current version 3.3?

This may be related with the performance problem reported at #10294.

See also #502.

Change History (15)

comment:1 Changed 4 years ago by fbissey

Try version 2.4 even. This has been discussed to death several times on sage-devel.
Version 2.1 and over are slower than what we currently have. Plus from experience
in sage-on-gentoo where at some stage we experimented with pexpect 2.4, some plotting broke down in the notebook.

comment:2 follow-up: Changed 4 years ago by fbissey

When I say version 2.4 you have to go there:
rather than here:

comment:3 in reply to: ↑ 2 Changed 4 years ago by SimonKing

Replying to fbissey:

When I say version 2.4 you have to go there:
rather than here:

Aren't the two links the same?

So, you say that there might be a performance problem with more recent versions of pexpect. That's bad, because the idea was to get rid of a performance problem by upgrading...

comment:4 Changed 4 years ago by fbissey

cut and paste didn't work as expected the second one was meant to be:

search the mailing list for pexpect, it is a proverbial can of worms.

comment:5 Changed 3 years ago by drkirkby

2.4 is not released yet. Here's a package for 2.3 that I created.

but on my OpenSolaris machine, this 2.3 package results in one doctest failure, which is:

sage -t  -long -force_lib devel/sage/sage/interfaces/

The interface must be semi-working, as the interface to R works - or at lease the R doctest does not fail. Here's the error message of the failed doctest.

sage -t  -long -force_lib devel/sage/sage/interfaces/
         [14.8 s]
sage -t  -long -force_lib devel/sage/sage/interfaces/
Exception pexpect.ExceptionPexpect: ExceptionPexpect() in <bound method spawn.__del__ of <pexpect.spawn object at 0xc5988ac>> ignored

<snip out load more similar errors>

<pexpect.spawn object at 0xc386d6c>> ignored
Exception pexpect.ExceptionPexpect: ExceptionPexpect() in <bound method spawn.__del__ of <pexpect.spawn object at 0xc386d6c>> ignored
File "/export/home/drkirkby/sage-4.7.alpha3/devel/sage-main/sage/interfaces/", line 867:
    sage: r._expect.before
    'abc;\r\n[1] '
    'abc <- 10 +15;\r\n__SAGE__R__PROMPT__> abc;\r\n[1] '
1 items had failures:
   1 of  11 in __main__.example_16
***Test Failed*** 1 failures.
For whitespace errors, see the file /export/home/drkirkby/.sage//tmp/
         [18.4 s]
sage -t  -long -force_lib devel/sage/sage/interfaces/
         [20.4 s]

I think in some cases where we call external programs there are probably better ways of doing this. For example

  • R has libraries, I expect we can call R via the libraries, rather than on the command line.
  • Mathematica uses the Mathlink protocol to communicate between the kernel and front end. How to use Mathlink is documented, and has been used by at least open-source program (JMath) to work with Mathematica. But Sage calls Mathematica via the command line.


comment:6 Changed 3 years ago by drkirkby

Oops, I see this doctest is related to R. But I'm sure there are other doctests which make use of pexpect, which are passing


comment:7 Changed 3 years ago by fbissey

While 2.4 is not on sourceforge but on I think we can call it released unless you have other infos (from author/mailing list).
As far as I remember, last time we tried pexpect-2.4 on sage-on-gentoo it broke plotting in the notebook. Can you try to do some plotting in the notebook with this version of pexpect? Digged my email archive, more precisely:

g=sin(x); plot(g,(x,-pi,3*pi/2))

in the notebook. It produced the following for us (at the time, notice the python time stamp):

import os;os.chdir("/tmp/tmpo2KomY");
execfile("")Python 2.6.4 (r264:75706, Mar  4 2010,
[GCC 4.3.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os;os.chdir("/tmp/tmpo2KomY");
>>> execfile("")

import os;os.chdir("/tmp/tmpY61yjM");

import os;os.chdir("/tmp/tmpXjmsQK");
__SAGE__import os;os.chdir("/tmp/tmpY61yjM");
__SAGE__import os;os.chdir("/tmp/tmpXjmsQK");

comment:8 Changed 3 years ago by fbissey

Dave, have you tried plotting in the notebook?

comment:9 Changed 3 years ago by leif

  • Cc leif added

comment:10 Changed 13 months ago by jdemeyer

  • Milestone changed from sage-5.11 to sage-5.12

comment:11 Changed 8 months ago by vbraun_spam

  • Milestone changed from sage-6.1 to sage-6.2

comment:12 Changed 6 months ago by fbissey

Bump this. There is a pexpect 3.1 now at (note: the sourceforge address will redirect you there). For a long time I thought pexpect was done and there wouldn't be anymore release.

I think if the project is alive they may take request from us.

comment:13 Changed 4 months ago by vbraun_spam

  • Milestone changed from sage-6.2 to sage-6.3

comment:14 Changed 5 weeks ago by vbraun_spam

  • Milestone changed from sage-6.3 to sage-6.4

comment:15 Changed 6 days ago by rws

  • Description modified (diff)
Note: See TracTickets for help on using tickets.