[Python-Dev] pathlib - current status of discussions
Michael Mysinger
cybersol at yahoo.com
Thu Apr 14 03:03:00 EDT 2016
Brett Cannon <brett <at> python.org> writes:
> https://gist.github.com/brettcannon/b3719f54715787d54a206bc011869aa1 has
the four potential approaches implemented (although it doesn't follow the
"separate functions" approach some are proposing and instead goes with the
allow_bytes approach I originally proposed).
>
Thanks Brett, it is definitely a start! Maybe I am just more unimaginative
than most, but since interoperability is the goal, I would ideally be able
to play with a full implementation where all the stdlib functions Nick
originally mentioned accepted these "rich path" objects.
However, for concrete example purposes, maybe it is sufficient to start with
your fspath function, a toy RichPath class implementing __fspath__, and
something like os.path.join, which is a meaty enough example to test some of
the functionality. I posted a gist of a string only example at
https://gist.github.com/mmysinger/0b5ae2cfb866f7013c387a2683c7fc39
After playing with and considering the 4 possibilities, anything where
__fspath__ can return bytes seems like insanity that flies in the face of
everything Python 3 is trying to accomplish. In particular, one RichPath
class might return bytes and another str, or even worse the same class might
sometimes return bytes and sometimes str. When will os.path.join blow up due
to mixing bytes and str and when will it work in those situations? So for me
that eliminates #3 and #4.
Also the version #2 accepting bytes in os.fspath felt like it could be a
very minor convenience, but even the str only version #1 is just requires
one isinstance check in the rare case you need to also deal with bytes (see
the os.path.join example in the gist above). So I lean toward the str only
#1 version.
In any case I would start with the strict str only full implementation and
loosen it either in 3.6 or 3.7 depending on what people think after actually
using it.
More information about the Python-Dev
mailing list