Different orderings in dictionaries is expected behavior and shouldn't be
causing any bugs (because the dictionary is basically an unordered container).
I really have a hard time understanding what is going on here actually.
By the way, going back to the original code, you shouldn't be calling expand in
a @property method because those are supposed to be (relatively) cheap, and
expand() in general is not.
Aaron Meurer
On Sep 7, 2010, at 4:09 PM, smichr wrote:
> OK, I think it's something that happens when expand is called. Perhaps
> due to caching? If I put e = self.expand(mul=1) above the loop over
> self.symbols then I get two errors. I go to the releveant code in test
> pickling and print out the attribute and the values of a and b that
> are being compared as follows:
>
> attr = getattr(a,i)
> if not hasattr(attr, "__call__"):
> assert hasattr(b,i), i
> got = getattr(b,i)
>
> if got != attr:
> print '-'*22
> print 'attr=',i
> print type(a), a
> print type(b), b
> print attr
> print got
>
> assert got==attr
>
> Here is the output:
>
> attr= __dict__
> <class 'sympy.printing.mathml.MathMLPrinter'>
> <sympy.printing.mathml.MathMLPrint
> er object at 0x0E382D90>
> <class 'sympy.printing.mathml.MathMLPrinter'>
> <sympy.printing.mathml.MathMLPrint
> er object at 0x0E72AC10>
> {'reverse': False, 'dom': <xml.dom.minidom.Document instance at
> 0x0E722DC8>, '_s
> ettings': {'order': None, 'encoding': 'utf-8'}, '_str': <type 'str'>,
> '_print_le
> vel': 0, 'order': None}
> {'reverse': False, 'dom': <xml.dom.minidom.Document instance at
> 0x0E7404E0>, '_s
> ettings': {'order': None, 'encoding': 'utf-8'}, '_print_level': 0,
> '_str': <type
> 'str'>, 'order': None}
>
> The dictionaries have the same entries but the xml instance is at a
> different location now and the print_level and str entries switched
> places.
>
> attr= _mhash
> gamma gamma(1 + x)
> gamma gamma(1 + x)
> None
> 777405089
>
> Here the attribute _mhash is None or that other number for the gamma
> object.
>
> Any ideas?
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
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/sympy?hl=en.