[Zope-dev] New release for zope.schema

Jan-Carel Brand lists at opkode.com
Thu Mar 22 18:04:29 UTC 2012


On Thu, 2012-03-22 at 19:39 +0200, Marius Gedminas wrote:
> On Thu, Mar 22, 2012 at 03:27:20PM +0100, Jan-Carel Brand wrote:
> > On Thu, 2012-03-22 at 12:19 +0100, Jan-Carel Brand wrote:
> > > 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.
> > 
> > Ok, I tested zope.schema in python 3.2.2 and there were some errors in
> > test_vocabulary.py that I fixed.
> 
> I'm in awe of your dedication.  I myself don't even know how to run the
> zope.schema testsuite under Python 3:
> 
>     $ python3.2 bootstrap.py 
>       File "bootstrap.py", line 63
>         exec urllib2.urlopen('http://python-distribute.org/distribute_setup.py'
>                    ^
>     SyntaxError: invalid syntax
> 
> Well, ok, I may be exaggerating a bit.
> 
>     $ virtualenv -p python3.2 py32
>     $ py32/bin/python setup.py develop
>     ... this takes a long time... I miss my buildout egg cache ...
>     $ py32/bin/pip install zope.testrunner
>     $ py32/bin/pip install zope.testing  # have to install test extras by hand?
>     $ py32/bin/zope-testrunner --test-path=src
>     ...
>     Ran 255 tests with 1 failures and 0 errors in 0.206 seconds.

lol. Yeah, it took me a while to figure it out as well. 

I instead ran: python setup.py test

That also works.

> > There is however still one more error when testing with Python 3.2.2,
> > but this is related to the IContextSourceBinder validation changes made
> > by rogerineichen.
> > 
> > First the error:
> > 
> > > FAIL: test_validate_source
> > > (zope.schema.tests.test_choice.ContextSourceBinder_ChoiceFieldTests)
> > > ----------------------------------------------------------------------
> > > Traceback (most recent call last):
> > >   File
> > > "/home/jc/dev/python3.2.2/src/zope.schema/src/zope/schema/tests/test_choice.py", line 133, in test_validate_source
> > >     choice = Choice(source=s)
> > >   File
> > > "/home/jc/dev/python3.2.2/src/zope.schema/src/zope/schema/_field.py",
> > > line 281, in __init__
> > >     IContextSourceBinder.providedBy(vocabulary))
> > > AssertionError
> > > 
> > The vocabulary is of type SampleContextSourceBinder from test_choice.py,
> > which does implement IContextSourceBinder.
> > 
> > > class SampleContextSourceBinder(object):
> > >     implements(IContextSourceBinder)
> > >     def __call__(self, context):
> > >         return SampleVocabulary()
> > > 
> > Looking at it in pdb:
> > 
> > > (Pdb) p vocabulary
> > > <zope.schema.tests.test_choice.SampleContextSourceBinder object at
> > > 0x3236310>
> > > (Pdb) pp vocabulary.__provides__.__iro__
> > > (<InterfaceClass zope.interface.Interface>,)
> > > 
> > Just to double-check, I looked at this vocabulary in Python 2.7:
> > 
> > > (Pdb) vocabulary.__provides__.__iro__
> > > (<InterfaceClass zope.schema.interfaces.IContextSourceBinder>,
> > > <InterfaceClass zope.interface.Interface>)
> > > 
> > There it *does* provide IContextSourceBinder.
> > 
> > Any ideas why this vocabulary doesn't provide it in Python 3?
> 
> This smells like a bug in zope.interface, and not in zope.schema:
> 
>     $ py32/bin/python
>     Python 3.2.2 (default, Sep  5 2011, 22:09:30) 
>     [GCC 4.6.1] on linux2
>     Type "help", "copyright", "credits" or "license" for more information.
>     >>> from zope.interface import Interface, implements
>     >>> class IFoo(Interface): pass
>     ... 
>     >>> class Foo(object): implements(IFoo)
>     ... 
>     >>> IFoo.implementedBy(Foo)
>     False
>     >>> IFoo.providedBy(Foo())
>     False
> 
> In other words I don't think it should block the release of zope.schema.

Yeah, as Brian mentioned:
https://bugs.launchpad.net/zope.interface/+bug/911851

Ok, I'll release tomorrow morning when I'm fresh.



More information about the Zope-Dev mailing list