I see this as a parallel to the question of `pathlib.PurePath.resolve()`, about 
which `pathlib` is (rightly!) very opinionated. Just as `foo/../bar` shouldn't 
resolve to `bar`, `foo/` shouldn't be truncated to `foo`. And if `PurePath` 
doesn't do this, `Path` shouldn't either, because the difference between a 
`Path` and a `PurePath` is the availability of filesystem operations, not the 
identities of the objects involved.

On another level, I think that this is a simple decision: `PosixPath` claims 
right there in the name to implement POSIX behavior, and POSIX specifies that 
`foo` and `foo/` refer (in some cases) to different directory entries. 
Therefore, `foo` and `foo/` can't be the same path. Moreover, `PosixPath` 
implements several methods that have the same name as syscalls that POSIX 
specifies to depend on whether their path arguments end in trailing slashes. 
(Even `stat` 
[http://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html], which 
explicitly follows symbolic links regardless of the presence of a trailing 
slash, fails with ENOTDIR if given "path/to/existing/file/".) It feels 
pathological for `pathlib.PosixPath` to be so almost-compliant.

-ijs
_______________________________________________
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

Reply via email to