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

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