Re: Python 3.3 port of zope.configuration

Brian Sutherland <[email protected]>
Newsgroups gmane.comp.web.zope.devel
Message-ID <[email protected]>
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          [email protected]
> 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  -  [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 )

-- 
Brian Sutherland
_______________________________________________
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 )
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.