Skip to content
View as Markdown

APIFuture

Generated from tinker 0.39.0 at commit 4801e02. Source links point at that snapshot.

class tinker.APIFuture(...)

Abstract base class for futures that can be awaited or accessed synchronously.

APIFuture provides a unified interface for handling async operations that can be accessed both synchronously (via result()) and asynchronously (via await or result_async()). This allows for flexible usage patterns in both sync and async contexts.

The future can be awaited directly in async contexts:

result = await api_future  # Equivalent to await api_future.result_async()

Or accessed synchronously:

result = api_future.result()  # Blocks until complete

Parameters:

  • T – The type of the result value

Example:

# In async context
future = training_client.forward_backward(data, "cross_entropy")
result = await future  # Or await future.result_async()

# In sync context
future = training_client.forward_backward(data, "cross_entropy")
result = future.result()

result(timeout=None)

Get the result synchronously with optional timeout.

Parameters:

  • timeout (float | None, default: None) – Maximum time to wait in seconds. None means wait indefinitely.

Returns:

  • The result value of type T

Raises:

TimeoutError: If timeout is exceeded

Async variant: result_async()

future()

The concurrent.futures.Future for this operation.

For blocking code that works with standard futures: concurrent.futures.wait, as_completed, add_done_callback, or a library that takes a Future. Cancelling it cancels the operation. In async code, await this future instead.

Returns:

  • A concurrent.futures.Future that completes with this future's result

coroutine()

This future as a coroutine, for APIs that take a coroutine rather than an awaitable, such as asyncio.create_task. Awaiting the coroutine awaits the future.

Example:

task = asyncio.create_task(sampling_client.sample(prompt, 1, params).coroutine())

Returns: T

Referenced by