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.

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

Marius Gedminas
-- 
http://pov.lt/ -- Zope 3/BlueBream consulting and development

Attachment: signature.asc
Description: Digital signature

_______________________________________________
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 )

Reply via email to