On Wed, Jun 11, 2008 at 2:56 PM, William Stein <[EMAIL PROTECTED]> wrote:
>
> On Wed, Jun 11, 2008 at 2:46 AM, Ondrej Certik <[EMAIL PROTECTED]> wrote:
>>
>> On Wed, Jun 11, 2008 at 2:32 AM, mabshoff <[EMAIL PROTECTED]> wrote:
>>>
>>>
>>>
>>> On Jun 10, 5:27 pm, "William Stein" <[EMAIL PROTECTED]> wrote:
>>>> On Tue, Jun 10, 2008 at 2:04 PM, mabshoff <[EMAIL PROTECTED]> wrote:
>>>>
>>>> > Riccardo Gori wrote:
>>>> >> Hello,
>>>>
>>>> > Hi Riccardo,
>>>>
>>>> > I have also forwarded your email to sage-devel.
>>>>
>>>> >> In SAGE-3.0.2 with a Intel Mac OSX 10.5 I found the following bug:
>>>>
>>>> >> If I create a sympy matrix and if I try to access it it gives me an 
>>>> >> error.
>>>> >> Step to reproduce:
>>>>
>>>> >> sage: import sympy
>>>> >> sage: M = sympy.Matrix( (2,3) )
>>>> >> sage: sympy.pprint M[0]
>>>> >> Traceback (most recent call last):
>>>> >>   File "<stdin>", line 1, in <module>
>>>> >>   File 
>>>> >> "/Users/riccardo/.sage/sage_notebook/worksheets/admin/3/code/299.py", 
>>>> >> line 7, in <module>
>>>> >>     M[Integer(1)]
>>>> >>   File 
>>>> >> "/Applications/sage/local/lib/python2.5/site-packages/sympy/plotting/", 
>>>> >> line 1, in <module>
>>>> >>       File 
>>>> >> "/Applications/sage/local/lib/python2.5/site-packages/sympy/matrices/matrices.py",
>>>> >>  line 150, in __getitem__
>>>> >>     assert len(key) == 2
>>>> >> TypeError: object of type 'sage.rings.integer.Integer' has no len()
>>>> >> sage: sympy.pprint M[int(0)]
>>>> >> 2
>>>>
>>>> > This is most likely an integration issue and I assume that if you use
>>>> > Python ints the problem will go away. One aspect there is certainly
>>>> > that Sympy is not integrated into Sage's coercion model.
>>>
>>> Hi,
>>>
>>>> This is a bug in Sympy:
>>>
>>> we do not ship the latest Sympy release and some very similar sounding
>>> issue was fixed in the last release, so maybe somebody should verify
>>> that it is still broken in the latest release and then file a bug
>>> report with Sympy. Otherwise we should upgrade Sympy in Sage to the
>>> latest release.
>>>
>>>> sage:  import sympy
>>>> sage: M = sympy.Matrix( (2,3) )
>>>> sage: M
>>>> [2]
>>>> [3]
>>>> sage: M[0]
>>>> TypeError                                 Traceback (most recent call last)
>>>> ...
>>>>
>>>> Sympy *should* call the __index__ method on the input object
>>>> in __getitem__, but it doesn't.  The __index__ method is supported
>>>> by Sage integers, and was added (by Travis Oliphant) in Python 2.5
>>>> for exactly the above reason.
>>>>
>>>> I've cc'd this email to Ondrej Certik and hope he can post a bug
>>>> report to the sympy bug tracker.
>>
>> http://code.google.com/p/sympy/issues/detail?id=882
>>
>> I'll fix it by the next release and then create a Sage spkg.
>>
>> So far I was updating sympy in Sage once in couple releases (or if
>> there was a bug like this one), but if there is interest, I'll update
>> it with each release.
>>
>> Thanks a lot for all these bug reports, we always write a test for it,
>> so once it's fixed, it will never happen again.
>>
>> In the long term, how can we easily and reliably test these things?
>> I.e. this happens when 1 is preparsed to Integer(1). I was thinking
>> for example of putting sympy tests into the installed files, so that
>> once can do
>>
>> import sympy
>> sympy.test()
>>
>> just like numpy or scipy. But this would not catch the problems with
>> preparsing 1 to Integer(1). (But maybe it could catch some other
>> problems, so I think it's worthy.)
>>
>> So the only method that I know of is simply write a precise test for
>> each case by hand and try to cover all possible combinations. That's
>> also the most robust.
>
> There is a file in sage:
>
>  SAGE_ROOT/devel/sage/sage/calculus/test_sympy.py
>
> for testing use of sympy from Sage.  You could submit a patch
> that greatly increases the number of tests in there.   In particular,
> you could add a test for the above problem.   That way if this
> were to happen again it would get picked up by the Sage test
> suite.

Right, that's the way to go, because the test_sympy.py uses preparsing.

>
> I think this is reasonable since this problem was a Sympy/Sage
> integration bug, rather than a Sympy bug.

It is a sympy bug, because sympy should just work with any user
defined classes (that support either __int__ or __float__). But I just
fixed that and send a patch for a review here:

http://code.google.com/p/sympy/issues/detail?id=881

Ondrej

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to