[Numpy-discussion] py3k.os_fspath enforces inconsist rules with python3 os.fspath

Stuart Reynolds stuart at stuartreynolds.net
Mon Jan 14 19:28:08 EST 2019

After a recent upgrade of numpy (1.13.1 -> 1.6.0), my code is failing where
I provide unicode objects as filenames.
Previously they were allowed. Now that are not, and I *must* provide a
(py2) str or bytearray only.

# str is OK
$ python2.7 -c "from numpy.compat import py3k; print py3k.os_fspath('123')"

# unicode is not
$ python -c "from numpy.compat import py3k; print py3k.os_fspath(u'123')"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/numpy/compat/py3k.py", line
237, in os_fspath
    "not " + path_type.__name__)
TypeError: expected str, bytes or os.PathLike object, not unicode

But this enforcement of "str, bytes or os.PathLike" comes from:
where in Python 3 str is a unicode, and moreover, os.fspath allows

$ python3 -c "import os; print(os.fspath(u'123'))"   # unicode str
$ python3 -c "import os; print(os.fspath('123'))"   # also unicode str

.... so...  shouldn't py3k.os_fspath allow py2 unicode obejcts.

- Stu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20190114/afd003c4/attachment.html>

More information about the NumPy-Discussion mailing list