[Python-Dev] API design: where to add async variants of existing stdlib APIs?

Sven R. Kunze srkunze at mail.de
Tue Mar 7 14:25:42 EST 2017


On 07.03.2017 19:37, Jelle Zijlstra wrote:
>
>
> 2017-03-07 10:15 GMT-08:00 Ethan Furman <ethan at stoneleaf.us 
> <mailto:ethan at stoneleaf.us>>:
>
>     On 03/07/2017 09:41 AM, Brett Cannon wrote:
>
>         I don't think a common practice has bubbled up yet for when
>         there's both synchronous and asynchronous versions of an API
>         (closest I have seen is appending an "a" to the async version
>         but that just looks like a spelling mistake to me most of
>         the time). This is why the question of whether separate
>         modules are a better idea is coming up.
>
>
>     I'm undoubtedly going to show my ignorance with this question, but
>     is it feasible to have both sync and async support in the same object?
>
> It's possible, but it quickly gets awkward and will require a lot of 
> code duplication.

Correct me if I'm wrong, but we would get the code duplication anyway.

async intrinsically does the same thing (just a little bit different) as 
its sync counterpart. Otherwise, you wouldn't use it.

> For example, we could make @contextmanager work for async functions by 
> making the _GeneratorContextManager class implement both enter/exit 
> and aenter/aexit, but then you'd get an obscure error if you used with 
> on an async contextmanager or async with on a non-async contextmanager.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20170307/15d318f6/attachment.html>


More information about the Python-Dev mailing list