Home / Function/ test_tool_args_schema_none_default() — langchain Function Reference

test_tool_args_schema_none_default() — langchain Function Reference

Architecture documentation for the test_tool_args_schema_none_default() function in test_tools.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  72eed6d8_5fce_4220_9c84_e66aca632e90["test_tool_args_schema_none_default()"]
  8e7836ae_e72c_f670_72a5_4ca6d46e3555["test_tools.py"]
  72eed6d8_5fce_4220_9c84_e66aca632e90 -->|defined in| 8e7836ae_e72c_f670_72a5_4ca6d46e3555
  style 72eed6d8_5fce_4220_9c84_e66aca632e90 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/core/tests/unit_tests/test_tools.py lines 3570–3605

def test_tool_args_schema_none_default() -> None:
    """Test that explicit `None` defaults are handled correctly.

    When a field has `Field(default=None)`, that `None` value should be passed
    to the tool function, not omitted from the arguments.
    """

    class FilterArgs(BaseModel):
        """Schema for filter tool arguments."""

        query: str = Field(..., description="The search query")
        category: str | None = Field(default=None, description="Optional category")
        tag: str | None = Field(default=None, description="Optional tag filter")

    @tool("filter_search", args_schema=FilterArgs)
    def filter_tool(query: str, category: str | None, tag: str | None) -> str:
        """Search with optional filters.

        Args:
            query: The search query.
            category: Optional category filter.
            tag: Optional tag filter.
        """
        return f"query={query}, category={category}, tag={tag}"

    # Invoke with only required argument - None defaults should be applied
    result = filter_tool.invoke({"query": "test"})
    assert result == "query=test, category=None, tag=None"

    # Invoke with one optional provided
    result = filter_tool.invoke({"query": "test", "category": "books"})
    assert result == "query=test, category=books, tag=None"

    # Invoke with all arguments
    result = filter_tool.invoke({"query": "test", "category": "books", "tag": "new"})
    assert result == "query=test, category=books, tag=new"

Domain

Subdomains

Frequently Asked Questions

What does test_tool_args_schema_none_default() do?
test_tool_args_schema_none_default() is a function in the langchain codebase, defined in libs/core/tests/unit_tests/test_tools.py.
Where is test_tool_args_schema_none_default() defined?
test_tool_args_schema_none_default() is defined in libs/core/tests/unit_tests/test_tools.py at line 3570.

Analyze Your Own Codebase

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

Try Supermodel Free