Re: New release for zope.schema

Marius Gedminas <[email protected]>
Newsgroups gmane.comp.web.zope.devel
Message-ID <20120322173931.GC8389@platonas>
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

_______________________________________________
Zope-Dev maillist  -  [email protected]
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 )
signature.asc (application/pgp-signature, 198 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iEYEARECAAYFAk9rY9MACgkQkVdEXeem149LwwCghBYrR2BtgTUW+wlxf4v+1wFp
PKMAn2lSgbJLVBLybH+czcmX3bJ2PVxA
=Tgje
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.