[Python-3000] basestring removal, __file__ and co_filename

Guido van Rossum guido at python.org
Thu Oct 11 20:23:22 CEST 2007


On 10/11/07, Christian Heimes <lists at cheimes.de> wrote:
> Guido van Rossum wrote:
> > Um, where does the filename object in that expression come from? It
> > appears to be a PyString object. Who created it? That could should be
> > changed to create a PyUnicode instead (using the filesystem encoding).
>
> Python/compile.c:makecode()
> filename = PyString_FromString(c->c_filename);
>
> Modules/pyexpat.c:getcode()
> filename = PyString_FromString(__FILE__);
>
> Objects/codeobject.c:code_new()
> PyArg_ParseTuple(args, "iiiiiSO!O!O!SSiS|O!O!:code"
>
> As I tried to explain earlier that may be a problem. PyUnicode_Decode()
> doesn't work so early. The codecs package isn't initialized yet.

But some codecs are "built-in" and have custom APIs. I wonder if we
could do something that figures out the default fs encoding, and see
if it is one of the supported ones, and then uses that; otherwise
tries UTF-8 with the "replace" error handling option (so it won't fail
if the data is non-UTF-8).

-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-3000 mailing list