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

Souheil CHELFOUH trollfot at gmail.com
Wed Jan 25 17:56:51 UTC 2012


A quick note :

This quite an advanced vocabulary, why not make another package with a
dependency on zope.schema ?
I don't quite see the point to have that in the "core".

Furthermore, for the dict class in use in the vocabulary, you could
add a "factory" class that can be overriden easily.
That would allow people with OrderDict capabilities to use them
without having to re-sort later on.

By the way, good work on that, it's something that is often needed in
advanced forms. I'll make sure to try it.
Thank you for the effort.

- Souheil

2012/1/25 Marius Gedminas <marius at gedmin.as>:
> 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
>
> _______________________________________________
> Zope-Dev maillist  -  Zope-Dev at zope.org
> https://mail.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  **
> (Related lists -
>  https://mail.zope.org/mailman/listinfo/zope-announce
>  https://mail.zope.org/mailman/listinfo/zope )
>


More information about the Zope-Dev mailing list