<div dir="ltr">Maybe the thing to fix then is the inspect module, not asyncio? Anyway, let is know via tickets.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Apr 18, 2015 at 12:29 PM, Stefan Behnel <span dir="ltr"><<a href="mailto:stefan_ml@behnel.de" target="_blank">stefan_ml@behnel.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Stefan Behnel schrieb am 18.04.2015 um 19:39:<br>
> Guido van Rossum schrieb am 18.04.2015 um 18:38:<br>
>> That's a good question. We *could* make it so that you can subclass<br>
>> Generator and instantiate the instances; or we could even make it do some<br>
>> structural type checking. (Please file a pull request or issue for this at<br>
>> <a href="http://github.com/ambv/typehinting" target="_blank">github.com/ambv/typehinting</a> .)<br>
>><br>
</span><span class="">>> But perhaps we should also change asyncio?<br>
>> What check are you talking about?<br>
><br>
> <a href="https://hg.python.org/cpython/file/439517000aa2/Lib/asyncio/coroutines.py#l169" target="_blank">https://hg.python.org/cpython/file/439517000aa2/Lib/asyncio/coroutines.py#l169</a><br>
><br>
> The current (3.5alpha) check in iscoroutine() is an instance check against<br>
> _COROUTINE_TYPES, which contains types.GeneratorType and another wrapper<br>
> type. It excludes objects that implement the coroutine protocol without<br>
> being Python generators, e.g. Cython compiled generators, which mimic the<br>
> Python generator interface without having byte code in them (meaning, they<br>
> are not C-level compatible with Python generators). I'm sure the same<br>
> applies to other compilers like Numba or Nuitka. Supporting asyncio in<br>
> recent Python releases thus means monkey patching _COROUTINE_TYPES and<br>
> adding another type to it. Given that it's not a public interface, this<br>
> seems a bit fragile.<br>
><br>
> It also seems that this code only appeared somewhere in the 3.4.x release<br>
> series. Older versions were even worse and did a straight call to<br>
> inspect.isgenerator() in their iscoroutine() function, which means that the<br>
> whole function needed to be replaced and wrapped (and even that didn't fix<br>
> all places where inspect was used).<br>
<br>
</span>Hmm, looks like I remembered it incorrectly. Monkey patching the inspect<br>
module is required in both versions as it's being used in more places,<br>
especially the coroutine wrappers. I'll see how I can get it working with<br>
Cython and then open tickets for it.<br>
<div class="HOEnZb"><div class="h5"><br>
Stefan<br>
<br>
<br>
_______________________________________________<br>
Python-Dev mailing list<br>
<a href="mailto:Python-Dev@python.org">Python-Dev@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-dev" target="_blank">https://mail.python.org/mailman/listinfo/python-dev</a><br>
Unsubscribe: <a href="https://mail.python.org/mailman/options/python-dev/guido%40python.org" target="_blank">https://mail.python.org/mailman/options/python-dev/guido%40python.org</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature">--Guido van Rossum (<a href="http://python.org/~guido" target="_blank">python.org/~guido</a>)</div>
</div>