[Zope-dev] TreeVocabulary in zope.schema.vocabulary

Marius Gedminas marius at gedmin.as
Wed Jan 25 12:14:12 UTC 2012


On Wed, Jan 25, 2012 at 01:55:28AM +0200, Jan-Carel Brand wrote:
> On Wed, 2012-01-25 at 00:52 +0200, Marius Gedminas wrote:
> > On Tue, Jan 24, 2012 at 07:34:03PM +0200, Jan-Carel Brand wrote:
> > > I now subclass PersistentMapping instead of SimpleVocabulary, so this is
> > > not an issue anymore.
> > 
> > Ok.  But why Persistent?  None of the other vocabularies are
> > persistent...
> 
> Yeah, using PersistentMapping was a mistake, firstly because persistence
> is not necessary and secondly because it introduces a dependency on
> Persistence.
<...>
> > > I've changed the TreeVocabulary to subclass from PersistentDict. So the
> > > vocabulary itself now acts as a dict.
> > 
> > So is it PersistentMapping or PersistentDict then?  ;)
> 
> It was first the one, and then the other :)

For extra fun: one is an alias for the other in newer ZODB versions.

> > > > > Perhaps I should rephrase :)
> > > > > 
> > > > > I would like my changes to be merged with the zope.schema trunk. The
> > > > > tests I've added provide 100% coverage of the TreeVocabulary code.
> > > > > 
> > > > > I would just like someone to sign it off.
> > > > 
> > > > -1 because of the concerns above.
> > > 
> > > Fair enough. Have your concerns been addressed properly?
> > 
> > Thank you, yes.
> > 
> > I'm still wondering about the possibility of ordered trees.
> 
> Python 2.7 has an OrderedDict class in the collections module:
> http://docs.python.org/dev/whatsnew/2.7.html#pep-0372

Yes.  And if I pass an OrderedDict to your .fromDict(), it will be
discarded and all the items inserted into a regular dict, forgetting
their original order.

But anyway, I'm fine with you saying "explicit ordering is not
supported; it's up to the widget to sort each tree level appropriately".
In the class docstring, say.  ;-)

> > And I'm -1 for subclassing PersistentMapping.  It may tempt people into
> > storing tree vocabularies in the ZODB, and then maybe even modifying
> > them.  And you have plenty of non-persistent dicts in the internal
> > structure.
> > 
> > I think it would be better to subclass a regular dict, and document that
> > you ITreeVocabulary is a dict-like object by making it inherit
> > IEnumerableMapping.
> 
> Thanks for the suggestion, I did that.

I've no objections remaining (other than that little thing about
explicit ordering).

Marius Gedminas
-- 
http://pov.lt/ -- Zope 3/BlueBream consulting and development
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://mail.zope.org/pipermail/zope-dev/attachments/20120125/59a0b901/attachment.sig>


More information about the Zope-Dev mailing list