I see this whole discussion breaking down into a
few groups which changes what gets done upfront and what might
be done farther down the line:
- Maximum acceptance: do whatever we can to make all
representation of paths just work, which means making
all places working with a path in the stdlib accept path
objects, str, and bytes.
- Safely use path objects: __fspath__() is there to
signal an object is a file system path and to get back a
lower-level representation so people stop calling str()
on everything, providing some interface signaling that
someone doesn't misuse an object as a path and only
changing path consumptions APIs -- e.g. open() -- and
not path manipulation APIs -- e.g. os.path -- in the
stdlib.
- It ain't worth it: those that would rather just skip
all of this and drop pathlib from the stdlib.