Home / Function/ test_mixed_sync_async_decorators_integration() — langchain Function Reference

test_mixed_sync_async_decorators_integration() — langchain Function Reference

Architecture documentation for the test_mixed_sync_async_decorators_integration() function in test_decorators.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  f73e9bad_5dbb_51de_f88c_1c30f2134538["test_mixed_sync_async_decorators_integration()"]
  85a104a3_11cf_6539_d0c0_ba69a17a41d4["test_decorators.py"]
  f73e9bad_5dbb_51de_f88c_1c30f2134538 -->|defined in| 85a104a3_11cf_6539_d0c0_ba69a17a41d4
  style f73e9bad_5dbb_51de_f88c_1c30f2134538 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_decorators.py lines 382–441

async def test_mixed_sync_async_decorators_integration() -> None:
    """Test mixed sync/async decorators working together in an agent."""
    call_order = []

    @before_model
    def track_sync_before(*_args: Any, **_kwargs: Any) -> None:
        call_order.append("sync_before")

    @before_model
    async def track_async_before(*_args: Any, **_kwargs: Any) -> None:
        call_order.append("async_before")

    @wrap_model_call
    async def track_async_on_call(
        request: ModelRequest,
        handler: Callable[[ModelRequest], Awaitable[ModelResponse]],
    ) -> ModelCallResult:
        call_order.append("async_on_call")
        return await handler(request)

    @wrap_tool_call
    async def track_sync_on_tool_call(
        request: ToolCallRequest,
        handler: Callable[[ToolCallRequest], Awaitable[ToolMessage | Command[Any]]],
    ) -> ToolMessage | Command[Any]:
        call_order.append("async_on_tool_call")
        return await handler(request)

    @after_model
    async def track_async_after(*_args: Any, **_kwargs: Any) -> None:
        call_order.append("async_after")

    @after_model
    def track_sync_after(*_args: Any, **_kwargs: Any) -> None:
        call_order.append("sync_after")

    agent = create_agent(
        model=FakeToolCallingModel(),
        middleware=[
            track_sync_before,
            track_async_before,
            track_async_on_call,
            track_sync_on_tool_call,
            track_async_after,
            track_sync_after,
        ],
    )
    # Agent is already compiled
    await agent.ainvoke({"messages": [HumanMessage("Hello")]})

    # In async mode, we can automatically delegate to sync middleware for nodes
    # (although we cannot delegate to sync middleware for model call or tool call)

    assert call_order == [
        "sync_before",
        "async_before",
        "async_on_call",
        "sync_after",
        "async_after",
    ]

Domain

Subdomains

Frequently Asked Questions

What does test_mixed_sync_async_decorators_integration() do?
test_mixed_sync_async_decorators_integration() is a function in the langchain codebase, defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_decorators.py.
Where is test_mixed_sync_async_decorators_integration() defined?
test_mixed_sync_async_decorators_integration() is defined in libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_decorators.py at line 382.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free