Re: [Python-Dev] pathlib - current status of discussions

On Apr 13, 2016 19:06, Brett Cannon <brett@python.org> wrote:
On Wed, 13 Apr 2016 at 15:46 Nikolaus Rath <Nikolaus@rath.org> wrote:
When passing an object that is of type str and has a __fspath__ attribute, all approaches return the value of __fspath__().
However, when passing something of type bytes, the second approach returns the object, while the third returns the value of __fspath__().
Is this intentional? I think a __fspath__ attribute should always be preferred.
It's very much intentional. If we define __fspath__() to only return strings but still want to minimize boilerplate of allowing bytes to simply pass through without checking a path argument to see if it is bytes then approach #2 is warranted. But if __fspath__() can return bytes then approach #3 allows for it.
Er, the difference comes in when the object passed to os.fspath is a subclass of bytes that, itself, has a __fspath__ method (which may return a str). It's unlikely to occur in the wild, but is a semantic difference between this case and all other objects with __fspath__ methods.
participants (1)
-
Random832