On 09/02/2010 04:12 PM, Ryan May wrote:
> On Thu, Sep 2, 2010 at 8:33 PM, Benjamin Root<ben.r...@ou.edu>  wrote:
>> On Thu, Sep 2, 2010 at 7:57 PM, Eric Firing<efir...@hawaii.edu>  wrote:
>>> On 09/02/2010 01:21 PM, Benjamin Root wrote:
>>>> I think I understand the purpose for each container by itself, but not
>>>> for having all three together at the same time.  At the very least,
>>>> maybe we can eliminate the list container?  I think the difficulty there
>>>> would be with clearing the stack properly.
>>>
>>> You can't just blow away self.axes, because that is a public interface,
>>> and a convenient one.  Maybe self.axes needs to be an object that can
>>> behave like a list, to preserve the public interface, but that
>>> underneath has the mechanisms required for the functionality now
>>> provided by self._seen and self._axstack, so that they can be eliminated.
>>
>> Right, of course... must have had a brain-fart moment.
>>
>> Creating another list-like object would probably be an ideal way to tuck
>> away self._seen and self._axstack.  Especially given the public nature of
>> self.axes, we could never really be sure that self._axstack and self._seen
>> had all the axes listed in self.axes. I am gonna have to look through the
>> code and see what needs to be implemented.
>>
>> Does Python 2.4 support subclassing things like list?

Yes: http://docs.python.org/release/2.4.4/lib/module-UserList.html

But I agree that turning Figure.axes into a property with the getter 
generating a list probably will do the trick.  Maybe you can use 
_ax_stack._elements? It looks like that may completely parallel the 
present Figure.axes.  Stack, or a subclass or derivative, could store 
(ax, key) tuples instead of just the ax list. Then the equivalent of 
_seen could be generated on the fly as needed.  (This is very fast.) 
This would completely eliminate the redundant storage of Axes references 
in Figure, and simplify some Figure methods.

Eric

>
> Probably. But why not take advantage of properties as they were meant
> to be? You can make self.axes a property that generates the list
> from the self._axstack/self._seen only when accessed. We'd need to see
> if self.axes is used in any performance sensitive areas, but this
> seems like a *textbook* example of why properties are awesome.
>
> Is there any instance where adding to self.axes is a public API?
> Because given self._axstack/self._seen, it would seem that appending
> to this list would not by itself work.
>
> I'm willing to cook up the patch tomorrow if no one beats me to it.
>
> Ryan
>


------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to