Hi all,
Sorry to wake up this old thread, but I'm used to autodoc. Does anyone
know if I there is an py:autocoroutine:: directive or something similar to
py:coroutinefunction::?
Thanks!
André
On Thursday, February 12, 2015 at 6:51:15 AM UTC-5, Luciano Ramalho wrote:
>
> ABSTRACT
>
> I propose that every asyncio function that is a coroutine gets a
> highly visible marker at the top of its entry in the documentation.
> For example the entry for StreamWriter.drain() [1] should read:
>
> drain() -> {{coroutine}}
> Let the write buffer of the underlying transport ...
>
> This is more visible than a sentence like "This method is a
> coroutine." buried somewhere in its description.
>
> The notation "-> {{coroutine}}" is just a stand-in for now. The main
> point is having some visible indicator that can be found without
> scanning the entire entry. The notation should be used in addition to
> the mention "This method is a coroutine." in the body of the function
> documentation.
>
> [1]
> https://docs.python.org/3/library/asyncio-stream.html#asyncio.StreamWriter.drain
>
>
>
> PROPOSAL RATIONALE
>
> A big gotcha for users of asyncio is knowing which API functions are
> coroutines and which aren't. For example, StreamWriter.write isn't,
> but StreamWriter.drain is.
>
> If you are one of the designers or implementers of asyncio this may be
> obvious, but for the rest of us it's not.
>
> Apparently David Beazley got bitten by this. Take a look at slide 102
> titled "Be on the lookout!" in his tutorial "Generators, the Final
> Frontier" presented at PyCon 2014 [2]
>
> [2] http://www.dabeaz.com/finalgenerator/FinalGenerator.pdf
>
> The asyncio docs provide this information, usually with the phrase
> "This method is a coroutine." near the end of the description of the
> function. Other phrases are used, and they don't appear always at the
> end of the entry. But they never appear right at the beginning.
>
> When the description is long, that's easy to look over. See
> BaseEventLoop.create_connection [3]. BaseEventLoop.create_server [4].
>
> [3]
> https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.create_connection
>
>
> [4]
> https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.BaseEventLoop.create_server
>
>
> It would be very helpful to asyncio users if the crucial distinction
> between coroutines and regular functions was made right at the start
> of each entry in the API docs.
>
>
> PROPOSAL IMPLEMENTATION
>
> The easiest thing to do right away would be to add a formula like
> {{coroutine}} as the first word in the first paragraph of the
> description for each function. The actual formula must be decided. The
> sentence "This method is a coroutine." could be used for this. The
> main point is to make it the first thing in the description of the
> method.
>
> Ideally the notation should not be embedded in the text, but appear
> besides the function name, for example:
>
> drain() -> {{coroutine}}
> Let the write buffer of the underlying transport ...
>
> If some abbreviated notation like {{coroutine}} is adopted, the phrase
> "This method is a coroutine." should be kept in the description for
> clarity.
>
> What do you think? I am willing to file a bug and provide a patch if
> you think this is worthwhile.
>
> Best,
>
> Luciano
>
>
> --
> Luciano Ramalho
> Twitter: @ramalhoorg
>
> Professor em: http://python.pro.br
> Twitter: @pythonprobr
>