[Python-Dev] file system path protocol PEP (original) (raw)

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