Skip to content

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 26 Jun 22:54
· 80 commits to master since this release

Highlights

Unified sync/async Tool execution — all tools now work transparently with both run() and arun(), regardless of whether the underlying function is sync or async.

Changed

  • Unified Tool callable layer with _FunctionToolWrapper: all Tool.callable values are now BaseToolWrapper subclasses, providing uniform call_sync()/call_async() interfaces regardless of tool origin (native function, MCP, OpenAPI, LangChain).
  • Tool.run() / Tool.arun() are now the primary API: exceptions propagate directly instead of being swallowed and returned as error strings.
  • Tool.run_raw() / Tool.arun_raw() are now deprecated aliases for run() / arun(). They emit DeprecationWarning and will be removed in a future version.

Added

  • Tool.fn property: access the underlying unwrapped function.
  • Sync/async transparency: sync tools can be called via arun() (asyncio.to_thread), async tools via run() (asyncio.run).
  • Parallel execution: mixed sync/async tools work with asyncio.gather().

Fixed

  • arun()/arun_raw() crashing on sync callables ("object can't be used in 'await' expression").
  • run()/run_raw() returning bare coroutine objects for async callables.
  • Executor context injection (_ctx) not detecting parameters through tool wrappers.

Removed

  • make_sync_wrapper() from executor helpers (dead code after wrapper unification).

Install

pip install toolregistry==0.12.0

Full Changelog: v0.11.2...v0.12.0