Robert Collins added the comment: I think you may need to instrument TemporaryDirectory._cleanup to be sure, but it sounds like its being run twice.
now, you're not using it like a context manager (at least as far as your code shows), so it must be happening from the weakref. https://docs.python.org/3/library/weakref.html#weakref.finalize is the relevant docs for that. The code looks ok as long as finalize triggers once and only once. Perhaps it should call the finalize() rather than manually calling _cleanup, in cleanup, but I don't see that that should make much difference. I would have thought it a deliberate attempt to avoid some bit of code (e.g. the resource warning), but since its a shared helper, thats not it. And finalize._exitfunc looks entirely sane to me. So - I suggest adding a call to print_stack in TemporaryDirectory._cleanup, to see the entire stack, and then hopefully we'll see two such printouts when this error happens, and be able to pinpoint how it's being called twice. ---------- nosy: +rbcollins _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue24699> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com