◐ Shell
clean mode source ↗

Issue 27232: os.fspath() should not use repr() on error

The current implementation of os.fspath() outputs something like this if you call os.fspath(0):

expected str, bytes or os.PathLike object, not <class 'int' at 0x10a3f3e50>

This patch changes the output to:

expected str, bytes or os.PathLike object, not int
No, that issue just adds the address to the repr() of types. It is not normal to use repr for type objects in error messages:

>>> int(None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
>>> open(None, 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: open() argument 2 must be str, not int
>>> os.fspath(None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: expected str, bytes or os.PathLike object, not <class 'NoneType' at 0x1086bb638>
This has already been fixed in ea7b6a7827a4:

    >>> import os
    >>> os.fspath(None)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: expected str, bytes or os.PathLike object, not NoneType