[Zope-dev] Python 3.3 port of zope.configuration
Tres Seaver
tseaver at palladion.com
Thu Apr 26 18:34:50 UTC 2012
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 04/26/2012 01:50 PM, Brian Sutherland wrote:
> On Thu, Apr 26, 2012 at 12:06:13PM -0400, Tres Seaver wrote: 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
Thanks very much for the explanation. I will plan to merge in your
changes in my branch ASAP.
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+ZlUoACgkQ+gerLs4ltQ7HkwCfetRH32lexokm3HcnBr1WqQNO
UtIAn1IXq0GTF8BJw5xIm/F76qjZEuwn
=QU44
-----END PGP SIGNATURE-----
More information about the Zope-Dev
mailing list