On Tue, 19 Apr 2016 at 15:22 Eric Snow <ericsnowcurren...@gmail.com> wrote:
> On Tue, Apr 19, 2016 at 10:50 AM, Brett Cannon <br...@python.org> wrote: > > Ah, but you see that doesn't make porting easy. If I have a bunch of > > path-manipulating code using os.path already and I want to add support > for > > pathlib I can either (a) rewrite all of that path-manipulating code to > work > > using pathlib, or (b) simply call `path = os.fspath(path)` and be done > with > > it. Basically if you have written any code that uses os.path then you > will > > have to care about (a) or (b) as a way to add support for pathlib short > of > > the `str(path)` hack we're all working to get away from. And if people > truly > > liked option (a) then this conversation wouldn't be such a big deal as we > > would have seen more people using pathlib already (yes, the provisional > tag > > may have scared some off, but my guess is it's more from not wanting to > > rewrite os.path-using code). > > > > Now if you can convince me that the use of bytes paths is very minimal > and > > thus people doing path manipulations with them will be a very small > minority > > then I'm happy to try and use this to keep pushing people towards > avoiding > > bytes for file paths. But over the years people such as yourself, > Stephen, > > have convinced me that people do some really crazy stuff with their file > > systems and that it isn't isolated to just one or two people. And so it > > becomes this situation where we need to ask ourselves if we are going to > > tell them to just deal with it or help them transition. > > > > The other way to convince me is that people needing to support older > > versions of Python will use `path = path.__fspath__() if hasattr(path, > > '__fspath__') else path` and that allowing bytes with that idiom is > going to > > cost them dearly. My current assumption is that it won't because people > > using that idiom are using os.path and those functions will complain when > > mixing str and bytes together, but I'm open to being convinced otherwise. > > > > I guess what I'm trying to get at is that I understand the desire to get > > people to get the bytes path habit, but to me the best way will be to get > > people quickly and easily transitioned over to pathlib as a carrot rather > > than using the lack of bytes path support in this transition as a stick. > > Perhaps I missed previous discussion on the point, but why not support > both __fspath__() -> str and __fssyspath__() -> bytes? Returning > NotImplemented would indicate "try the other one". For example, > DirEntry.__fspath__() would return NotImplemented when the underlying > value is bytes and vice-versa. > It was deemed more complexity than necessary for the protocol to have two functions. Either __fspath__ will be polymorphic or it will only return str.
_______________________________________________ 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