Re: [Distutils] unicode bug in distutils

2007-02-24 Thread Phillip J. Eby
At 02:47 PM 2/24/2007 -0600, Tarek Ziadé wrote:
>I have created a setup.py file for  distirbution and I bumped into
>a small bug when i tried to set my name in the contact field (Tarek Ziadé)
>
>Using string (utf8 file):
>
>setup(
>   maintainer="Tarek Ziadé"
>)
>
>leads to:
>
>   File ".../lib/python2.5/distutils/command/register.py", line 162, in 
> send_metadata
> auth)
>   File ".../lib/python2.5/distutils/command/register.py", line 257, in 
> post_to_server
> value = unicode(value).encode("utf-8")
>UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 10: 
>ordinal not in range(128)
>
>
>Using unicode:
>
>setup(
>   maintainer=u"Tarek Ziadé"
>)
>
>leads to:
>
>   File ".../lib/python2.5/distutils/dist.py", line 1094, in write_pkg_file
> file.write('Author: %s\n' % self.get_contact() )
>UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in 
>position 18: ordinal not in range(128)
>
>I would propose a patch for this problem but i don't know what would be 
>the best input (i guess unicode
>  for names)


At 05:45 PM 2/24/2007 -0500, Tres Seaver wrote:
>Don't you still need to tell Python about the encoding of your string
>literals [1] [2] ?  E.g.::

That's not the problem, it's that the code that writes the PKG-INFO file 
doesn't handle Unicode.  See 
distutils.dist.DistributionMetadata.write_pkg_info().  It needs to use a 
file with encoding support, if it's doing unicode

However, there's currently no standard, as far as I know, for what encoding 
the PKG-INFO file should use.  Meanwhile, the 'register' command accepts 
Unicode, but is broken in handling it.

Essentially, the problem is that Python 2.5 broke this by adding a unicode 
*requirement* to the "register" command.  Previously, register simply sent 
whatever you gave it, and the PKG-INFO writing code still 
does.  Unfortunately, this means that there is no longer any one value that 
you can use for your name that will be accepted by both "register" and 
anything that writes a PKG-INFO file.

Both register and write_pkg_info() are arguably broken here, and should be 
able to work with either strings or unicode, and degrade gracefully in the 
event of non-ASCII characters in a string.  (Because even though "register" 
is only run by the package's author, users may run other commands that 
require a PKG-INFO, so a package prepared using Python <2.5 must still be 
usable with Python 2.5 distutils, and Python <2.5 allows 8-bit maintainer 
names.)

Unfortunately, this isn't fixable until there's a new 2.5.x release.  For 
previous Python versions, both register and write_pkg_info() accepted 8-bit 
strings and passed them on as-is, so the only workaround for this issue at 
the moment is to revert to Python 2.4 or less.

___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] unicode bug in distutils

2007-02-24 Thread Tres Seaver
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Tarek Ziadé wrote:
> On 2/24/07, Paul Pogonyshev <[EMAIL PROTECTED]> wrote:
>> Tarek Ziadé wrote:
>>> I have created a setup.py file for  distirbution and I bumped into
>>> a small bug when i tried to set my name in the contact field (Tarek
>> Ziadé)
>>> Using string (utf8 file):
>>>
>>> setup(
>>>   maintainer="Tarek Ziadé"
>>> )
>> How about maintainer = u"Tarek Ziadé"?
> 
> 
> see second part of my message:
> 
> Using unicode:
> 
> setup(
>   maintainer=u"Tarek Ziadé"
> )
> 
> leads to:
> 
>   File 
> "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/distutils/dist.py",
> line 1094, in write_pkg_file
> file.write('Author: %s\n' % self.get_contact() )
> UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position
> 18: ordinal not in range(128)

Don't you still need to tell Python about the encoding of your string
literals [1] [2] ?  E.g.::

 # -*- coding: utf-8 -*-
 #vim:fileencoding=utf-8 -*-
 print "Tarek Ziadé"


[1] http://docs.python.org/ref/encodings.html#encodings
[2] http://docs.python.org/ref/strings.html



Tres.
- --
===
Tres Seaver  +1 540-429-0999  [EMAIL PROTECTED]
Palladion Software   "Excellence by Design"http://palladion.com
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.2.2 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFF4MAS+gerLs4ltQ4RAn2FAJ0XLaZOuOaAjLpOygBXx3MmxWnY5ACgpWlw
xTllHr/4WeIq1fU74rXcuqg=
=Cam9
-END PGP SIGNATURE-
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] unicode bug in distutils

2007-02-24 Thread Tarek Ziadé

On 2/24/07, Paul Pogonyshev <[EMAIL PROTECTED]> wrote:


Tarek Ziadé wrote:
> I have created a setup.py file for  distirbution and I bumped into
> a small bug when i tried to set my name in the contact field (Tarek
Ziadé)
>
> Using string (utf8 file):
>
> setup(
>   maintainer="Tarek Ziadé"
> )

How about maintainer = u"Tarek Ziadé"?



see second part of my message:

Using unicode:

setup(
 maintainer=u"Tarek Ziadé"
)

leads to:

 File 
"/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/distutils/dist.py",
line 1094, in write_pkg_file
   file.write('Author: %s\n' % self.get_contact() )
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position
18: ordinal not in range(128)


Tarek

Paul






--
Tarek Ziadé | Association AfPy | www.afpy.org
Blog FR | http://programmation-python.org
Blog EN | http://tarekziade.wordpress.com/
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] unicode bug in distutils

2007-02-24 Thread Paul Pogonyshev
Tarek Ziadé wrote:
> I have created a setup.py file for  distirbution and I bumped into
> a small bug when i tried to set my name in the contact field (Tarek Ziadé)
> 
> Using string (utf8 file):
> 
> setup(
>   maintainer="Tarek Ziadé"
> )

How about maintainer = u"Tarek Ziadé"?

Paul
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig