[Python-Dev] Pathlib enhancements - acceptable inputs and outputs for fspath and os.fspath() (original) (raw)
Nick Coghlan ncoghlan at gmail.com
Fri Apr 15 06:16:53 EDT 2016
- Previous message (by thread): [Python-Dev] Pathlib enhancements - acceptable inputs and outputs for __fspath__ and os.fspath()
- Next message (by thread): [Python-Dev] Pathlib enhancements - acceptable inputs and outputs for __fspath__ and os.fspath()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 15 April 2016 at 00:52, Stephen J. Turnbull <stephen at xemacs.org> wrote:
Nick Coghlan writes:
> The use case for returning bytes from fspath is DirEntry, so you > can write things like this in low level code: > > def myscandir(dirpath): > for entry in os.scandir(dirpath): > if entry.isfile(): > with open(entry) as f: > # do something Excuse me, but that is not a use case for returning bytes from DirEntry.fspath. open() is perfectly happy taking str (including surrogate-encoded rawbytes).
That results in a different type for the file object's name:
open("README.md").name 'README.md' open(b"README.md").name b'README.md'
Implicitly level shifting in a low level API isn't a good thing, especially when there are idempotent level shifting commands available (so you can always ensure a given value is on the level you expect, even if you don't know which level it was on originally).
I completely agree with you that folks working with text in the binary domain are asking for trouble, but at the same time, that's the reality of the way a lot of *nix system interfaces operate. The guarantee we want to provide those folks is that if they're operating in the binary domain they'll stay there unless they explicitly shift out of it using a decoding API of some kind - doing it behind their back would be akin to implicitly shifting from the time domain to the frequency domain in an engineering library.
Cheers, Nick.
-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
- Previous message (by thread): [Python-Dev] Pathlib enhancements - acceptable inputs and outputs for __fspath__ and os.fspath()
- Next message (by thread): [Python-Dev] Pathlib enhancements - acceptable inputs and outputs for __fspath__ and os.fspath()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]