On 04/14/2016 05:16 AM, Victor Stinner wrote: > I consider that the final goal of the whole discussion is to support > something like: > > path = os.path.join(pathlib_path, "str_path", direntry) > > Even if direntry uses a bytes filename. I expect genericpath.join() to > be patched to use os.fspath(). If os.fspath() returns bytes, > path.join() will fail with an annoying TypeError. > > I expect that DirEntry.__fspath__ uses os.fsdecode() to return str, > just to make my life easier. This would be where we strongly disagree. If pathlib, as a high-level construct, wants to take that approach I have no issues, but the functions in os are low-level and as such should not be changing data types unless I ask for it. I see __fspath__ as a retrieval mechanism, not a data-transformation mechanism. > You can apply the same rationale for the flavors 2 and 3 > (os.fspath(path, allow_bytes=True)). Indirectly, you will get similar > TypeError on os.path.join(). And that's fine. Low-level interfaces should not change data types unless explicitly requested -- and we have fsencode() and fsdecode() for that. -- ~Ethan~
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4