summaryrefslogtreecommitdiff
path: root/Lib/asyncio/unix_events.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-01-10 11:24:40 +0100
committerGitHub <noreply@github.com>2019-01-10 11:24:40 +0100
commitfb2c3465f09e1f720cdae7eca87d62125a327fd9 (patch)
treea1cfdcf7ea81295f3a955bcdec2275b8e8967965 /Lib/asyncio/unix_events.py
parent9b07681c09182d4b9d23cd52566a4992b8afecbb (diff)
downloadcpython-git-fb2c3465f09e1f720cdae7eca87d62125a327fd9.tar.gz
asyncio: __del__() keep reference to warnings.warn (GH-11491)
* asyncio: __del__() keep reference to warnings.warn The __del__() methods of asyncio classes now keep a strong reference to the warnings.warn() to be able to display the ResourceWarning warning in more cases. Ensure that the function remains available if instances are destroyed late during Python shutdown (while module symbols are cleared). * Rename warn parameter to _warn "_warn" name is a hint that it's not the regular warnings.warn() function.
Diffstat (limited to 'Lib/asyncio/unix_events.py')
-rw-r--r--Lib/asyncio/unix_events.py10
1 files changed, 4 insertions, 6 deletions
diff --git a/Lib/asyncio/unix_events.py b/Lib/asyncio/unix_events.py
index 1a62db4f59..73d4bda7c2 100644
--- a/Lib/asyncio/unix_events.py
+++ b/Lib/asyncio/unix_events.py
@@ -511,10 +511,9 @@ class _UnixReadPipeTransport(transports.ReadTransport):
if not self._closing:
self._close(None)
- def __del__(self):
+ def __del__(self, _warn=warnings.warn):
if self._pipe is not None:
- warnings.warn(f"unclosed transport {self!r}", ResourceWarning,
- source=self)
+ _warn(f"unclosed transport {self!r}", ResourceWarning, source=self)
self._pipe.close()
def _fatal_error(self, exc, message='Fatal error on pipe transport'):
@@ -707,10 +706,9 @@ class _UnixWritePipeTransport(transports._FlowControlMixin,
# write_eof is all what we needed to close the write pipe
self.write_eof()
- def __del__(self):
+ def __del__(self, _warn=warnings.warn):
if self._pipe is not None:
- warnings.warn(f"unclosed transport {self!r}", ResourceWarning,
- source=self)
+ _warn(f"unclosed transport {self!r}", ResourceWarning, source=self)
self._pipe.close()
def abort(self):