Fix API.request_url() with Py3.13 (#208)
Since Python 3.13, the IOBase finalizer now logs any errors raised by the close() method https://docs.python.org/3/whatsnew/3.13.html#io
According to
https://docs.python.org/3.13/library/io.html#io.IOBase.close
if the file (descriptor) is accessed after being close,
ValueError
is raised.
The fd
is copied with copy.copy()
.
Both gets automatically closed once the function ends,
the second can’t close a second time the same fd,
that’s why we get this error.
Reorganise complex function: don’t use with
since the function is designed to allow returning the fd.
Drop copy.copy()
used previously to return the fd, causing the issue.
Cleanly separate three return types and function’s returns.
Close #208 (closed).
Edited by Moul