Runner

Three orthogonal helpers for organising large action lists. They all expect the same action-list shape used by execute_action and strip runner-specific metadata (id, depends_on, tags) before invoking the underlying AT_ function.

Parallel runner

from je_api_testka.runner import run_actions_parallel

actions = [["AT_test_api_method_requests", {"http_method": "get",
                                             "test_url": f"https://x.invalid/{i}"}]
           for i in range(20)]
results = run_actions_parallel(actions, max_workers=8)

Tag filtering

Each action can carry a tags list inside its kwargs dict. filter_actions_by_tag keeps only those whose tags intersect the requested set.

from je_api_testka.runner import filter_actions_by_tag

smoke_only = filter_actions_by_tag(actions, {"smoke"})
smoke_plus_untagged = filter_actions_by_tag(actions, {"smoke"}, include_untagged=True)

Dependency-aware ordering

order_actions performs a topological sort using id and depends_on keys; cycles raise an exception.

from je_api_testka.runner import order_actions

ordered = order_actions([
    ["AT_login",  {"id": "login"}],
    ["AT_query",  {"id": "query", "depends_on": ["login"]}],
])