[Zope-dev] New release for zope.schema

Jan-Carel Brand lists at opkode.com
Thu Mar 22 11:19:39 UTC 2012


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



More information about the Zope-Dev mailing list