On Thu, May 12, 2016 at 10:18 AM, Brett Cannon <br...@python.org> wrote:
> > On Thu, 12 May 2016 at 09:25 Guido van Rossum <gu...@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)
_______________________________________________ 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