#71: Preparsing causes confusing error messages
-------------------------------------------+------------------------
Reporter: Justin Walker (justin@… | Owner: cwitty
Type: enhancement | Status: new
Priority: minor | Milestone: sage-6.5
Component: misc | Resolution:
Keywords: | Merged in:
Authors: Jeroen Demeyer | Reviewers:
Report Upstream: N/A | Work issues:
Branch: | Commit:
Dependencies: | Stopgaps:
-------------------------------------------+------------------------
Changes (by jdemeyer):
* milestone: sage-feature => sage-6.5
Old description:
> When a .sage file is "load"ed or "attach"ed, it gets translated to a .py
> file before being processed; the result is a file with different
> structure than the original. Any errors are described in terms of the
> .py file, not the .sage file.
>
> One working solution is to monkey-patch `traceback.extract_tb()` to undo
> preparsing.
New description:
When a .sage file is "load"ed or "attach"ed, it gets translated to a .py
file before being processed; the result is a file with different structure
than the original. Any errors are described in terms of the .py file, not
the .sage file.
One working solution is to monkey-patch `traceback.extract_tb()` to undo
preparsing.
Since we're messing with tracebacks anyway, this patch will also fix
tracebacks for Cython files.
The traceback below was generated with this patch. It shows the
unpreparsed {{{1/0}}} and it also shows the Cython source:
{{{
sage: 1/0
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call
last)
<ipython-input-1-3cdd7c9e2324> in <module>()
----> 1 1/0
/usr/local/src/sage-config/sage/structure/element.pyx in
sage.structure.element.RingElement.__div__
(build/cythonized/sage/structure/element.c:17829)()
1891 return
(<RingElement>self)._idiv_(<RingElement>right)
1892 else:
-> 1893 return
(<RingElement>self)._div_(<RingElement>right)
1894 global coercion_model
1895 return coercion_model.bin_op(self, right, div)
/usr/local/src/sage-config/sage/rings/integer.pyx in
sage.rings.integer.Integer._div_
(build/cythonized/sage/rings/integer.c:12964)()
1795 # This is vastly faster than doing it here, since here
1796 # we can't cimport rationals.
-> 1797 return the_integer_ring._div(self, right)
1798
1799 def __floordiv__(x, y):
/usr/local/src/sage-config/sage/rings/integer_ring.pyx in
sage.rings.integer_ring.IntegerRing_class._div
(build/cythonized/sage/rings/integer_ring.c:4578)()
443 cdef rational.Rational x = PY_NEW(rational.Rational)
444 if mpz_sgn(right.value) == 0:
--> 445 raise ZeroDivisionError, 'Rational division by zero'
446 mpz_set(mpq_numref(x.value), left.value)
447 mpz_set(mpq_denref(x.value), right.value)
ZeroDivisionError: Rational division by zero
}}}
--
--
Ticket URL: <http://trac.sagemath.org/ticket/71#comment:11>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" 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 http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.