On Sunday, April 15, 2018 at 7:11:06 AM UTC-7, Simon King wrote:
> Hi! 
> The following cython code compiles fine in SageMath command line version 
> and it *used* to compile fine in the jupyter notebook one year ago: 
>  cython(""" 
>  def mantisse(): 
>      cdef double a = 1 
>      cdef double b = 2 
>      cdef int i = 0 
>      while True: 
>          a += b**(-i) 
>          print("%2d: %.53f"%(i,a)) 
>          if a==1: 
>              return i-1 
>          i += 1 
>          a = 1 
>  """) 
> However, in the jupyter notebook I no get the error 
You can trigger the error by a straight call

sage.misc.cython.cython(<cython file>)

The traceback (there is only one frame):


    669     except Exception as msg:    670         msg = str(msg) + "\n" + 
distutils_messages--> 671         raise RuntimeError(msg.strip())    672     
673     if verbose >= 0:
RuntimeError: fileno

I suspect it's this commit:


where this code was committed:

        # Capture errors from distutils and its child processes
        with open(os.path.join(target_dir, name + ".err"), 'w+') as errfile:
                with redirection(sys.stderr, errfile, close=False):
                distutils_messages = errfile.read()
    except Exception as msg:
        msg = str(msg) + "\n" + distutils_messages
        raise RuntimeError(msg.strip())

This works on the command line:

sage: F=open("er",'w+')
sage: sage.misc.sage_ostools.redirection(sys.stderr,F)

but in jupyter we get an error:

UnsupportedOperation: fileno

because sys.stderr is now:

<ipykernel.iostream.OutStream object at 0x7ff909f6ed10>

It looks like sage_ostools.redirection might need some love.

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 sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
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