37 lines
1.0 KiB
Python
37 lines
1.0 KiB
Python
"""
|
|
Patches a safer version of resume_reading into the asyncio.unix_events._UnixReadPipeTransport class.
|
|
|
|
This prevents an error at the end of a subprocess execution:
|
|
|
|
File "/usr/lib/python3.x/asyncio/unix_events.py", line 364, in resume_reading
|
|
self._loop.add_reader(self._fileno, self._read_ready)
|
|
AttributeError: 'NoneType' object has no attribute 'add_reader'
|
|
|
|
"""
|
|
|
|
|
|
def patch_asyncio():
|
|
import logging
|
|
import sys
|
|
|
|
log = logging.getLogger(__name__)
|
|
if sys.platform == "win32":
|
|
log.debug(
|
|
"Patching ue._UnixReadPipeTransport.resume_reading not needed on Windows"
|
|
)
|
|
return
|
|
|
|
log.debug("Patching ue._UnixReadPipeTransport.resume_reading")
|
|
|
|
import asyncio.unix_events as ue
|
|
|
|
orig_resume_reading = ue._UnixReadPipeTransport.resume_reading
|
|
|
|
def resume_reading(self, *args, **kwargs):
|
|
if not self._loop:
|
|
return
|
|
|
|
return orig_resume_reading(self, *args, **kwargs)
|
|
|
|
ue._UnixReadPipeTransport.resume_reading = resume_reading
|