[Zope-dev] Python 3.3 port of zope.configuration
Brian Sutherland
brian at vanguardistas.net
Thu Apr 26 17:50:55 UTC 2012
On Thu, Apr 26, 2012 at 12:06:13PM -0400, Tres Seaver wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 04/26/2012 04:39 AM, Brian Sutherland wrote:
> > On Thu, Apr 12, 2012 at 07:37:46PM -0400, Tres Seaver wrote:
> >> Also, do your branches still pass tests on 3.2.x? I'm sort of keen
> >> to see both zope.schema and zope.configuration join the "2to3-free"
> >> camp with zope.event, zope.interface, zope.i18nmessageid, and
> >> zope.exceptions (yes, zope.configuration, I'm looking at you next).
> >
> > I see you've started doing this in a better and more rigorous way than
> > I was. So I'm going to abandon my plans to merge in favour of your
> > branches.
> >
> > I'd still urge you to have a look at my zope.schema branch, which I
> > think solves a real problem with URI fields and Python 3. The patch
> > is pretty small.
>
> My zope.schema branch is largely focused on improving the unittest
> coverage, while also making the package work with Python 3.2 (i.e., not
> relying on 3.3's restoration of unicode literals).
>
> I would be glad to look at your branch; I had already considered making
> the "native string" fields APIs. I'm not sure that I agree that the
> ASCII / URI / Id / DottedName fields should have native string as its
> type: can you help by elaborating there?
For DottedName we're basically forced to use native strings as you can
import modules with unicode names on python 3:
>>> from 漢語 import Español
>>> print(Español)
<class '漢語.Español'>
Id is either a URI or a DottedName. So it must, like DottedName, also be
a native string.
As for URI, python 3 library functions seem to not care, so we can
choose either:
>>> from urllib.parse import urlparse
>>> urlparse('http://www.example.com/unicode')
ParseResult(scheme='http', netloc='www.example.com', path='/unicode', params='', query='', fragment='')
>>> urlparse(b'http://www.example.com/bytes')
ParseResultBytes(scheme=b'http', netloc=b'www.example.com', path=b'/bytes', params=b'', query=b'', fragment=b'')
But, for consistency's sake, URI, Id and DottedName should be the same.
That makes the best choice for URI a native string.
Another more practical argument is that having URI be a "native string"
made the porting of zope.configuration to python 3 much easier. There
were a few nasty bugs when trying it with URI as bytes.
I have no strong argument for ASCII.
FWIW, here's the original discussion on porting zope.schema:
https://mail.zope.org/pipermail/zope-dev/2011-October/043540.html
> (Also, looks like we should
> promote the 'INativeString' interface to an API).
+1
>
>
> Tres.
> - --
> ===================================================================
> Tres Seaver +1 540-429-0999 tseaver at palladion.com
> Palladion Software "Excellence by Design" http://palladion.com
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iEYEARECAAYFAk+ZcnUACgkQ+gerLs4ltQ4BWgCg0YOBWiGBJt8UIgBYG1F/sqsh
> qqoAoI6H77dS3EOOYFnOiQgEP6jddsNB
> =0Xwc
> -----END PGP SIGNATURE-----
>
> _______________________________________________
> Zope-Dev maillist - Zope-Dev at 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 )
--
Brian Sutherland
More information about the Zope-Dev
mailing list