Andrew Scheller <launch...@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@python
components: +Documentation
nosy: +docs@python, lurchman
versions: +Python 2.7, Python 3.5, Python 3.6, Python 3.8, Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue34446>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to