[Python-Dev] Pathlib enhancments - method name only (original) (raw)
Nick Coghlan ncoghlan at gmail.com
Sun Apr 10 02:43:16 EDT 2016
- Previous message (by thread): [Python-Dev] Pathlib enhancments - method name only
- Next message (by thread): [Python-Dev] Pathlib enhancments - method name only
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 10 April 2016 at 15:58, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
Brett Cannon wrote:
Depends if you use
/
or\
as your path separator Or whether your pathnames look entirely different, e.g VMS: device:[topdir.subdir.subsubdir]filename.ext;version Pathnames are very much OS-dependent in both syntax and semantics. Even the main two in use today (unix and windows) can't be mapped directly onto each other, because windows has drive letters and unix doesn't.
This does raise a concrete API design question: how should PurePath.fspath behave when called on a mismatched OS?
For PurePath vs Path, the latter raises NotImplementedError if you try to create a concrete path that doesn't match the running system:
pathlib.PureWindowsPath(".") PureWindowsPath('.') pathlib.WindowsPath(".") Traceback (most recent call last): File "", line 1, in File "/usr/lib64/python3.4/pathlib.py", line 910, in new % (cls.name,)) NotImplementedError: cannot instantiate 'WindowsPath' on your system
The question we need to address is what happens if you do:
os.fspath(pathlib.PureWindowsPath("."))
on a *nix system?
Similar to my proposal for dealing with DirEntry.path being a bytes-like object, I'd like to suggest raising TypeError in fspath if the request is nonsensical for the currently running system - *nix systems can manipulate Windows paths (and vice-versa), but actually trying to use them with the local filesystem isn't going to work properly, since the syntax and semantics are different.
os.fspath(pathlib.WindowsPath(".")) Traceback (most recent call last): ... TypeError: cannot render 'PureWindowsPath' as filesystem path on 'posix' system
(I'm also suggesting replacing "your" with the value of os.name)
Cheers, Nick.
-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
- Previous message (by thread): [Python-Dev] Pathlib enhancments - method name only
- Next message (by thread): [Python-Dev] Pathlib enhancments - method name only
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]