Issue #10093: ResourceWarnings are now issued when files and sockets are

deallocated without explicit closing.  These warnings are silenced by
default, except in pydebug mode.
This commit is contained in:
Antoine Pitrou 2010-10-29 10:38:18 +00:00
parent 9cbdd75ec5
commit e033e06db0
10 changed files with 189 additions and 25 deletions

View file

@ -2946,19 +2946,25 @@ PyInit__elementtree(void)
"class ElementTree(ET.ElementTree):\n" /* public */
" def parse(self, source, parser=None):\n"
" close_source = False\n"
" if not hasattr(source, 'read'):\n"
" source = open(source, 'rb')\n"
" if parser is not None:\n"
" while 1:\n"
" data = source.read(65536)\n"
" if not data:\n"
" break\n"
" parser.feed(data)\n"
" self._root = parser.close()\n"
" else:\n"
" parser = cElementTree.XMLParser()\n"
" self._root = parser._parse(source)\n"
" return self._root\n"
" close_source = True\n"
" try:\n"
" if parser is not None:\n"
" while 1:\n"
" data = source.read(65536)\n"
" if not data:\n"
" break\n"
" parser.feed(data)\n"
" self._root = parser.close()\n"
" else:\n"
" parser = cElementTree.XMLParser()\n"
" self._root = parser._parse(source)\n"
" return self._root\n"
" finally:\n"
" if close_source:\n"
" source.close()\n"
"cElementTree.ElementTree = ElementTree\n"
"def iter(node, tag=None):\n" /* helper */
@ -2988,8 +2994,10 @@ PyInit__elementtree(void)
"class iterparse:\n"
" root = None\n"
" def __init__(self, file, events=None):\n"
" self._close_file = False\n"
" if not hasattr(file, 'read'):\n"
" file = open(file, 'rb')\n"
" self._close_file = True\n"
" self._file = file\n"
" self._events = []\n"
" self._index = 0\n"
@ -3004,6 +3012,8 @@ PyInit__elementtree(void)
" except IndexError:\n"
" if self._parser is None:\n"
" self.root = self._root\n"
" if self._close_file:\n"
" self._file.close()\n"
" raise StopIteration\n"
" # load event buffer\n"
" del self._events[:]\n"