Metastatic.Supplemental.Python.Asyncio
(Metastatic v0.10.4)
View Source
Supplemental module for Python's asyncio library.
Transforms async/await constructs into asyncio API calls. This supplemental handles:
:async_await- async/await patterns → asyncio.run():async_context- async context managers → async with:gather- parallel execution → asyncio.gather()
Examples
# Transform async function call
iex> ast = {:async_operation, :async_await,
...> {:function_call, "fetch_data", [
...> {:literal, :string, "https://api.example.com"}
...> ]}}
iex> {:ok, result} = Metastatic.Supplemental.Python.Asyncio.transform(ast, :python, %{})
iex> match?({:function_call, "asyncio.run", _}, result)
true
# Transform gather for parallel execution
iex> ast = {:async_operation, :gather, [
...> {:function_call, "fetch_user", [{:literal, :integer, 1}]},
...> {:function_call, "fetch_posts", [{:literal, :integer, 1}]}
...> ]}
iex> {:ok, result} = Metastatic.Supplemental.Python.Asyncio.transform(ast, :python, %{})
iex> match?({:function_call, "asyncio.gather", _}, result)
true