On Apr 13, 2016 19:06, Brett Cannon <br...@python.org> wrote: > On Wed, 13 Apr 2016 at 15:46 Nikolaus Rath <nikol...@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. _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com