On Wed, 2012-03-21 at 19:58 +0200, Marius Gedminas wrote: > On Wed, Mar 21, 2012 at 05:29:44PM +0100, Jan-Carel Brand wrote: > > What needs to be done for a new release of zope.schema? (4.1) > > (Note: historically zope.schema always used three version components: > 4.1.0, not 4.1.)
Ok. > Somebody with interest and PyPI access has to check it out and run > fullrelease (from zest.releaser). Ideally, after running the test suite > to make sure it passes. For all supported Python versions, if possible. > Which are, ideally, enumerated in setup.py as Trove classifiers. > > For packages that have C extension modules there are probably extra > steps needed to produce Windows binary eggs. I don't know those > steps (winbot is involved somehow), so I avoid making releases of > packages that have C extension modules. How do I check if a package > has C extension modules? I go to PyPI and look if there are Windows > binary eggs available for download for the current version. > zope.schema doesn't, so I'm just including this for general > reference purposes. > > > And is there anything I can do to help speed it up? > > Yes: you can bring it up on the mailing list, like you've done here. ;) > > Also, thank you for the convenient diff. I'll review it. > > Also, would you like to have PyPI access to zope.schema, so that you can > do the release yourself? If so, tell us your PyPI username. Sure, my pypi username is: jcbrand > > > Even just an alpha/beta release would be very helpful. > > I think uploading alpha/beta releases to PyPI is frowned upon, because > tools tend to download them blindly, as if they were final releases. Ok. > > > svn --non-interactive diff > > http://svn.zope.org/repos/main/zope.schema/tags/4.0.1 > > http://svn.zope.org/repos/main/zope.schema/trunk > > Index: CHANGES.txt > > =================================================================== > > --- CHANGES.txt (.../tags/4.0.1) (revision 124658) > > +++ CHANGES.txt (.../trunk) (revision 124658) > > @@ -2,6 +2,18 @@ > > CHANGES > > ======= > > > > +4.1 (unreleased) > > This should be 4.1.0. > > > +------------------ > > + > > +- Add TreeVocabulary for nested tree-like vocabularies. > > + > > +- Fix broken Object field validation where the schema contains a Choice > > with > > + ICountextSourceBinder source. In this case the vocabulary was not > > iterable > > + because the field was not bound and the source binder dien't return the > > Spelling: dien't. Fixed. > > + real vocabulary. Added simple test for IContextSourceBinder validation. > > But a > > + test with an Object field with a schema using a Choice with > > + IContextSourceBinder is still missing. > > + > > 4.0.1 (2011-11-14) > > ------------------ > > > > Index: setup.py > > =================================================================== > > --- setup.py (.../tags/4.0.1) (revision 124658) > > +++ setup.py (.../trunk) (revision 124658) > > @@ -19,6 +19,7 @@ > > """Setup for zope.schema package > > """ > > import os > > +import sys > > from setuptools import setup, find_packages > > > > def read(*rnames): > > @@ -60,8 +61,18 @@ > > suite.addTest(mod.test_suite()) > > return suite > > > > +REQUIRES = [ > > + 'setuptools', > > + 'zope.interface >= 3.6.0', > > + 'zope.event', > > + 'six', > > + ] > > + > > +if sys.version_info < (2 , 7): > > No space before the comma. Fixed. > > + REQUIRES += ['ordereddict'], > > Trailing comma warning! I do not think this does what you want it to > do: > > >>> REQUIRES = [ > ... 'setuptools', > ... 'zope.interface >= 3.6.0', > ... 'zope.event', > ... 'six', > ... ] > >>> REQUIRES += ['ordereddict'], > >>> REQUIRES > ['setuptools', 'zope.interface >= 3.6.0', 'zope.event', 'six', > ['ordereddict']] > > I don't know if setuptools can handle this correctly, but it feels wrong > anyway. Please fix. Strange, it seems to work with the comma, because I used/tested it with python 2.6. In any case, I removed it now. > > + > > setup(name='zope.schema', > > - version = '4.0.1', > > + version = '4.1dev', > > This should be '4.1.0dev'. Done. > > url='http://pypi.python.org/pypi/zope.schema', > > license='ZPL 2.1', > > description='zope.interface extension for defining data schemas', > > @@ -81,11 +92,8 @@ > > namespace_packages=['zope',], > > extras_require={'test': ['zope.testing'], > > 'docs': ['z3c.recipe.sphinxdoc']}, > > - install_requires=['setuptools', > > - 'zope.interface >= 3.6.0', > > - 'zope.event', > > - 'six', > > - ], > > + install_requires=REQUIRES, > > + > > The blank line (and trailing whitespace) do not seem to be useful here. Removed > > classifiers=[ > > "Development Status :: 5 - Production/Stable", > > "Intended Audience :: Developers", > > Index: src/zope/schema/fields.txt > > =================================================================== > > --- src/zope/schema/fields.txt (.../tags/4.0.1) (revision > > 124658) > > +++ src/zope/schema/fields.txt (.../trunk) (revision 124658) > > @@ -116,6 +116,9 @@ > > The vocabulary interface is simple enough that writing a custom vocabulary > > is > > not too difficult itself. > > > > +See for example zope.schema.vocabulary.TreeVocabulary for another > > +IBaseVocabulary supporting vocabulary that provides a nested, tree-like > > structure. > > This line is 82 characters long. Please wrap. (76 chars is a good choice for > wrapping.) Fixed. > > + > > Choices and Collections > > ----------------------- > > > > @@ -156,3 +159,4 @@ > > > > This level of indirection may be unnecessary for some applications, and > > can be > > disabled with simple ZCML changes within `zope.app`. > > + > > Index: src/zope/schema/vocabulary.py > > =================================================================== > > --- src/zope/schema/vocabulary.py (.../tags/4.0.1) (revision > > 124658) > > +++ src/zope/schema/vocabulary.py (.../trunk) (revision 124658) > > @@ -13,14 +13,19 @@ > > > > ############################################################################## > > """Vocabulary support for schema. > > """ > > +try: > > + from collections import OrderedDict > > +except: > > Should be 'except ImportError:'. Fixed. > > + from ordereddict import OrderedDict > > + > > from zope.interface.declarations import directlyProvides, implementer > > from zope.schema.interfaces import ValidationError > ... > > +@implementer(ITreeVocabulary) > > +class TreeVocabulary(object): > > + """ Vocabulary that relies on a tree (i.e nested) structure. > > + """ > > + # The default implementation uses a dict to create the tree structure. > > This > > + # can however be overridden in a subclass by any other > > IEnumerableMapping > > + # compliant object type. Python 2.7's OrderableDict for example. > > Python 2.7 doesn't have an OrderableDict, does it? Typo? Yes, typo. Fixed. > > + terms_factory = OrderedDict > ... > > > Index: src/zope/schema/tests/test_vocabulary.py > > =================================================================== > > --- src/zope/schema/tests/test_vocabulary.py (.../tags/4.0.1) > > (revision 124658) > > +++ src/zope/schema/tests/test_vocabulary.py (.../trunk) > > (revision 124658) > > @@ -15,9 +15,15 @@ > > """ > > import unittest > > > > +try: > > + from collections import OrderedDict > > +except: > > Should be 'except ImportError:'. Fixed. > > + from ordereddict import OrderedDict > > + > > from zope.interface.verify import verifyObject > > from zope.interface.exceptions import DoesNotImplement > > from zope.interface import Interface, implementer > > +from zope.interface.common.mapping import IEnumerableMapping > > > > from zope.schema import interfaces > > from zope.schema import vocabulary Thanks for the review. I've committed my changes and ran the tests with Python 2.6 and 2.7. I don't have Python 3.x handy but will compile the latest and test with that as well. JC _______________________________________________ Zope-Dev maillist - Zope-Dev@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 )