On Thu, May 12, 2016 at 4:20 PM, Nick Coghlan
It's not unusual for me to encounter "POSIX oughtta be enough for anyone" folks that are not yet entirely convinced that bytes-are-not-text, so I'm actually in favour of making the default Python-level API str-only as a healthy nudge away from the "text-is-just-bytes-with-an-encoding!" school of thought.
This was also how I convinced myself about the default str constraint. However, I'm afraid it would be a weak weapon against using bytes paths, since the people using bytes paths would not be likely to call it, regardless of whether it supports bytes or not. The nice thing is that pathlib is str-only and *that* will push people away from bytes paths.
However, in terms of the three groups Brett articulated (maximum flexibility, encouraging cross-platform correctness, and forgetting the whole idea), I'm in both camps 1 & 2 - I work with POSIX enough that I'm entirely on board with the notion that if you're specifically modelling *POSIX* paths, then bytes-with-an-assumed-encoding is frequently a good enough representation, but also deal with other environments (like Windows, the JVM and the CLR) enough to know that that particular representation of filesystem paths breaks down the moment you expand your scope of interest beyond *nix platforms.
I also agree with parts about Brett's "camp 2". -- Koos