Opened 3 years ago
Last modified 4 weeks ago
#10295 new enhancement
Upgrading pexpect
Reported by: | SimonKing | Owned by: | was |
---|---|---|---|
Priority: | major | Milestone: | sage-6.2 |
Component: | interfaces | Keywords: | pexpect upgrade |
Cc: | drkirkby, leif | Merged in: | |
Authors: | Reviewers: | ||
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description
We use pexpect version 2.0. Shouldn't we upgrade to the current version 2.3?
This may be related with the performance problem reported at #10294.
Change History (12)
comment:1 Changed 3 years ago by fbissey
comment:2 follow-up: ↓ 3 Changed 3 years ago by fbissey
When I say version 2.4 you have to go there: http://pypi.python.org/pypi/pexpect rather than here: http://pypi.python.org/pypi/pexpect
comment:3 in reply to: ↑ 2 Changed 3 years ago by SimonKing
Replying to fbissey:
When I say version 2.4 you have to go there: http://pypi.python.org/pypi/pexpect rather than here: http://pypi.python.org/pypi/pexpect
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 3 years ago by fbissey
cut and paste didn't work as expected the second one was meant to be: http://pexpect.sourceforge.net/
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.
http://boxen.math.washington.edu/home/kirkby/patches/pexpect-2.3.spkg
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/expect.py
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/sage0.py [14.8 s] sage -t -long -force_lib devel/sage/sage/interfaces/expect.py 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/expect.py", line 867: sage: r._expect.before Expected: 'abc;\r\n[1] ' Got: '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/.doctest_expect.py [18.4 s] sage -t -long -force_lib devel/sage/sage/interfaces/gap.py [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.
Dave
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
Dave
comment:7 Changed 3 years ago by fbissey
While 2.4 is not on sourceforge but on pypi.python.org http://pypi.python.org/pypi/pexpect 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("_sage_input_1.py")Python 2.6.4 (r264:75706, Mar 4 2010, 21:15:13) [GCC 4.3.4] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> >>> import os;os.chdir("/tmp/tmpo2KomY"); >>> execfile("_sage_input_1.py") START1 import os;os.chdir("/tmp/tmpY61yjM"); execfile("_sage_input_2.py") import os;os.chdir("/tmp/tmpXjmsQK"); execfile("_sage_input_3.py") __SAGE__ __SAGE__import os;os.chdir("/tmp/tmpY61yjM"); __SAGE__execfile("_sage_input_2.py") START2 __SAGE__ __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 8 months ago by jdemeyer
- Milestone changed from sage-5.11 to sage-5.12
comment:11 Changed 3 months ago by vbraun_spam
- Milestone changed from sage-6.1 to sage-6.2
comment:12 Changed 4 weeks ago by fbissey
Bump this. There is a pexpect 3.1 now at http://pexpect.readthedocs.org/en/latest/ (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.
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.