This file maps every public py:* and erlang.* API shown in the
README and docs/*.md to at least one *_SUITE.erl test that
exercises it. Update this table whenever a documented API is added,
renamed, or removed.
| API | Documented in | Test suite | Test case |
|---|---|---|---|
py:call/3 |
README, getting-started.md, pools.md | py_SUITE |
test_call_math, test_call_json |
py:call/4 |
README, pools.md | py_SUITE |
test_call_kwargs |
py:call/5 |
pools.md | py_pool_SUITE |
router-bound call tests |
py:cast/3 |
README, threading.md | py_SUITE |
test_cast |
py:cast/4 |
README | py_SUITE |
test_cast_kwargs |
py:cast/5 |
(internal Ctx variant) | py_SUITE (indirect) |
covered via test_cast |
py:eval/1 |
README, getting-started.md | py_SUITE |
test_eval |
py:eval/2 |
README, getting-started.md | py_SUITE |
test_eval, test_eval_complex_locals |
py:eval/3 |
README | py_SUITE |
test_timeout |
py:exec/1 |
README, getting-started.md | py_SUITE |
test_exec |
py:exec/2 |
scalability.md (with Ctx) | py_context_SUITE |
exec tests |
py:spawn_call/3 |
README | py_SUITE |
test_spawn_call |
py:await/1, py:await/2 |
README | py_SUITE |
test_spawn_call |
py:async_call/3 |
README, asyncio.md, threading.md | py_SUITE |
test_asyncio_call |
py:async_await/1, py:async_await/2 |
README, asyncio.md | py_SUITE |
test_asyncio_call |
py:async_gather/1 |
README, asyncio.md | py_SUITE |
test_asyncio_gather |
py:async_gather/2 |
(timeout variant) | py_SUITE |
test_asyncio_gather_timeout |
py:parallel/1 |
README, scalability.md | py_SUITE |
test_parallel_execution |
py:subinterp_supported/0 |
scalability.md | py_SUITE |
test_subinterp_supported |
py:execution_mode/0 |
README, scalability.md | py_SUITE |
test_execution_mode |
py:context/0, py:context/1 |
README, process-bound-envs.md | py_context_SUITE |
context creation |
py:state_set, state_fetch, state_incr, state_decr, state_remove, state_keys, state_clear |
README, getting-started.md | py_SUITE |
test_shared_state |
py:register_function/2, register_function/3 |
README, threading.md | py_SUITE |
test_erlang_callback, test_erlang_callback_mfa |
py:unregister_function/1 |
README | py_SUITE |
test_erlang_callback |
py:stream/3, py:stream_eval/1 |
README, streaming.md | py_SUITE |
test_streaming, test_stream_function |
py:dup_fd/1 |
reactor.md | py_fd_ops_SUITE |
dup_fd_test |
py:configure_logging/0,1 |
README, logging.md | py_logging_SUITE |
logging tests |
py:enable_tracing/0, disable_tracing/0, get_traces/0, clear_traces/0 |
README, logging.md | py_logging_SUITE |
tracing tests |
py:activate_venv/1, deactivate_venv/0, venv_info/0 |
README | py_SUITE |
test_venv |
py:memory_stats/0, py:gc/0 |
README | py_SUITE |
test_memory_stats, test_gc |
py:tracemalloc_start/0, tracemalloc_stop/0 |
README | py_SUITE |
indirect via memory tests |
py:version/0 |
(no doc) | not exercised | — |
| API | Documented in | Test suite |
|---|---|---|
erlang.call(name, *args) |
README, threading.md | py_SUITE (test_erlang_callback) |
erlang.async_call(name, *args) |
threading.md, asyncio.md | py_async_e2e_SUITE, py_thread_callback_SUITE |
erlang.send(pid, msg) |
README, threading.md | py_pid_send_SUITE |
erlang.atom(name) |
(Python-side wrapper) | py_owngil_features_SUITE, py_test_pid_send.py |
erlang.Pid |
type-conversion.md | py_pid_send_SUITE |
erlang.Span, erlang.trace() |
logging.md | py_logging_SUITE |
erlang.run(main), erlang.new_event_loop() |
asyncio.md | py_asyncio_compat_SUITE, py_event_loop_SUITE |
erlang.install() |
asyncio.md | py_asyncio_policy_SUITE |
erlang.spawn_task() |
asyncio.md | py_async_task_SUITE |
erlang.sleep() |
asyncio.md | py_erlang_sleep_SUITE |
erlang.SharedDict |
shared-dict.md | py_SUITE (test_shared_dict_*) |
erlang.Channel, erlang.ByteChannel |
channel.md, buffer.md | py_channel_SUITE, py_byte_channel_SUITE |
erlang.reactor.Protocol and friends |
reactor.md | py_reactor_SUITE |
erlang.state_set / state_get / state_delete / state_keys / state_incr / state_decr (registered callbacks) |
README, getting-started.md | py_SUITE (test_shared_state) |
-
The
py:cast/5(Ctx, Module, Func, Args, Kwargs) variant is not directly exercised. It is a one-line wrapper aroundpy_context:call/5and shares its kwargs marshaling withpy:call/5. If a future change diverges them, add a dedicated test. -
py:version/0is exported but not documented. Either document it or drop the export. -
from erlang import run_command(docs/migration.md:426) andfrom erlang import run_shell(docs/security.md:103) refer to user-side registrations, not built-ins. The surrounding prose makes the example pattern explicit; do not mistake these for documented APIs. -
priv/_erlang_impl/_ssl.pywas removed in this audit (no importer). Do not reintroduce unless an importer is wired up. -
priv/_erlang_impl/_subprocess.pyis intentionally a stub that raisesNotImplementedErrorfromcreate_subprocess_shellandcreate_subprocess_exec. It is lazy-imported bypriv/_erlang_impl/_loop.py:948,958when an asyncio caller invokesloop.subprocess_shell()/loop.subprocess_exec(), which are blocked becausefork()would corrupt the Erlang VM. Do not delete.