<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><div>After a recent upgrade of numpy (1.13.1 -> 1.6.0), my code is failing where I provide unicode objects as filenames.</div><div>Previously they were allowed. Now that are not, and I *must* provide a (py2) str or bytearray only.</div><div><br></div><div># str is OK</div><div>$ python2.7 -c "from numpy.compat import py3k; print py3k.os_fspath('123')"</div><div>123</div><div><br></div><div># unicode is not</div><div>$ python -c "from numpy.compat import py3k; print py3k.os_fspath(u'123')"</div><div>Traceback (most recent call last):</div><div>  File "<string>", line 1, in <module></div><div>  File "/usr/local/lib/python2.7/dist-packages/numpy/compat/py3k.py", line 237, in os_fspath</div><div>    "not " + path_type.__name__)</div><div>TypeError: expected str, bytes or os.PathLike object, not unicode</div></div><div><br></div><div>But this enforcement of "str, bytes or os.PathLike" comes from:</div><div>   <a href="https://docs.python.org/3/library/os.html">https://docs.python.org/3/library/os.html</a><br></div><div>where in Python 3 str is a unicode, and moreover, os.fspath allows </div><div><br></div><div>$ python3 -c "import os; print(os.fspath(u'123'))"   # unicode str</div><div>123</div><div><div>$ python3 -c "import os; print(os.fspath('123'))"   # also unicode str</div><div>123</div></div><div><br></div><div>.... so...  shouldn't py3k.os_fspath allow py2 unicode obejcts.</div><div><br></div><div>- Stu</div></div></div></div></div>