mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
gh-85567: Register a cleanup function to close files for FileType objects in argparse (#32257)
* bpo-41395: Register a cleanup function to close files for FileType objects in argparse * Added import as top level import, and renamed file as fh.
This commit is contained in:
parent
7173fd5de0
commit
328dbc051f
3 changed files with 11 additions and 3 deletions
|
@ -84,7 +84,7 @@ __all__ = [
|
||||||
'ZERO_OR_MORE',
|
'ZERO_OR_MORE',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
import atexit as _atexit
|
||||||
import os as _os
|
import os as _os
|
||||||
import re as _re
|
import re as _re
|
||||||
import sys as _sys
|
import sys as _sys
|
||||||
|
@ -1268,8 +1268,12 @@ class FileType(object):
|
||||||
|
|
||||||
# all other arguments are used as file names
|
# all other arguments are used as file names
|
||||||
try:
|
try:
|
||||||
return open(string, self._mode, self._bufsize, self._encoding,
|
fh = open(string, self._mode, self._bufsize, self._encoding, self._errors)
|
||||||
self._errors)
|
|
||||||
|
# Register cleanup function to close file
|
||||||
|
_atexit.register(fh.close)
|
||||||
|
|
||||||
|
return fh
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
args = {'filename': string, 'error': e}
|
args = {'filename': string, 'error': e}
|
||||||
message = _("can't open '%(filename)s': %(error)s")
|
message = _("can't open '%(filename)s': %(error)s")
|
||||||
|
|
|
@ -313,6 +313,7 @@ Nicolas Chauvat
|
||||||
Jerry Chen
|
Jerry Chen
|
||||||
Michael Chermside
|
Michael Chermside
|
||||||
Ingrid Cheung
|
Ingrid Cheung
|
||||||
|
Adam Chhina
|
||||||
Terry Chia
|
Terry Chia
|
||||||
Albert Chin-A-Young
|
Albert Chin-A-Young
|
||||||
Adal Chiriliuc
|
Adal Chiriliuc
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
FileType objects from argparse may not be closed and lead to
|
||||||
|
ResourceWarning. Register a file.close function with atexit for FileType
|
||||||
|
objects to ensure they are closed. Patch Contributed by Adam Chhina.
|
Loading…
Add table
Add a link
Reference in a new issue