From: Elvis Pranskevichus Date: Mon, 9 Oct 2017 14:55:54 +0000 (-0400) Subject: bpo-31681: Make sure pkgutil.get_data closes files properly (#3875) X-Git-Tag: v2.7.15rc1~173 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cfe1aefcbd2534ddc1059a7332842644e6c8d1e4;p=python bpo-31681: Make sure pkgutil.get_data closes files properly (#3875) Also remove an obsolete note about backward compat with old Pythons. --- diff --git a/Lib/pkgutil.py b/Lib/pkgutil.py index ce072ec9ef..68ca72b0e4 100644 --- a/Lib/pkgutil.py +++ b/Lib/pkgutil.py @@ -1,8 +1,5 @@ """Utilities to support packages.""" -# NOTE: This module must remain compatible with Python 2.3, as it is shared -# by setuptools for distribution with Python 2.3 and up. - import os import sys import imp @@ -252,7 +249,8 @@ class ImpLoader: return mod def get_data(self, pathname): - return open(pathname, "rb").read() + with open(pathname, "rb") as file: + return file.read() def _reopen(self): if self.file and self.file.closed: diff --git a/Misc/NEWS.d/next/Library/2017-10-03-15-41-08.bpo-31681.sOJMKV.rst b/Misc/NEWS.d/next/Library/2017-10-03-15-41-08.bpo-31681.sOJMKV.rst new file mode 100644 index 0000000000..b6fc781dcf --- /dev/null +++ b/Misc/NEWS.d/next/Library/2017-10-03-15-41-08.bpo-31681.sOJMKV.rst @@ -0,0 +1 @@ +Fix pkgutil.get_data to avoid leaking open files.