[issue34446] ambiguous _max_size parameter in SpooledTemporaryFile

Andrew Scheller report at bugs.python.org
Sun Jul 7 11:58:26 EDT 2019


Andrew Scheller <launchpad at loowis.durge.org> added the comment:

I agree that this is ambiguous behaviour. The docs at https://docs.python.org/3/library/tempfile.html#tempfile.SpooledTemporaryFile say "This function operates exactly as TemporaryFile() does, except that data is spooled in memory until the file size exceeds max_size, or until the file’s fileno() method is called, at which point the contents are written to disk and operation proceeds as with TemporaryFile().", and as the default value for max_size is 0, that would imply to me that _any_ data written to a SpooledTemporaryFile (constructed with a max_size of 0) would instantly get (internally) converted to a TemporaryFile.

Whereas looking at the code https://github.com/python/cpython/blob/master/Lib/tempfile.py#L650 it seems a max_size of 0 means "don't rollover". Perhaps it would have made sense to have SpooledTemporaryFile default to a max_size of None (and use that to mean "never rollover") ?

So as well as the inconsistency between rollover behaviour in the write()/writelines() methods and the truncate() method (when max_size is 0) that jcc2220 pointed out, I believe there's also a documentation issue here in that it's not clear what a max_size of 0 is /supposed/ to do.

----------
assignee:  -> docs at python
components: +Documentation
nosy: +docs at python, lurchman
versions: +Python 2.7, Python 3.5, Python 3.6, Python 3.8, Python 3.9

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue34446>
_______________________________________


More information about the Python-bugs-list mailing list