[sage-combinat-devel] Bug in CombinatorialObject?

2013-02-09 Thread Andrew Mathas
Hi,

I came across this today:

sage: Partition(1)
Traceback (most recent call last)
...
TypeError: 'sage.rings.integer.Integer' object is not iterable
sage: Tableau(1)
Traceback (most recent call last)
...
TypeError: 'sage.rings.integer.Integer' object is not iterable

Even though in both cases the input is clearly garbage, I think that this 
is a bug because rather than failing ungracefully like this I think that a 
ValueError should be raised with an error message identifying the garbage 
input. (For what it's worth, I came across this when this error broke some 
of my code which was expecting a ValueError in such situations. Of course, 
I could also trap a TypeError and maybe another 20 possibilities but it 
would be better if I knew what error to expect.)

In both cases, the source of this problem iis that in 
CombinatorialObject.__init__ we have

if isinstance(l, list):
self._list = l
else:
self._list = list(l)

but it is never checked  that ``l`` can be turned into a list. On top of 
this, Tableau(), Partition() -- and I suspect many others -- never check to 
see if their calls to CombinatorialObject.__init__ (and Element.__init__) 
actually work. If CombinatorialObject.__init__ raises a ValueError I can 
live with the latter.

Please let me know if you think this is not a bug. If the consensus is that 
this is a bug the I will open a ticket and post a patch sometime next week.

Cheers,
Andrew







-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [sage-combinat-devel] Bug in CombinatorialObject?

2013-02-09 Thread Anne Schilling
Hi Andrew,

> I came across this today:
> 
> sage: Partition(1)
> Traceback (most recent call last)
> ...
> TypeError: 'sage.rings.integer.Integer' object is not iterable
> sage: Tableau(1)
> Traceback (most recent call last)
> ...
> TypeError: 'sage.rings.integer.Integer' object is not iterable
> 
> Even though in both cases the input is clearly garbage, I think that this is 
> a bug because rather than failing ungracefully like this I think that a 
> ValueError should be raised with an error message
> identifying the garbage input. (For what it's worth, I came across this when 
> this error broke some of my code which was expecting a ValueError in such 
> situations. Of course, I could also trap a
> TypeError and maybe another 20 possibilities but it would be better if I knew 
> what error to expect.)
> 
> In both cases, the source of this problem iis that in 
> CombinatorialObject.__init__ we have
> 
> if isinstance(l, list):
> self._list = l
> else:
> self._list = list(l)
> 
> but it is never checked  that ``l`` can be turned into a list. On top of 
> this, Tableau(), Partition() -- and I suspect many others -- never check to 
> see if their calls to CombinatorialObject.__init__
> (and Element.__init__) actually work. If CombinatorialObject.__init__ raises 
> a ValueError I can live with the latter.
> 
> Please let me know if you think this is not a bug. If the consensus is that 
> this is a bug the I will open a ticket and post a patch sometime next week.

Yes, this looks like a bug.

Are you coming to the Sage Days at ICERM this coming week? Are you writing the 
e-mails from
the airplane?

Cheers,

Anne

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.