[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