Wichert Akkerman schreef op 01-07-15 om 06:08:
On 01 Jul 2015, at 04:45, Reinout van Rees<rein...@vanrees.org>  wrote:
>And I've fixed several issues dealing with non-ascii filenames. Apparently, if 
you install pyramid (for instance), buildout will fail to run. Apparently it is 
enough to install something like mr.bob to break buildout totally. It is now fixed 
inhttps://github.com/buildout/buildout/pull/250
That change looks wrong to me. Why would os.walk() need unicode on Python 2? 
One of the really nice things about Python 2 is that you can do not need to 
pretend filenames are unicode. I suspect the real problem there is that you are 
somehow getting a unicode component in a path/dirnames, which you should not do 
on Python 2.
Your comment made me re-visit my fix. You're right that it normally should work. I did some more pdb'ing, now with the assumption that there must be something else that's wrong that I overlooked. Bingo!

Turns out the actual problem is the .encode() that happens before the hash gets updated.
A hash needs bytecode, not unicode. Thus the .encode().
But on python 2, it is already bytecode.
And on python 2 the .encode() raises the unicode error when there are non-ascii characters.

Solution: a small if statement that only calls .encode() when it is unicode.

See https://github.com/buildout/buildout/pull/252

Can you look at that one?


Reinout

--
Reinout van Rees                          http://reinout.vanrees.org/
rein...@vanrees.org                   http://www.nelen-schuurmans.nl/
"Learning history by destroying artifacts is a time-honored atrocity"


_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
https://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to