[Python-Dev] Why does TemporaryDirectory not wait for `__enter__`?
Andreas Stührk
andy-python at hammerhartes.de
Sat Feb 26 15:42:41 CET 2011
Hi
On Sat, Feb 26, 2011 at 12:52 PM, cool-RR <cool-rr at cool-rr.com> wrote:
> I noticed that the `TemporaryDirectory` context manager creates the folder
> on `__init__` rather than on `__enter__`, resulting in complexity, bugs, and
> hackarounds in `__del__`. I assume there's a good reason for this decision.
> What is it?
The reason is that you can use `TemporaryDirectory` without a context
manager too. Note that creating things in `__init__` rather than in
`__enter__` isn't unusual -- it is done in the same way for regular
files. I'm not sure what you mean with "hackarounds in `__del__`", but
I assume you mean the code in `cleanup()`. That code tries to do the
right thing on interpreter shutdown when parts of the interpreter are
already gone and it emits a `ResourceWarning` if called implicitly
(IOW: when you didn't use `TemporaryDirectory` as a context manager
and didn't call its `cleanup()` method). So a bit of complexity is
there, but it really isn't about where the directory is created.
Regards,
Andreas
More information about the Python-Dev
mailing list