[Python-Dev] file system path protocol PEP

Guido van Rossum guido at python.org
Thu May 12 14:35:40 EDT 2016


On Thu, May 12, 2016 at 10:18 AM, Brett Cannon <brett at python.org> wrote:

>
> On Thu, 12 May 2016 at 09:25 Guido van Rossum <guido at python.org> wrote:
>
>> def fspath(p: Union[str, bytes, PathLike]) -> Union[str, bytes]:
>>     if isinstance(p, (str, bytes)):
>>         return p
>>     try:
>>         return p.__fspath__
>>     except AttributeError:
>>         raise TypeError(...)
>>
>
>> Other than that I think the PEP is already in fine shape.
>>
>
> - Bytes: I strongly believe that os.fspath() should be a thin wrapper
> around the __fspath__ protocol, like next() wraps the .__next__ protocol.
> It should not get into bytes vs. string politics. If your app really needs
> strings, call os.fsdecode(). So this is my version (unoptimized):
>
> Just to double-check, did you mean for __fspath__ to only be an attribute
> in your example, or did you leave off the `()` by accident? As of right now
> the PEP is proposing a method for the protocol to follow common practice of
> using methods and in case the representation is not always pre-computed and
> thus not necessarily giving the wrong impression that the attribute access
> is cheap. But admittedly an attribute was previously proposed and there
> wasn't a terribly strong argument against it beyond "we historically
> haven't done it that way", so I'm open to swapping to an attribute if
> that's your preference.
>
>>
Whoops. Didn't mean to change that! Yes, __fspath__ should remain a method.
You can breathe again. :-)

-- 
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20160512/62f6c160/attachment.html>


More information about the Python-Dev mailing list