This is here in tulip: https://code.google.com/p/tulip/source/detail?r=75c276d5d29ce1b9cb3a197120c2ddbb50c188e1
Victor, you should really use this as upstream repository, otherwise it will be really hard to get all related changes back. On Tuesday, December 31, 2013 7:07:26 PM UTC+1, Guido van Rossum wrote: > > On the last issue, we also changed this in the selectors module, IIRC post > 3.4 beta 1. > > On Tuesday, December 31, 2013, Ben Darnell wrote: > >> I just tried running the Tornado test suite with this backported package >> and it mostly works. There are two issues: >> >> * Tornado uses hasattr(ssl, 'SSLContext') to determine whether or not it >> can use the APIs introduced in Python 3.2; the incomplete version of >> SSLContext patched in by this package confuses it. I had to replace the >> hasattr calls with explicit sys.version_info checks. >> >> * One corner case is handled differently than in other implementations >> (TestIOStreamSSL.test_inline_read_error). I haven't traced it all the way >> through (this test is deliberately doing weird things to deterministically >> trigger an error at a particular spot). The failure may be kqueue-specific >> (it has to do with the fact that if you close an fd without the event >> loop's knowledge with os.close(fd), subsequently unregistering that fd will >> fail). >> >> -Ben >> >> >> On Fri, Dec 20, 2013 at 3:58 AM, Victor Stinner <[email protected] >> > wrote: >> >>> 2013/12/19 Marc Schlaich <[email protected]>: >>> > - selectors module would be better in the package (as it is in tulip: >>> > https://code.google.com/p/tulip/source/browse/#hg%2Fasyncio) >>> >>> I discussed with the author of the selector module, Charles-François >>> Natali, to ask him if he would like to maintain a backport on PyPI. >>> He's not interested. I can maintain the backport, but we agreed that >>> using selectors alone is not really interesting. The selectors is >>> useful when used with asyncio. >>> >>> > - patching the exceptions via builtins does not work on OSX, that's the >>> > reason for various errors in test_events, e.g.: >>> > >>> > kev_list = self._kqueue.control(None, max_ev, timeout) >>> > >>> > OSError: [Errno 4] Interrupted system call >>> >>> I only tried tulip_py2 on Linux. You may retry with this commit: >>> >>> changeset: 77:383ef5a06958 >>> tag: tip >>> user: Victor Stinner <[email protected]> >>> date: Fri Dec 20 09:37:37 2013 +0100 >>> files: selectors.py >>> description: >>> Fix kqueue selector: use wrap_error() to catch InterruptedError >>> >>> > - test_subprocess_close_client_stream hangs forever. Any idea? >>> >>> No idea. You may try to setup the logging module to get more information: >>> >>> import logging; logging.basicConfig() >>> >>> > The rest of test_events is fine after replacing InterruptedError with >>> OSError. >>> >>> Right now, I prefer to limit differences with Tulip and so I used an >>> hack in asyncio.backport to get InterruptedError. If the failures are >>> not related to kqueue, is there other places where wrap_error() is >>> missing? >>> >>> Later, I may drop these hacks and catch OSError and check the errno >>> attribute instead. >>> >>> Victor >>> >> >> > > -- > --Guido van Rossum (on iPad) >
