On 04/13/2016 07:57 PM, Nikolaus Rath wrote:
On Apr 13 2016, Ethan Furman wrote:
On 04/13/2016 03:45 PM, Nikolaus Rath wrote:

When passing an object that is of type str and has a __fspath__
attribute, all approaches return the value of __fspath__().

However, when passing something of type bytes, the second approach
returns the object, while the third returns the value of __fspath__().

Is this intentional? I think a __fspath__ attribute should always be
preferred.

Yes, it is intentional.  The second approach assumes __fspath__ can
only contain str, so there is no point in checking it for bytes.

Either I haven't understood your answer, or you haven't understood my
question. I'm concerned about this case:

   class Special(bytes):
       def __fspath__(self):
         return 'str-val'
   obj = Special('bytes-val', 'utf8')
   path_obj = fspath(obj, allow_bytes=True)

With #2, path_obj == 'bytes-val'. With #3, path_obj == 'str-val'.

I misunderstood your question.  That is... an interesting case.  ;)

--
~Ethan~

_______________________________________________
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