[PEAK] QueryDM's with no query params

Erik Rose psucorp at grinchcentral.com
Fri May 20 22:52:49 EDT 2005


>> and I can't even figure out what it's finding to iterate over. (I 
>> can't find any __iter__() calls or anything.)
>
> Python will iterate over anything with a __getitem__.

Ah. I'm still learning to find my way around the Python documentation.

> This would be simplest:
>
>     def __iter__(self):
>         for item in self[0]:
>             yield item

Ah, so that is the best one can do. Thanks. I had done almost the same 
thing, saving a generator, I think...

def __iter__(self):
	return iter(self[0])

...and I stuck it in a ParamlessQueryDM class that I mixed into my 
parameterless QueryDM's. I still wonder why it was iterating forever. 
Maybe that belies a deeper bug someplace; I may take a look when 
schedule permits.

> And perhaps QueryDM should get a default __iter__ that raises 
> NotImplementedError

A good idea, IMO. That would at least save people like me a few 
minutes, if by no other means than the comments above such a stub.

> , and __iter__ can then also be overridden (by DM's that wish to do 
> so) to iterate over all their contents.  This, in conjunction with the 
> 'add' and 'remove' stubs, would move a few steps towards making 
> today's DM's look like tomorrow's "workspaces".

Sounds like a good effort/reward ratio to me. I do want to thank you 
for continuing to answer questions about this existing stuff, even as 
you forge new frontiers in peak.query. :-)

Erik




More information about the PEAK mailing list