On Tue, Nov 13, 2007 at 01:01:47AM +0000, Robert Bradshaw wrote:
> 
> This is the issue, which is also the issue with the __richcmp__  
> (you'll need to remove that and __cmp__ to get __hash__ to work).
> 
> http://webmaster.iu.edu/tool_guide_info/python/api/type-structs.html
> 
> This field is inherited by subtypes together with tp_richcompare and  
> tp_hash: a subtypes inherits all three of tp_compare, tp_richcompare,  
> and tp_hash when the subtype's tp_compare, tp_richcompare, and  
> tp_hash are all NULL.

Ok, that answers that question, but leaves me with others.  If I comment out 
the 
__richcmp__ implementation of the most specific classes (e.g. 
MPolynomial_libsingular), I can hash my mpolys just fine.  But, it breaks other 
stuff (x==x+0 is no longer true).

So, element.pyx has big comment blocks above __richcmp__ and a few others which 
I guess are supposed to explain what is going on here.  However, they leave me 
confused.  I need to override __richcmp__ with some boilerplate implementation 
if I want to take advantage of <something>, but that <something> is quite 
unclear to me.  When am I supposed to override __richcmp__ and when not?  It 
seems very bad to not override it for MPolynomial_libsingular, but 
Polynomial_dense_mod_n does not override it and appears to work just fine.

--
Joel

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
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://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~----------~----~----~----~------~----~------~--~---

Reply via email to