]> granicus.if.org Git - python/commitdiff
Issue #18394: Document that cgi.FieldStorage now cleans up after its
authorBrett Cannon <brett@python.org>
Fri, 17 Jan 2014 16:03:19 +0000 (11:03 -0500)
committerBrett Cannon <brett@python.org>
Fri, 17 Jan 2014 16:03:19 +0000 (11:03 -0500)
'file' attribute properly in Python 3.4.

Thanks to Marcel Hellkamp for pointing out the oversight.

Doc/library/cgi.rst
Doc/whatsnew/3.4.rst

index c4e7c60539b2054028b6d84ad66ae320cb12cf17..fa131453c790b8f6eeec104f58816824c34e1923 100644 (file)
@@ -142,9 +142,11 @@ If a field represents an uploaded file, accessing the value via the
 method reads the entire file in memory as bytes.  This may not be what you
 want.  You can test for an uploaded file by testing either the
 :attr:`~FieldStorage.filename` attribute or the :attr:`~FieldStorage.file`
-attribute.  You can then read the data at leisure from the :attr:`!file`
-attribute (the :func:`~io.RawIOBase.read` and :func:`~io.IOBase.readline`
-methods will return bytes)::
+attribute.  You can then read the data from the :attr:`!file`
+attribute before it is automatically closed as part of the garbage collection of
+the :class:`FieldStorage` instance
+(the :func:`~io.RawIOBase.read` and :func:`~io.IOBase.readline` methods will
+return bytes)::
 
    fileitem = form["userfile"]
    if fileitem.file:
@@ -176,6 +178,11 @@ actually be instances of the class :class:`MiniFieldStorage`.  In this case, the
 A form submitted via POST that also has a query string will contain both
 :class:`FieldStorage` and :class:`MiniFieldStorage` items.
 
+.. versionchanged:: 3.4
+   The :attr:`~FieldStorage.file` attribute is automatically closed upon the
+   garbage collection of the creating :class:`FieldStorage` instance.
+
+
 Higher Level Interface
 ----------------------
 
index 6ace6d6cd471d0f3899ad0cdbd9b898c674e4b58..a5bbdf029ebb9b923b1cf7221d429a9281a19ead 100644 (file)
@@ -1560,6 +1560,13 @@ Changes in the Python API
   :issue:`18011`.)  Note: this change was also inadvertently applied in Python
   3.3.3.
 
+* The :attr:`~cgi.FieldStorage.file` attribute is now automatically closed when
+  the creating :class:`cgi.FieldStorage` instance is garbage collected. If you
+  were pulling the file object out separately from the :class:`cgi.FieldStorage`
+  instance and not keeping the instance alive, then you should either store the
+  entire :class:`cgi.FieldStorage` instance or read the contents of the file
+  before the :class:`cgi.FieldStorage` instance is garbage collected.
+
 
 Changes in the C API
 --------------------