classification
Title: os.fspath() should not use repr() on error
Type: behavior Stage: resolved
Components: Library (Lib) Versions: Python 3.6
process
Status: closed Resolution: out of date
Dependencies: Superseder:
Assigned To: Nosy List: Jelle Zijlstra, SilentGhost, berker.peksag, ethan.furman
Priority: normal Keywords: patch

Created on 2016-06-05 16:58 by Jelle Zijlstra, last changed 2016-10-06 11:09 by berker.peksag. This issue is now closed.

Files
File name Uploaded Description Edit
fspath-exception.patch Jelle Zijlstra, 2016-06-05 17:03
Messages (4)
msg267432 - (view) Author: Jelle Zijlstra (Jelle Zijlstra) * (Python triager) Date: 2016-06-05 16:58
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
msg267519 - (view) Author: SilentGhost (SilentGhost) * (Python triager) Date: 2016-06-06 06:50
This is behaviour introduced by issue 25548, it would make sense to me to discuss this problem there if you think it's necessary. repr in error messages has been a standard approach in Python for a very long time, however.
msg267529 - (view) Author: Jelle Zijlstra (Jelle Zijlstra) * (Python triager) Date: 2016-06-06 13:55
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>
msg278184 - (view) Author: Berker Peksag (berker.peksag) * (Python committer) Date: 2016-10-06 11:09
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
History
Date User Action Args
2016-10-06 11:09:54berker.peksagsetstatus: open -> closed

superseder: Show the address in the repr for class objects ->
nosy: + berker.peksag
messages: + msg278184

resolution: out of date
type: behavior
2016-06-06 14:02:31Jelle Zijlstralinkissue27231 dependencies
2016-06-06 13:57:15Jelle Zijlstrasetstatus: closed -> open
resolution: not a bug -> (no value)
2016-06-06 13:55:27Jelle Zijlstrasetmessages: + msg267529
2016-06-06 06:50:15SilentGhostsetstatus: open -> closed

superseder: Show the address in the repr for class objects

nosy: + SilentGhost
messages: + msg267519
resolution: not a bug
stage: resolved
2016-06-05 17:03:14Jelle Zijlstrasetfiles: - fspath-exception.patch
2016-06-05 17:03:04Jelle Zijlstrasetfiles: + fspath-exception.patch
2016-06-05 16:58:05Jelle Zijlstracreate