Re: TreeVocabulary in zope.schema.vocabulary

Jan-Carel Brand <[email protected]>
Newsgroups gmane.comp.web.zope.devel
Organization Opkode
Message-ID <1327586574.24104.13.camel@toaster>
Hi Souheil

On Wed, 2012-01-25 at 18:56 +0100, Souheil CHELFOUH wrote:
> 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".

Ok, Charlie also expressed his reservations. I'll put it in a different
package then.

I'm not too sure what to name it though. For example, under what
namespace? zope or z3c?

I'm guessing zope.vocabulary, or rather zope.treevocabulary?

> 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.

Could you please elaborate on what you mean?

If I create a factory class to create TreeVocabulary instances, how will
overriding that factory (without creating a separate
SortableTreeVocabulary) allow people to use OrderedDict?

Incidentally, I came upon this: http://pypi.python.org/pypi/ordereddict
which provides the OrderedDict to Python 2.4 to 2.7

I think it might make sense to just subclass OrderedDict and implement
an ordered tree from the start.

> 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.

Thanks! Much appreciated.

J-C



> 
> - Souheil
> 
> 2012/1/25 Marius Gedminas <[email protected]>:
> > 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  -  [email protected]
> > 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 )
> >
> _______________________________________________
> Zope-Dev maillist  -  [email protected]
> 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 )


_______________________________________________
Zope-Dev maillist  -  [email protected]
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 )
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.