On Wednesday, March 6, 2019 at 5:31:19 PM UTC+1, E. Madison Bray wrote:
>
> On Tuesday, March 5, 2019 at 4:47:39 PM UTC+1, benyamin alizade wrote:
>>
>> It gives no result, and when I interrupt it, the following error appears:
>>
>>
>> ---------------------------------------------------------------------------
>> EOF                                       Traceback (most recent call 
>> last)
>> <ipython-input-2-8f0455f97669> in <module>()
>> ----> 1 maple('2*3')
>>
>> /opt/sagemath-8.5/local/lib/python2.7/site-packages/sage/interfaces/interface.pyc
>>  
>> in __call__(self, x, name)
>>     278
>>     279         if isinstance(x, string_types):
>> --> 280             return cls(self, x, name=name)
>>     281         try:
>>     282             return self._coerce_from_special_method(x)
>>
>> /opt/sagemath-8.5/local/lib/python2.7/site-packages/sage/interfaces/expect.pyc
>>  
>> in __init__(self, parent, value, is_name, name)
>>    1436         else:
>>    1437             try:
>> -> 1438                 self._name = parent._create(value, name=name)
>>    1439             # Convert ValueError and RuntimeError to TypeError for
>>    1440             # coercion to work properly.
>>
>> /opt/sagemath-8.5/local/lib/python2.7/site-packages/sage/interfaces/interface.pyc
>>  
>> in _create(self, value, name)
>>     474     def _create(self, value, name=None):
>>     475         name = self._next_var_name() if name is None else name
>> --> 476         self.set(name, value)
>>     477         return name
>>     478
>>
>> /opt/sagemath-8.5/local/lib/python2.7/site-packages/sage/interfaces/maple.pyc
>>  
>> in set(self, var, value)
>>     622         """
>>     623         cmd = '%s:=%s:' % (var, value)
>> --> 624         out = self.eval(cmd)
>>     625         if out.find("error") != -1:
>>     626             raise TypeError("Error executing code in 
>> Maple\nCODE:\n\t%s\nMaple ERROR:\n\t%s" % (cmd, out))
>>
>> /opt/sagemath-8.5/local/lib/python2.7/site-packages/sage/interfaces/expect.pyc
>>  
>> in eval(self, code, strip, synchronize, locals, allow_use_file, 
>> split_lines, **kwds)
>>    1350                 elif split_lines:
>>    1351                     return '\n'.join([self._eval_line(L, 
>> allow_use_file=allow_use_file, **kwds)
>> -> 1352                                         for L in code.split('\n') 
>> if L != ''])
>>    1353                 else:
>>    1354                     return self._eval_line(code, 
>> allow_use_file=allow_use_file, **kwds)
>>
>> /opt/sagemath-8.5/local/lib/python2.7/site-packages/sage/interfaces/maple.pyc
>>  
>> in _eval_line(self, line, allow_use_file, wait_for_prompt, 
>> restart_if_needed)
>>     574         with gc_disabled():
>>     575             z = Expect._eval_line(self, line, 
>> allow_use_file=allow_use_file,
>> --> 576                    
>>  wait_for_prompt=wait_for_prompt).replace('\\\n','').strip()
>>     577             if z.lower().find("error") != -1:
>>     578                 raise RuntimeError("An error occurred running a 
>> Maple command:\nINPUT:\n%s\nOUTPUT:\n%s" % (line, z))
>>
>> /opt/sagemath-8.5/local/lib/python2.7/site-packages/sage/interfaces/expect.pyc
>>  
>> in _eval_line(self, line, allow_use_file, wait_for_prompt, 
>> restart_if_needed)
>>     982                     out = ''
>>     983         except KeyboardInterrupt:
>> --> 984             self._keyboard_interrupt()
>>     985             raise KeyboardInterrupt("Ctrl-c pressed while running 
>> %s"%self)
>>     986         if self._terminal_echo:
>>
>> /opt/sagemath-8.5/local/lib/python2.7/site-packages/sage/interfaces/maple.pyc
>>  
>> in _keyboard_interrupt(self)
>>     333         print("Interrupting %s..." % self)
>>     334         self._expect.sendline(chr(3))  # send ctrl-c
>> --> 335         self._expect.expect(self._prompt)
>>     336         raise RuntimeError("Ctrl-c pressed while running %s" % 
>> self)
>>     337
>>
>> /opt/sagemath-8.5/local/lib/python2.7/site-packages/pexpect/spawnbase.pyc 
>> in expect(self, pattern, timeout, searchwindowsize, async_, **kw)
>>     339         compiled_pattern_list = self.compile_pattern_list(pattern)
>>     340         return self.expect_list(compiled_pattern_list,
>> --> 341                 timeout, searchwindowsize, async_)
>>     342
>>     343     def expect_list(self, pattern_list, timeout=-1, 
>> searchwindowsize=-1,
>>
>> /opt/sagemath-8.5/local/lib/python2.7/site-packages/pexpect/spawnbase.pyc 
>> in expect_list(self, pattern_list, timeout, searchwindowsize, async_, **kw)
>>     367             return expect_async(exp, timeout)
>>     368         else:
>> --> 369             return exp.expect_loop(timeout)
>>     370
>>     371     def expect_exact(self, pattern_list, timeout=-1, 
>> searchwindowsize=-1,
>>
>> /opt/sagemath-8.5/local/lib/python2.7/site-packages/pexpect/expect.pyc in 
>> expect_loop(self, timeout)
>>     115                     timeout = end_time - time.time()
>>     116         except EOF as e:
>> --> 117             return self.eof(e)
>>     118         except TIMEOUT as e:
>>     119             return self.timeout(e)
>>
>> /opt/sagemath-8.5/local/lib/python2.7/site-packages/pexpect/expect.pyc in 
>> eof(self, err)
>>      61             if err is not None:
>>      62                 msg = str(err) + '\n' + msg
>> ---> 63             raise EOF(msg)
>>      64
>>      65     def timeout(self, err=None):
>>
>> EOF: End Of File (EOF). Exception style platform.
>> Maple with PID 5472 running /cygdrive/c/Program Files (x86)/Maple 
>> 17/bin.win/maple -t -c interface(screenwidth=infinity,errorcursor=false)
>> command: /cygdrive/c/Program Files (x86)/Maple 17/bin.win/maple
>> args: ['/cygdrive/c/Program Files (x86)/Maple 17/bin.win/maple', '-t', 
>> '-c', 'interface(screenwidth=infinity,errorcursor=false)']
>> buffer (last 100 chars): ''
>> before (last 100 chars): '\r\n'
>> after: <class 'pexpect.exceptions.EOF'>
>> match: None
>> match_index: None
>> exitstatus: None
>> flag_eof: True
>> pid: 5472
>> child_fd: 10
>> closed: False
>> timeout: None
>> delimiter: <class 'pexpect.exceptions.EOF'>
>> logfile: None
>> logfile_read: None
>> logfile_send: None
>> maxread: 4194304
>> ignorecase: False
>> searchwindowsize: None
>> delaybeforesend: None
>> delayafterclose: 0.1
>> delayafterterminate: 0.1
>> searcher: searcher_re:
>>     0: re.compile('#-->')
>>
>>>
>>>
> It looks to me like pexpect is just waiting forever for a prompt and not 
> receiving one.  The best thing to do I think would be to run it more 
> directly and see what it's outputting.  Perhaps even it's something as 
> simple as, the prompt is something other than "#-->".  So pexpect will just 
> sit there until something resembling the "#-->" appears on its stdin 
> stream. 
>

I almost forgot the most important point!  If you want to interact "more 
directly" what I wrote above, you can use the `ptyprocess` module directly, 
which is what pexpect (and by extension Sage's interface to maple) is 
using.  For example to start process with a PTY from Python/sage:

    sage: import ptyprocess
    sage: p = ptyprocess.PtyProcess.spawn(['/cygdrive/c/Program Files 
(x86)/Maple 17/bin.win/maple', '-t', '-c', 
'interface(screenwidth=infinity,errorcursor=false)'])


then to see the process's output:

    sage: p.read()
    <something>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to